Practical ASP.NET

Technology To Think About: .NET RIA Services on the Server

The ASP.NET-related portions of .NET RIA Services aren't ready for primetime yet, but now's a good time to start kicking the tires.

A few months ago, I wrote an article on Silverlight 3 for Visual Studio Magazine, the point of which was to show how new features in Silverlight 3 allowed developers to decorate their client-side objects with lots of new attributes that supported standard business-related activities (primarily databinding and data validation).

In a sidebar, the article mentioned that .NET RIA Services combines Silverlight and ASP.NET. And that's true. Sort of.

To fully take advantage of Silverlight's data support, you have to create Silverlight client-side objects -- which aren't the objects returned by any Web service. So when retrieving data in my sample application, I had to create and initialize a client-side object for each of the objects I retrieved from a Web service. Not only was that annoying, that code was virtually identical in every application. And I hate writing the same code over and over again.

I also had to create two applications: a set of server-side Web services (to provide server-side data access and updates) and the client-side Silverlight application (to call the Web services and interact with the user). I then had to wire them up. More boilerplate code.

Being a big fan of code generation, I was already considering how I could get Visual Studio to generate, at least, the code to wire up the Silverlight client and my Web services for me. But .NET RIA Services takes care of that.

Writing the Mechanical Code
The goal of .NET RIA Services is to support, simplify and extend the process of creating Silverlight applications that access server-side resources. .NET RIA Services is obviously still a work in progress (here's where, as of June 9, you can see the roadmap which has a release-to-Web date, or RTW, in the "first part of 2010"). You can, however, download a preview (notice: not even a CTP) here.

With .NET RIA Services installed, when you create a Silverlight Application project, you get the option to "Link to a ASP.NET Server Project." If you take the option, Visual Studio generates two projects: an ASP.NET Web Application Project (with the usual pages to host your Silverlight application and class file) and a Silverlight Application linked to the ASP.NET application. If you check the Properties window for the Silverlight project, you'll find that the Application tab has an "ASP.NET Server Project link" drop-down list that's set to the name of the Web project in the solution.

The nature of that link is what simplifies the process. As you add new methods to specific classes in your ASP.NET project, corresponding methods to call your Web services are generated and added to the Silverlight application. Rather than building two applications that you need to wire together, you write server-side methods and use them -- or versions of them -- from your client-side code.

Do be aware, though: There's a funny naming convention in place wherein if your Web service method name begins with "Get," the generated client-side method will begin with "Load" (i.e., GetCustomers on the server is called from LoadCustomers on the client).

The specific type of class that you need to add your methods to is called a Domain Service class. As part of adding a Domain Service Class to your project, you can tie it to an Entity Framework ObjectContext (or LINQ DataContext). This will cause the Domain Service to be created with some methods already defined for you based on the entities in your model. However, creating a Domain Service class from scratch isn't hard; it's just a Class file with the EnableClientAccess() added to the Class declaration .

It's the creation of the Domain Service class that leverages your ASP.NET skill -- along with whatever enhancements you want to make to the ASPX page hosting the Silverlight application. While it's true that these changes are made in an ASP.NET project, it's not really ASP.NET development. Most of your coding will, presumably, be business logic-related or will call out to server-side business objects. Some ASP.NET-specific knowledge will be useful in using server-side resources (e.g., caching and other state management tools.

The Silverlight side of the story is also interesting...but I'll look at that next week.

About the Author

Peter Vogel is a system architect and principal in PH&V Information Services. PH&V provides full-stack consulting from UX design through object modeling to database design. Peter tweets about his VSM columns with the hashtag #vogelarticles. His blog posts on user experience design can be found at http://blog.learningtree.com/tag/ui/.

comments powered by Disqus

Featured

  • Hands On: New VS Code Insiders Build Creates Web Page from Image in Seconds

    New Vision support with GitHub Copilot in the latest Visual Studio Code Insiders build takes a user-supplied mockup image and creates a web page from it in seconds, handling all the HTML and CSS.

  • Naive Bayes Regression Using C#

    Dr. James McCaffrey from Microsoft Research presents a complete end-to-end demonstration of the naive Bayes regression technique, where the goal is to predict a single numeric value. Compared to other machine learning regression techniques, naive Bayes regression is usually less accurate, but is simple, easy to implement and customize, works on both large and small datasets, is highly interpretable, and doesn't require tuning any hyperparameters.

  • VS Code Copilot Previews New GPT-4o AI Code Completion Model

    The 4o upgrade includes additional training on more than 275,000 high-quality public repositories in over 30 popular programming languages, said Microsoft-owned GitHub, which created the original "AI pair programmer" years ago.

  • Microsoft's Rust Embrace Continues with Azure SDK Beta

    "Rust's strong type system and ownership model help prevent common programming errors such as null pointer dereferencing and buffer overflows, leading to more secure and stable code."

  • Xcode IDE from Microsoft Archrival Apple Gets Copilot AI

    Just after expanding the reach of its Copilot AI coding assistant to the open-source Eclipse IDE, Microsoft showcased how it's going even further, providing details about a preview version for the Xcode IDE from archrival Apple.

Subscribe on YouTube

Upcoming Training Events