Merge WCF Data and RIA Services and Web API
I went to a user group event where I learned that WCF Data Services and WCF RIA Services are similar but overlap. Originally, I thought WCF Data Services was going to utilize EF and together servce as the Data Access Layer. I thought RIA Services was going to serve as the Business Tier that would sit on top of the WCF Data Services. Then I thought we would simply bind MVC, Silverlight controls to RIA Services.
It seems such a shame that RIA Services is made for Silverlight and that it takes a lot of work to work with MVC, ASP.Net, Win Forms, WPF, Metro, jQuery, etc. It's also a shame that RIA Services doesn't sit on top of WCF Data Services. Web API should also be able to sit on top of WCF Data Services. Why aren't these technologys hot swapable and utilizing each other and all reinventing the wheel? Isn't that the whole point of having multiple tiers of abstraction? Can you guys all get together and coordinate to build an enterprise family of .Net WCF Data Tier, Business Logic Tier that will all work together? They should serve as a quick way to get a system running and allow people to add their own POCs, DAL, etc.
Each of the technologies have significant advanages. But when you choose one of the technologies, it seems you have to do significant coding to make up for the short fall. And it's painful because you know that the code you are writing is an availble feature if you had used the other technology.
This is how I thought the technologies would sit on top of each other.
Database->WCF Data Services->WCF RIA Services->MVC/Silverlight/WPF/Metro.
The other issue I have is that if the Schema changes, you have to regenerate the Proxy. I wish there was a better way to keep everything in sync in automatically while in RAD phase, then when you are sure the schema design is stable, you set a configuration flag and lock down the Prox so it isn't always automatically regenerated.
You might also want to be able to keep the existing behavior so peoples apps don't break. Or you can make a clean cut and do a new version. Or make some sort of standard interfaces or odata thing so each tool, component, can talk to each other quickly, easily, scalable, high performant, etc.
And don't forget to be able to swap into or from Azure as well.
Another tool that should work with these technologies is Light Switch. All the tools should be able to swap in and out seemlessly. We could use Light Switch as the RAD tool, then discover that we need to modify or integrate with other systems and thus expand and/or swap out the tiers as needed. I'd even want to swap out the presentation tiers, such as ASP.Net to MVC or Silverlight to MVC, or Lightswtich to MVC, WPF or Metro, HTML5...
Every once in a while I get some idea I want to implement, but it takes so long to figure out the .Net framework tool that I've forgotten what my idea was. We need to be able to whip this stuff our with minimum effort.