I wanted to talk a little bit about the namespace changes in the Feb CTP of WCP (Indigo). With the new namespaces we feel that all classes are now present where its supposed to be (although we are open to suggestions if you feel some classes are misplaced). Previously all classes were under System.ServiceModel (close to 200). Also, from the feedback we found that System.ServiceModel.Design namespace really didn’t fit in the programming model. So now System.ServiceModel namespace contains classes that will be used by users coding WCF services/proxies. We have created System.ServiceModel.Dispatcher and System.ServiceModel.Description which now holds classes related to runtime inspection, extension and description. The breaking change document summarizes the namespace changes just right.
Note: You will find that some properties used by standard bindings are not in System.Servicemodel namespace and thats a known issue. We have already fixed it but unfortunately it didnt make it to the Feb CTP.
- System.ServiceModel.Design has been removed
- Added System.ServiceModel.Dispatcher namespace.
o This will contain classes that are related to runtime and runtime extensibility interfaces
o This also contains the filtering classes
- Added System.ServiceModel.Description namespace
o This will now contain classes that describe services.
o This will contain all the Behavior, Description and Metadata classes.
- System.ServiceModel namespace
o This will contain classes dealing with ServiceHost, ChannelBase, ChannelFactory (Basic programming from user point of view)
o All standard bindings and properties exposed by standard bindings that will be used 90% of the time by the users have been left in this namespace.
- System.ServiceModel.Channels namespace now has most of the classes removed from Design namespace
o Going forward this will contain all the non standard binding classes. Standard binding classes should go to System.ServiceModel
o It will also contain all the Channel, Message related classes and converter classes
So here is how we envision users using the namespaces.
o I want to write Services (include System.ServiceModel)
o I want to configure Services imperatively (include System.ServiceModel.Description)
o I want to add a little extension (include System.ServiceModel.Dispatcher)
o I want to add a new aspect to the channel layer (include System.ServiceModel.Channels)