Design Pattern for Silverlight 2

It seems the Model-View-ViewModel (MVVM) is the preferred pattern at present for implementing cleanly separated SL apps (& WPF client apps). Aims to increase testability and leverage data-binding in XAML to implement the View part of the pattern. The Model is responsible for accessing data (e.g. WCF service, REST, etc) and passing it to the ViewModel (which holds state and provides operations to the View)- the View then binds to objects in the ViewModel class. A view has a reference to a Model interface rather than a concrete implementation, this allows testing of the Model in isolation. We could implement the ViewModel as an interface or for testing purpose just build a stub Model and pass that the the ViewModel (going the whole hog you could use dependency injection such as Unity for Silverlight or Ninject to wire the parts together).

More info on MVVM:

http://jonas.follesoe.no/YouCardRevisitedImplementingTheViewModelPattern.aspx 

 http://msdn.microsoft.com/en-us/magazine/dd458800.aspx

http://www.nikhilk.net/Silverlight-ViewModel-Pattern.aspx 

 

 

Cannot find 'ServiceReferences.ClientConfig' in the .xap application package when running Silverlight unit tests

When using the browser-based Silverlight unit testing framework to test a SL app which contains service references you might get a Cannot find 'ServiceReferences.ClientConfig' in the .xap application package error. You cannot just add a deployment item to the current test config as SL tests don't seem to use this. A quick fix to this is to add a linked file to ServiceReferences.ClientConfig in your test project.

Unit Testing with Silverlight 2

It doesn't appear there is any VS IDE integrated support for running SL unit tests but there is a browser-based unit testrunner, 
 
To get the correct templates follow this straightforward guide:
 
 
Then just create your unit test project(s) and write tests using the same attributes as [TestClass] [TestMethod] etc.
 
To run your SL tests (they don't show in VSs Test View window) set you SL unit test project as Startup and run, a browser opens and runs the tests, detailed instructions at http://www.jeff.wilcox.name/2008/03/silverlight2-unit-testing/#option2

Imported posts not appearing in BlogEngine.NET

 If you've used the BlogEngine.NET import tool and your post are not showing you could try the following:

  http://mcgeown.co.uk/BlogEngine/post/2008/05/09/Force-BlogEngineNet-to-update-its-cache-after-an-import.aspx

 I recycled the IIS app pool and that seems to have flushed BEs cache.

Importing posts from Blogger into BlogEngine.NET

Just managed to successfully get my posts from Blogger into DCT.

Read a post suggesting using a new temp WordPress blog which can import directly from Blogger. Then export, then use the Import tool in the Settings page of BlogEngine.Net (which launches a ClickOnce app). Although in retrospect I wonder if just pointing the Importer to the Blogger RSS feed might have made the WordPress step unnecessary.

 There is a caveat in that comments are not imported - also did not attempt images\files import.

Blogengine.net install on Discountasp.net

After weighing up the options (or at least 2) for a .Net based blogging engine for DCT I've chosen Blogengine.Net over dasBlog. Have to run IIS 7 in Classic Application Pool Pipeline Mode , also there were a few odd behaviors with the settings page outputting C# source and the referrals page not working; then the Month List widget not working.... it now appears to be ok... want to sort a theme and then I've a couple of ideas for some custom widgets.

Dataset designer global:: namespace issues

If you change the namespace of a typed dataset in Visual Studio 2005, you may find that the .designer.cs doesn’t re-generate properly, for example the connection string init. To fix, delete the .designer.cs file for your dataset and rebuild; you will probably get a build warning “custom tool failed” for the dataset generator. Double click [...]

encrypt and decrypt app.config in .NET 2.0

To encrypt, decrypt app.config file… private void button1_Click(object sender, EventArgs e){ UnProtectSection(”connectionStrings”);} private void button2_Click(object sender, EventArgs e){ ProtectSection(”connectionStrings”,“DataProtectionConfigurationProvider”);} private void ProtectSection(string sectionName, string provider){ Configuration config = ConfigurationManager. OpenExeConfiguration( ConfigurationUserLevel.None); ConfigurationSection section = [...]