BizTalk Utilities CV ,   Jobs ,   Code library
Go to the front page to continue learning about XML or select below:


ReBlogger Contents

Previous posts in WSCF/WCF

Page 5196 of 21350

VS2008 and .NET 3.5 SP1 Enhancements for Service Developers

Blogger : Omri Gazitt
All posts : All posts by Omri Gazitt
Category : WSCF/WCF
Blogged date : 2008 May 12

Today we released the betas for VS2008 sp1 and .NET 3.5 sp1. Scott did a good job (as usual :-)) running through the top-level enhancements, so I won't parrot it all here.. but I'd like to go through the next level of detail on what new goodies we have for service developers.

The most interesting/exciting feature for service developers is what we call Data Services (previously known as "Astoria").  The best way to explain how Data Services fits into the overall "services platform" that .NET provides is through a picture:

As a service developer, .NET offers me a layered stack - if I want to write "to the metal", I can build a service on top of System.Net and HttpListener (which is a managed wrapper on top of HTTP.SYS - our kernel HTTP driver).  Not many people end up doing that, because there are lots of good pieces that we've already written for you..

WCF provides the next layer.  WCF gives you some modular pieces, such as channels (HTTP, TCP, MSMQ, etc); Serialization, which is a fancy word for pouring objects into a serialized formats such as XML, binary, JSON, and deserializing back into objects; and what we call "Syndication", which are some classes that support various data publishing microformats such as RSS and ATOM.  Finally, we have a layer called Service Model that ties all of this stuff together in a coherent, approachable programming model. 

WCF is a powerful but general framework, so the next layer up consists of particular scenarios that we wanted to significantly simplify. I think of two canonical scenarios for writing services: "resource-oriented" services, where you model your service as a bunch of resources and offer request/response, HTTP-based access to those resources; and "operation-oriented" services, where you want to create a new "operation" that wraps a more involved operation that often has to coordinate state changes across multiple resources.

Operation-oriented services become more attractive the more asynchrony you need in your service implementation.. the canonical example is "book a trip" which in turn composes other asynchronous services, such as "book the airfare", "book the hotel", etc.  We realized that most operation-oriented services are actually most easily modeled as workflows.. and that's why we invested heavily in .NET 3.5 in Workflow Services, which is a pretty deep integration between WCF and Workflow.

Resource-oriented services became easier to write in .NET 3.5 via our REST support that we added to WCF.  But we thought we could do even better for some canonical scenarios, such as when you have data in a database (or any LINQ data source) that you want to expose over REST/ATOM.  So the ADO.NET team built Data Services, which is layered on top of WCF's REST and ATOM capabilities and offers a really easy way of doing just that. 

Any layer of abstraction makes some choices, and some of those choices may not be exactly what you want.  The nice thing is that given the layering of Workflow Services and Data Services over WCF, if you don't like the choices we've made for you, you can always drop down to the layer below (WCF). 

As I type this, I realize that there's really one additional scenario that I didn't capture in the picture - which is "services that back a presentation layer".  ASP.NET AJAX is the obvious example of that today.. in .NET 3.5, we added support for being able to "back" an ASP.NET AJAX page with a "AJAX-Enabled WCF Service" (complete with a VS template).  So that's another example of a targetted scenario that's layered on top of WCF... (I'll have to fix my picture :-))

Besides Data Services, there are some additional cool new enhancements in WCF and WF that are worth mentioning:

  • We are enabling DataContract Serializer to serialize types without the need to annotate them with the [DataContract] attribute and its relatives.  We affectionately have taken to calling this feature POCO (plain old C# Objects), tipping our hat to POJO :-)
  • We’ve enabled interoperable object references in our serialization format.  This was done to support certain Entity Data Model (EDM) types but is generally useful in improving our interoperability with Java
  • We’ve made the WCF Test Client (the form that comes up when you hit "F5" on a service) into a stand-alone tool and added more features to increase the breadth of web services it can handle
  • The WCF Service template is now available in the Visual Web Developer Express SKU
  • We are delivering a hosting wizard for Visual Studio WCF Service projects that allows easy deployment of Web Services from VS into IIS
  • Event Logging is now enabled in Partial trust so that people who host their services in medium trust environments have more of the WCF "juice" :-)
  • We extended the syndication OM to support the ServiceDocument in AtomPub
  • We did some nice perf enhancements to the WF activities designer to make it much more snappy, even if you have a large number of activities

And of course, we fixed many of the most common bugs that you all have reported to us (thanks!)

All in all, a bunch of good value in a service pack release.. of course, this is a beta, so there are still some issues in the bits.  Please give them a test-drive and let us know what you think!


Read comments or post a reply to : VS2008 and .NET 3.5 SP1 Enhancements for Service Developers
Page 5196 of 21350

Newest posts

    Email TopXML