Welcome to WCF RIA Services Beta!


Today at PDC09, Scott Guthrie Announced the beta of WCF RIA Services.  As you may know RIA Services is a set of end-to-end experiences that makes it as easy to build Silverlight based n-tier applications as it is to build traditional 2 tier apps.   I am very excited about this release as it represents a lot of great feedback we have heard from many of you. 


A few goodies in this release based on your feedback



  • You told us you wanted to get up and running with the UI quicker, so we enabled the “DataSources” window that allows you to drag and drop “tables” exposed by your Domain Service onto the form and get meaningful UI to start with.   No more guessing about the Xaml syntax for databinding, or incantation for layout, etc.

image



  • You told us error handling was not intuitive\consistent with the rest of the framework, so we we simplified error handing both on the server and client.  This will help errors get noticed quicker at development time so they don’t sneak into production

  • You told us you wanted Inheritance support from the Data Model to just flow through the Domain Service to the client, so we gave it to you, works exactly as you’d expect.

  • You told us you didn’t always want to expose DAL types to the client, but rather a custom “presentation model” where you can customize the shape of the entities, so we gave it to you.. and in a complete way where we handle all  the update and error cases.

  • You told us you wanted the fastest possible communication channel between the client and the server, so we gave an optimized binary channel by default! 

  • You told us it was a pain to install so we integrated the RIA Services installer into the Silverlight 4 installer making it very easy to get started.   We also created a “server only” installer to use on your production boxes.   

  • You told us real world data models use a lot of Compositional hierarchy (Order->OrderDetails) so we have improved the handling of this scenario by making it more built in. 

  • You told us you wanted GAC *and* bin deployment.  So we gave it to you. By default RIA Services look for our server assemblies in the GAC as this is the most secure and efficient model, but just like ASP.NET MVC, you can simply select “copy local” in your VS project and those assemblies work fine bin deployed. 

  • You told us you really liked the easy on ramp with the Business Application Template, but that you wanted it to be more complete.  So we added globalization support, user state example, persisted sign in, etc. 

  • You told us you wanted to go live today (and many of you already have) so we are providing .NET Framework 3.5\Visual Studio 2008\Silverlight 3 based bits that are ready for you to go live on today!   We hope that this release will be a bridge to you that will make it easier for you to (eventually, when you are ready) move to our finally RTM bits which will be on .NET Framework 4, Visual Studio 2010 and Silverlight 4. 

  • You gave us a LOT of other feedback as well, some of which will come in V1, and some will have to wait until the next releases, but please keep it coming. 

WCF: What’s in a Name?


Many of you will notice the slight change in the branding around RIA Services.  RIA Services is now part of the WCF family (as is ADO.NET Data Services, which is now WCF Data Services).  This branding change is a direct result of some significant work we are releasing in this beta and it hopefully makes it very clear that we have one technology base for doing services on the .NET platform and that is WCF. 


Our driving principle with using WCF has been “All the power and none of the complexity”.  That is we wanted to enable all the power that WCF brings (for example, the binary end-point, data contract serialization, all the extensibility points, fully management support with the AppFabric we announced yesterday).  But none of the complexity.  Just look at the web.config file… there is no  tedious config to get right.. there is no fragile contract interface and implementation class to keep in sync, none of the deployment headache around configuration.  This is still the RIA Services model where you can expect a deep simplicity across development, deployment and maintenance.  We accomplish this by creating a custom service host at runtime based on how you define your DomainService.


I am also very excited to get OData support into RIA Services.  OData is the protocol from “Astoria” that is already widely used in products like Sharepoint and PowerPivot.  Look for more details on that in future. 


Check out Henrik Frystyk Nielsen’s talk Developing REST Applications with the .NET Framework which will cover how WCF Data Services and WCF RIA Services work together. 


Call to Action


1. Please install Visual Studio 2010 and Silverlight 4 (this includes RIA Services)


2. Build something cool and tell us about it!


3. Send in your feedback.. we want to hear what rocked, and what needs more polish


 


(2/15/10) Note: This does not work on VS2010 RC — Look for an update in the next month or so.


 

