I am currently looking for a good framework to integrate multiple systems with different communication methods like
in a .NET application. For Java there seem to be a lot of options available, but I could not find anything similar for the .NET platform.
They are lightweight frameworks – Spring Integration builds on top of Spring portfolio and extends the familiar programming model for the Integration domain and is easy to pick up, Apache camel provides a good Java based DSL and integrates well with Spring Core, with a fairly gentle learning curve.
It provides an extension of the Spring programming model to support the well-known Enterprise Integration Patterns while building on the Spring Framework's existing support for enterprise integration. Essentially Spring Integration and Apache Camel enable applications to integrate with other systems.
Basically Spring is a framework for dependency-injection which is a pattern that allows to build very decoupled systems. I'll try to explain you the simplest I can (this isn't a short answer). For example, suppose you need to list the users of the system and thus declare an interface called UserLister:
As the other two, it offers a XML DSL: Readability is better than Spring Integration and almost identical to Mule. Besides, a very good (but commercial) visual designer called Fuse IDE is available by FuseSource – generating XML DSL code. Nevertheless, it is a lot of XML, no matter if you use a visual designer or just your xml editor.
The Workflow Foundations are more suitable for... well.. work flows representing the business logic. You seem to be more interested in integrating existing services. In that case I would focus more on the Windows Communication Foundation. Which were introduced together with the (original) Workflow Foundation. So WCF is part of .NET Versions 3 and above. WCF will support Webservices, Message Queueing and FTP out of the box. For email you will probably need some kind of custom channel. However, it's highly likely that someone else has already written one for you.
According to Microsoft:
"Windows Communication Foundation (WCF) is a framework for building service-oriented applications. Using WCF, you can send data as asynchronous messages from one service endpoint to another. A service endpoint can be part of a continuously available service hosted by IIS, or it can be a service hosted in an application. An endpoint can be a client of a service that requests data from a service endpoint. The messages can be as simple as a single character or word sent as XML, or as complex as a stream of binary data."
This page on MSDN contains resources to help developers get up to speed on developing with Windows Communication Foundation (WCF). Keep in mind, all of this concerns only the communications layer. You'll have to write glue-code yourself.
If you really want a more "framworky" solution, I'd agree with Tommy Grovnes. 'Service Bus' is the buzzword to search for. In fact Stackoverflow already provides many insights on what services busses are good for, what implementations exist, experiences with them and so on. Especially this question on .NET service busses looks like a promissing start.
Cheers
dave
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With