For the last couple of weeks Matias, Mariano, Miguel and I have been working with the Patterns and Practices team developing the next version of SCSF.
Miguel and I have been porting the guidance package to support the latest version of GAT/GAX 1.2. We worked heavily on TDD creating new wizard pages to allow a future improvement of the user experience, and did some refactoring both on code and XML configuration files.
Here you will find some details of the work we’ve been doing:
Disconnected Service Agent
The Add Smart Web Reference recipe was replaced by the Add Disconnected Service Agent (DSA) recipe which uses the OAB.
This recipe (and the OAB) was ported from the MCSF. After fixing some issues regarding differences between Mobile and Desktop web references, we could successfully port the recipe.
Also, this recipe was modified to work with any class besides a web reference. This makes the Add DSA recipe a powerful tool to wrap any service class and make it work in a disconnected fashion.
Custom Wizard Pages
We replaced XML defined wizard pages by custom wizard pages. As this custom wizard pages are WinForm controls, they will allow future improvements to the user experience. This wizard pages implemented the MVP pattern.
We strongly recommend this practice when customizing the any guidance package.
Test Driven Development
Following WCSF steps, we worked under TDD to create wizard page’s presenters. TDD helped us to find some “hidden” requirements that were not so easy to read in the XML Page definition. It has also been really helpful when creating spikes (We’ve been doing some research to include the Validation Application Block included in EntLib 3.0).
XML refactoring
As we began working with some of the Guidance Package recipes it became natural to split the main guidance package xml definition into pieces.
This approach was already used in WCSF and it help us to focus in one recipe at a time. We also extracted the BindingRecipe recipe to a separate file. EvaluateExpression Actions were used in the former guidance package to obtain values and use them as arguments of subsequent Actions. It made more sense for us to have all the values used for Actions in the Arguments section. This approach was the used in WCSF and make this values available for wizard pages.
New RecipeFramework Library
The previous SCSF version has a library project containing Actions, ValueProviders and other classes.
This library is now part of the Recipe Framework that comes with GAT/GAX 1.2. We are using GAT/GAX classes where suitable.
Some of these classes included in the RecipeFramework library has a different behavior than those included in the previous version of SCSF. We had to make some research before replace some of this classes.
Use of GEL (GAT/GAX Extension Library)
Other classes used in the previous version of the SCSF guidance package are now part of the Guidance Extension Library project (a.k.a. GEL).
By inspecting on the WCSF code we find that some of this classes was now part of the GEL project.
We found some issues when using some of this classes so we fix them and temporally included this project in the SCSF guidance package.
We will post this fixes in the Codeplex GEL project and then return to a binary reference of GEL instead of having the project included.
We found some issues on the road, some related to the library used and some related to the use of custom wizard pages instead of xml definitions. We will try to post some details in the next days, so stay tuned!