Comments (40)

  1. Kevin Daly says:

    I hope there’ll be an RTM version for 3.5 and Silverlight 3 for those who aren’t in a position to upgrade right away.

  2. BradA says:

    Kevin – You can go-live with 3.5 and SL3… we think of that as a nice bridge to VS2010.NET 4 and SL4 because we know you can’t move their right away on all your projects.  

    That said, it doesn’t look like we will have the cycles to drive the 3.5 and SL3 version all the way to RTM level of quality.  

  3. Datis says:

    Hello Brad,

    Is there any way of using the RIA Services capabilities over dynamic data sources?  This is the case when the application connects to a selectable data source at run time meaning that metadata information would be only available when the source has selected OR the some other cases where the metadata information would be transmitted at run time by a REST Service.

    Any comment or suggestion would be greatly appreciated!

    Thanks!

  4. Daniel says:

    Do you ship SL4 and RIA togther with VS Studio 2010? One ‘Problem’ is that we can’t use EF 4 with VS Studio 2008….

  5. Hi,

    I am wondering why I should go for this while the same can be achieved using webservices ?

    Please give some valid points for me to explain the advantages about this if I face customers .

    Thanks,

    Thani

  6. Hans says:

    Hi Brad,

    Will Silverlight ever get real serialization like full trust WPF apps has?

    We have a very strict domain model today which requires serialization to work with fields only and this has been impossible in both SL and medium trust WPF apps.

    We want to be able to use our domain model in both the Silverlight app and the WCF server side and we cannot resort to using attributes only like RIA services suggests as this would seriously compromise the domain model of our entire architecture.

    Thanks,

    Hans

  7. BradA says:

    Datis – Yes, the fully dynamic scenario is one we are going to continue to look at… there is a lot we can do end-to-end to support that.  

    I have seen one demo where the validation ruled are pulled out of the datamodel by a shared code custom validation rule.  that is starting to be pretty dynamic..

  8. BradA says:

    > Do you ship SL4 and RIA togther with VS Studio >2010? One ‘Problem’ is that we can’t use EF 4 with >VS Studio 2008….

    Daniel  – Yes, as you know RIA Services does not require EF, but you are right on 3.5 you have the option of using EF v1…  

  9. BradA says:

    >I am wondering why I should go for this while the >same can be achieved using webservices ?

    Thanigainathan,

    Yes, everything we are doing here can be done with a plain WCF service (after all it is simply built on top of WCF)… So the real benefits are in getting ride of the plumbing code between the client and the server.  think about how much plumbing code there is when doing something like paging, sorting and filtering.. how about building up a change set, and doing validation?  RIA Services saves you from all of that and let’s you focus on YOUR business problems with just YOUR code.  

  10. BradA says:

    > Will Silverlight ever get real serialization like full trust WPF apps has?

    Hans —  I don’t know what the plans are.. I will pass on your comments to the right folks.  

  11. Hans says:

    Just read SL4 will be able to run in full trust – doesn’t this mean that serialization via reflection actually should work by default?

  12. Niclas says:

    I totally agree with Hans, without full serialization we can’t work with DDD on both sides.

    Today with WPF and WCF we can transfer objects over the wire that supports encapsulation (private fields/setters). With the same assembly at both sides the framework makes all the magic to rebuild our object when it arrives with reflection so we still can have data encapsulated. And with our methods.

    I really want to see the same functionality in Silverlight cause as I can see it I can’t work the way I want and think is right.

  13. dps67 says:

    I too echo what Hans and Niclas have said about full serialization.   That is how I want to write my apps–I am not writing web services and don’t care about interoperability, I’m just writing a multi-tiered application.   The beauty of silverlight is that I get .NET in the browser.  So I just want to share my business object assembiles on both sides and seamlessly pass them over the wire, honoring inheritance, encapsulation, etc.  I have struggled a little bit to try to figure out if I might somehow get this to work, but I would very grateful if you guys did it for me instead.  🙂

  14. Shane says:

    I could be wrong, but the link on this page says we are downloading v1.0.0.14 which is the beta, but when you install it it actually installs the Preview which is v1.0.0.11.  Am I crazy, or is something screwed up?

    http://www.microsoft.com/downloads/details.aspx?FamilyID=76bb3a07-3846-4564-b0c3-27972bcaabce&displaylang=en

  15. SL3 says:

    It’s disappointing that RIA Services won’t RTM with full Silverlight 3 compatibility. I understand that it can be used during beta with SL3 and that includes "go-live" capabilities.

    But it means that anyone looking at releasing a production app with RIA Services next year now has to make that app targets SL4 – which requires .NET 4 – which requires Studio 2010. That’s a lot of beta dependencies for production efforts to take on.

    I’ve no problem with taking on an RIA Services beta dependency with SL3/.NET 3.5 and trusting that RIA Services will "get there" early next year. But if I do that now, it means I have to plan for an SL4/.NET4/VS2010 conversion effort if I want the application to be on production bits when it releases. One beta variable in the mix I can live with… four of them? Not likely (RIAS, SL4, .NET4, VS2010).

    I appreciate the "cadence" of Silverlight releases and frequent improvements. But taking on multiple layers of dependencies like this works against being able to adopt those releases.

    So… you’re starting a LOB Silverlight app today that you want to deploy in production in a 4-5 month timeframe *and* you think is a candidate for RIA Services — what toolset do you use?

  16. SL3 says:

    It’s also worth noting (with the above concerns) that we’re hearing that RIA Servies won’t RTM for Silverlight 3 – despite SL3 likely being less than a year old when RIA Services does reach RTM.

    Not a great story for those of us who can’t constantly live in an environment of CTP/beta bits.

  17. Shane says:

    The download link works for me now.  After doing it about 10 times… weird.

  18. The real question here is hosting. Many of the larger environments simply refuse to host in Full Trust these days – or are moving away from it.

    That being the case, the failure of RIA till now to run in medium trust environments has been nearly fatal to it’s adoption. It is critical to enable medium trust deployments.

  19. If I understand this…

    Can I run Vs2008 + SL3 + RIA Beta right now, and bin deply the resulting server side? If so, what trust level does it need?

    In VS2010 – can I keep the SL3 + RIA Beta + .NET 3.5 story for now? Or do I need to go SL4?

    This is an important question – given how fast MS is moving but how slow vendors are lagging behind. Telerik doesnt support SL4 OR VS2010 in the near future and big hosts don’t support RIA do to the trust issue.

    Ken

  20. Dan says:

    When I install the Silverlight 4 tools for VS 2010, I got silverlight 4, but the RIA extensions for VS 2010 don’t seem to have installed.  I don’t have the RIA Business Template or the Domain Service items in the various new windows.  When I try to download just the RIA Services preview (riaservices.msi) and install that, it tells me that I already have a version installed.  Anyone else have this problem?  Any ideas?

  21. Sunit says:

    Do we need the hotfix  NDP20SP2-KB971030-x64.exe  for Vista SP2 when prior to loading the WCF-RIA services ?

  22. Dan says:

    I was able to resolve my issues with the RIA Services for VS 2010 by uninstalling them and then running the standalone riaservices.msi.  Perhaps there is just a problem with the Silverlight 4 bundle installer.

  23. bvoleti says:

    Adding to SL3’s comments:

    What would be hurdles in converting an SL3 app using RIA services (current go-live license) to an SL4 app using RIA services (next release) using .NET4?

    Let me also add one more aspect of moving from Linq2SQL to EF4 in the same application?

  24. Louis says:

    I am currently working with SL3 and RIA Services Preview for my project. Not having a release version of RIA Services for SL3 with VS 2008 is a serious problem for us. In a big corporation, deployment of new client  runtime and changes in dev environment (like requiring the VS2010 upgrade) can generate major issues even stop adoption of the technology. IMHO, not releasing a RTM version on SL3 is a big mistake.

  25. Jacky says:

    I completely agree with Louis, this approach is unacceptable. Microsoft, please, review your decision on not releasing an RTM version for SL3 as this will have huge impacts on currently being developed SL3 applications on the market.

  26. Peter Wone says:

    I’m looking forward to checking out the new support for compositional hierarchies, and I have two comments: (a) they aren’t necessarily hierarchies, they can be networks, and (b) I’ve put a lot of thought into how this ought to be handled for large and complex domains, and this is written up in detail at http://pdconsec.net/blogs/peterw/archive/2009/11/13/when-combo-box-is-not-enough.aspx

    I sincerely hope you can incorporate at least some the concepts I’ve outlined because this is a problem solved over and over.

  27. I have converted my .net Ria service app to the new WCF Ria. Things work great on my machine but when I upload to my ISP the WCF calls fail as I get a 404 on the following:

    http://www.sandkeysoftware.com/WizardRIA.web/ClientBin/WizardRIA-Web-GreenDomainService.svc/binary

    this is a trace entry  from WebDevHelper

    and I have a log facilty that show the exception on my RIA operation:

    Unhandled Error in Silverlight Application Load operation failed for query ‘GetSuppliers’. The remote server returned an error: NotFound.   at System.Windows.Ria.OperationBase.Complete(Exception error)

      at System.Windows.Ria.LoadOperation.Complete(Exception error)

      at System.Windows.Ria.DomainContext.CompleteLoad(IAsyncResult asyncResult)

      at System.Windows.Ria.DomainContext.<>c__DisplayClass17.<Load>b__13(Object )

    I talked to my ISP and they think they are mapping the SVC extension but am wondering what to ask them to look at next.

  28. Christian Scheuer says:

    I simply cannot get inheritance support to work! I’m using VS10 and have a simple EF model consisting of two classes: Contact (base) and Employee (derived).

    I have then added Query and CUD methods on a Domain Service for both Contact and Employee.

    But when doing anything with the derived class on the Client, I get a lot of exceptions.

    Take a look at the following code:

     var ctx = new MyFirstDomainContext();

     var emp = new Employee();

     emp.Salery = 100;

     emp.FirstName = "Andy"; //throws the exception: "Entity type ‘Employee’ does not contain a public property named ‘FirstName’." – which is true, this property belongs to the base class Contact. But it should still be possible to assign to the property?!

    Parameter name: propertyName

     emp.LastName = "Warhol";

     ctx.Contacts.Add(emp);

     ctx.SubmitChanges();

    The following code, not using the faulty props, however also throws an exception:

     var ctx = new MyFirstDomainContext();

     var emp = new Employee();

     emp.Salery = 100;

     ctx.Contacts.Add(emp); // throws Exception: System.InvalidCastException: Unable to cast object of type ‘System.Windows.Ria.EntitySet`1[…Contact]’ to type ‘System.Windows.Ria.EntitySet`1[…Employee]’

     ctx.SubmitChanges();

    But the following code, not instantiating an Employee object, works fine:

     var ctx = new MyFirstDomainContext();

     var contact = new Contact();

     contact.FirstName = "Andy"; //throws no exception

     contact.LastName = "Warhol";

     ctx.Contacts.Add(contact);

     ctx.SubmitChanges(); //all works fine

    What’s wrong? Is there no inheritance support after all?

  29. Patrick De Block says:

    Reaction to #John Mcfetridge. I have a similar problem. I get thesame error, but not at an ISP,but onan internal Win2k8 dev web server. It works locally on my Win7 IIS. Anyone a clue onhow to fix this?

    thx.

    Patrick

  30. Per says:

    Brad,

    It seems that the System.Web.DomainServices.WebControls assembly is removed from WCF RIA Beta for SL3… what does that mean to the SEO story and the possibility to use DomainDataSources from asp.net?

  31. Ken Blood says:

    You said above, "Please install Visual Studio 2010".  Every such recommendation should include a caveat about installing Win-7 with VS-2010 / Framework 4.0 already installed, thereby messing up VS-2008.  I just had to repave my development machine after missing the warning that was included somewhere (but perhaps not enough places).  Nothing I could do, short of repaving, would fix VS-2008 after Win-7 got installed.  

    So here is the warning again:  BE CAREFUL ABOUT VS-2010 / Framework 4.0.  DON’T INSTALL WIN-7 IF VS-2010 IS INSTALLED!  UNINSTALL VS-2010 and Framework 4.0 FIRST!  Then you can install Win-7.    

    Why the particular interaction between Win-7, VS-2010 and VS-2008 occurs is a question probably no one should want to know the answer to, but it does occur :-(!

  32. Ken Blood says:

    You said above, "Please install Visual Studio 2010".  Every such recommendation should include a caveat about installing Win-7 with VS-2010 / Framework 4.0 already installed, thereby messing up VS-2008.  I just had to repave my development machine after missing the warning that was included somewhere (but perhaps not enough places).  Nothing I could do, short of repaving, would fix VS-2008 after Win-7 got installed.  

    So here is the warning again:  BE CAREFUL ABOUT VS-2010 / Framework 4.0.  DON’T INSTALL WIN-7 IF VS-2010 IS INSTALLED!  UNINSTALL VS-2010 and Framework 4.0 FIRST!  Then you can install Win-7.    

    Why the particular interaction between Win-7, VS-2010 and VS-2008 occurs is a question probably no one should want to know the answer to, but it does occur :-(!

  33. littlesteps says:

    — #John Mcfetridge and Patrick De Block

    this new release of WCF RIA Services uses dynamic SCV files. The url "http://….myservice.SVC/binary" are generated at runtime.

    So You have to setup an httpModule in in your web server configuration.

    More info on Tim Heuer’s blog: http://timheuer.com/blog/archive/2009/12/10/tips-to-deploy-ria-services-troubleshoot.aspx

    Regards,

    Littlesteps

  34. Tolga says:

    Brad,  I upgraded my ria services to WCF RIA (November). I created new projects based on the new "Business Application" template and imported my files from the old, now "broken", project. Now I am finally ready to deploy to production and I get the all dreaded "Remote server not found message". Can you help please. I used Fiddler and so on..nothing.

    I am using Visual Studio 2008 SP1, Silverlight 3.

    Thanks

    –tolga

  35. BradA says:

    There are some deployment issues on .NET Framework 3.5..    

    Can you try using Fiddler, and trace the request that goes to the server? Silverlight unfortunately can’t report anything better than “Not found” due to underlying networking limitations, but the server is very likely returning a much more helpful error to the client. Using Fiddler you should be able to look at the real error.

    If simply running Fiddler doesn’t seem to track the requests of your application, and your application is hosted locally, try navigating to your application via http://ipv4.fiddler:<port>/[…], “re-“install the application and try issueing a request again.

  36. Ahmad says:

    Hello Brad

    You said that the Inheritance support is ready

    which one do you mean I’ve 1.0.10.14 And it doesn’t work any guidance?

    I’m data modling right now should I consider Inheritance using model first senario of the EF?

    thanx

  37. Jonathan says:

    "So the real benefits are in getting ride of the plumbing code between the client and the server.  think about how much plumbing code there is when doing something like paging, sorting and filtering.. how about building up a change set, and doing validation?"

    Well as for validation, my business objects are really complex and my validation rules are really complex.  I need more customization for my validation.  For instance, within the setter property which is a reference to another Entity, the code looks like "if ((previous != value)){…" where if the old value is the same as the new value, validation is completely ignored.  Perhaps my value was null before and I want to make sure that the Entity property has a value.  No way to do that.  At least with WCF Services, I can go with POCO and when adding my service reference I can tell it to use existing references.  This gives me control over exactly how I want to validate.

    Any ways to address these issues?

  38. Dennis says:

    Hi, im having the same problem as # Christian Scheuer, i cant use inheritance because of the same problemn, i thinks it has something with the validator. any help? thanks

  39. ekleeman says:

    The link to VS 2010 RC specifically states that Silverlight 4 cannot be used and that VS 2010 Beta2 is still the only option for Silverlight 4. You should correct that before lots of people waste hours of their time trying to install Silverlight4 with the RC of VS2010.

  40. BradA says:

    Thanks Ekleeman — I made a note to that effect.