views:

54

answers:

3

All,

I have a very general question regarding a future project. I need to build a piece of engine software that accepts a big variety of inputs (as simple as plain numbers and as complex as multiple arrays of different data). This software will process the input and provide a calculated output. The preference is to make it quite generic that this "service" can be called from different applications to perform these calculations. The calculations are expensive so ideally this should run on a server. The Framework of choice is .NET. Can someone give me some ideas of what is the best technology / architecture to use for this ?

Thanks, MK

+5  A: 

WCF (Windows Communication Foundation)

Mitch Wheat
+1, that's right.
Darin Dimitrov
A: 

Obviously you'll use either "classic" web services (.asmx files) or WCF web services, if you really want to understand which is better for you, you can just look for comparisons between them, SO can provide you with many of those. You will also communicate with the client either by XML or JSON (again look for SO debates). I had to make a similar choice recently and went for "classic" web services because it's much simpler and I didn't have enough time for WCF course, and JSON because it's information representation is generally shorter. But that depends on what kind of information you're transfering.
Goodluck.

Oren A
A: 

WCF is the no-brainer choice here. It isn't that hard to learn, and it gives you a variety of connection and serialization options that asmx webservices don't. All these options can be driven from an XML configuration file, which makes changes really easy to implement.

Your biggest problem though is not deciding which messaging technology to use, it is deciding how to architect something so generic, as this is not something that webservices are naturally going to handle easily as contracts and serialization rules have to be adhered to.

If you are just going to send a dirty big object to the server and let the server determine what it is dealing with then you can use binary serialization, or even use your own custom serializer - you can do that with WCF.

slugster