It has been more than six weeks since the last drop of the next generation service factory was released. Since this is way more than the usual two-week schedule, you may wonder what has been going on...well...a lot!
After going through the pain of migrating our existing models (the internal XML format has changed considerably), we (me and three other developers) have been using this build for the entire day. These are our first experiences:
- An installer that saves you from having to build everything yourself (although the source code is installed as a .msi file). However, you can't create your own installer yet, but P&P is working on that.
- Support for GAX 1.3 (although building your own version of the factory from the source code does require some manual changes).
- Primitive members of a Data Contract support a CollectionType property. Message Contract members will get similar support in the next drop.
- Primitive members of a Message Contract support an IsNullable property.
- Models open up much quickly than before.
- You can force generating code to a dedicated code folder of the implementation project (e.g. GeneratedCode)
- The Create Translator recipe from the v2 factory has been added.
- There are new recipes for creating the implementation projects with one click of a button
- The model project can be placed anywhere in the solution, for instance, as a sibling of the target projects such as is so common in the v2-style Service Interfaces solution folder.
- Specifying the XmlSerializer as the SerializerType now generates proper code
- Visual Studio no longer attempts to check out model files when opening from source control
- You can now add empty Message Contracts without causing validation errors. This allows adding unforeseen new members to a request message without breaking existing clients.
- The Order property of a Data Contract attribute must be unique. But a new recipe is under development to ease the effort of ensuring uniqueness.
- Can't select an existing service contract from the deployment designer.
- Can't add a new model project to an existing solution (although a workaround exists).
- Unexpected attempts to save the Data Contract model upon building the project (causing check-out requests).