Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WCF / WCF Data Services / WCF RIA Services

Not to add another SO post regarding the different WCF stacks, but I want to make sure I'm heading in the right direction before I waste more development time...

My scenario - Our company has a number of web apps that all access the same series of databases. All the apps were basically developed independently, so there's a ton of business logic and data access repetition. On top of that, I have a (possibly unreasonable) goal of making this project client-independent - consolidate our current business logic and data access into an interface that can be accessed by a web app, Silverlight, a mobile app, etc.

Enter WCF - it strikes me as the perfect option to accomplish both. Unfortunately, after reading all the existing "guidance" that exists over the various WCF flavors, I keep coming back more confused than anything. Here are the conclusions I've come to so far - please feel free to correct me:

  • Straight WCF - most flexible and comprehensive option, but everything starts from scratch; would require significant time up front to configure and test; most technically mature option with hooks to accomplish most of the goals
  • WCF Data Services - Fastest way of getting a REST service online; excellent if the application just needs to expose data directly from the DB; If business logic is needed, it either must be written on the client side or by a second service that exposes the logic.
  • WCF RIA Services - Fastest way to configure a service that is ready to expose business logic; Possibly the most technically immature of the options (but with what looks like significant investment to bring it along); Soap, REST, and JSON endpoints would allow for most of the client independence;

So given my requirements above, I've come to the following conclusions - Data Services is probably a non-starter due to business logic requirements (and the idea of second WCF service consuming the Data Service strikes me as an extremely poor architectural choice); Speed matters, which would indicate that RIA Services might be the best place to start (call me lazy, but having a small team with a tight timeframe makes code generation valuable).

Is there a better way to handle the goals I described? Am I misunderstanding any/all of the WCF options? What other practical guidance can be offered about choosing which WCF approach (not just for me, but for anyone else trying to evaluate the technologies)?

like image 736
Steve Avatar asked Oct 07 '10 20:10

Steve


1 Answers

I would go with straight WCF.

This allows you to expose your services through various endpoints depending upon requirements:

  • SOAP for cross platform interopability
  • Binary NetTcp for internal clients requiring speed
  • JSON for lightweight access
like image 143
Shiraz Bhaiji Avatar answered Oct 01 '22 18:10

Shiraz Bhaiji