All posts in Architecture

Watching Vittorio Bertocci‘s Windows Identity Foundation (WIF) introductory talk at PDC as well as the recording of the excellent talk Microsoft Architect Hervey Wilson gave on this subject at PDC09 brought back wonderful memories of long discussions (and arguments ;-)) I had with Stelios, Manolis, Dimos and Stavros back when I was working at DOL, on Federated identity and Microsoft’s offerings on that area.

To be honest I skimmed through Hervey’s session rather too quickly, got a little confused, jumped over to Vittorio Bertocci’s session and then … gave up. I decided that I needed to look at the whole WIF thing another time – and ideally in a more structured way than just watching a PDC session 🙂

So today I found out that there is a much more structured way to learn about Windows Identity Foundation (WIF) and Azure. The new identity developer training kit and channel9 training course, announced today, contain a new hands-on lab, Federated Authentication in a Windows Azure Web Role Application, which provides step-by-step guides for hosting in Windows Azure (WAZ) a Web application accepting identities from an external identity provider, leaving you free to focus on the business function of your application. You can also go here for a standalone version of the lab.

So if you’re really interested on this subject I suggest you take a look at them, I know I will.

Protected: Prism at the next DotNetZone Event

Categories: Architecture, DotNetZone, Events, Silverlight
Enter your password to view comments.

This content is password protected. To view it please enter your password below:

I briefly got the chance to talk about MetaCMS, the content management system and e-shop platform I’ve designed and built, a while back. Since then a lot of sites have been built using it. Some of which (the biggest ones) include:


And as if building these sites wasn’t enough we’ve decided to completely re-write the platform and built MetaCMS V2. The fact that it had been “tied” to LinqToSql was bothering me all along but due to lack of time didn’t have the time to do something about it. But eventually and although I had put it on “steroids”, the Context has been disposed caching bugs I’ve talked about previously, drove us to completely re-write that part.


So what’s new in this new version, well basically we’ve done two things

  • First we’ve build View Models of serializable POCO (Plain Old CLR Objects) objects, taking advantage of the T4 Visual Studio templating engine and the Linq models we already had. In addition these View Model objects were designed to have lambda expressions that will lazy load related entities once those are requested.
  • Secondly I’ve designed a simple IoC system that instantiates Repositories that are responsible to return data and “Hydrate” the view model objects.


Making these changes we were able to solve the caching problems and the dreadful Context has been disposed exception we were getting when caching Linq objects and at the same time build a more robust, scalable, solution one that can target multiple client technologies (Sliverlight, WPF, etc) and use different Data access methods.

But that’s not all, except from the bug fixes a lot of new features and modules have been added as well. Some of which are:

  • Extensibility support
    Hook into various MetaCMS actions and build your own custom business logic.
  • Messaging platform
    Capable of sending templatized newsletters and Emails.
  • Import / Export
    Import and Export engine that allows communication with arbitrary data sources.
  • Stock Market platform
    Utilizes a provider model to allow communication with any Stock Market data provider (Rueters, XAA etc.)
  • Competition Module
    Supports multiple and recurring competitions with custom winner picking rule engine.
  • Elections
    Build to support Elections with maximum detail and data coming from any provider.

And last but not least the e-commerce part of MetaCMS that has been upgraded to an Enterprise Level solution with all the features even the most demanding shop would need. Speaking of which there is a large e-shop project coming up soon that unfortunately though I still can’t disclose.

Time to stop mumbling… if you have more questions or need a demo get in touch and I’ll arrange it.

patterns The patterns & practices team plans to create some new Web guidance and we needs our help prioritizing the requirements through a survey that went live.

They have split the effort into 2 projects.

The first project will be to update the Web Client Software Factory (WCSF) to run on Visual Studio 2010.

The second project will take a fresh look at creating new Web Guidance.

Your feedback from the survey will help define the scope for this second project.

If you ever used patterns and practices building blocks you’ll know how useful those are. So, go take the survey and help define the patterns.


So it’s time for me to reveal what I’ve been up to for the past 6 months. As some of you may already know, I moved to a new start up company about six months ago, called Metadata (I know the site isn’t quite ready yet, but we focused on the product instead of the site), where I was assigned the task of designing and building a solution for Content Management. The company business strategy required a product that would satisfy the needs of every possible client ranging from small companies that need simple websites to large news portal organizations with real publishing needs and companies with e-commerce needs.

So let me talk a lit bit about what we’ve build so far and begin by letting you in on the 5 pillars we used to design the system:

  • Ease of use. Build a system that would increase its users productivity by reducing the time needed to operate it.
  • Configurable. Build a system that could be easily configured to feet every customer’s specific needs.
  • Modular. Build a system with the core CMS functionality and extend it by using various modules.
  • Secure. Build a secure system.
  • Performance. Build a system that is fast.

We’ve decided to follow the content – presentation separation principle. That way the content editor doesn’t have to worry about how its content is going to look on the site (at least in most of the cases), the content can be easily reused, the whole site can change by simply changing the appearance (themes, templates) and the content can be used in other types of applications (PDA’s, WPF, Silverlight… 😉 and so on) as well and not just websites.

MetaCMS and MetaCMS built websites use the latest Microsoft technologies. We’ve used LinqToSql as our ORM, .Net Framework 3.5 sp1 for its MVC Routing Feature, ASP.NET Ajax extensions, Silverlight, and Microsoft SQL 2008.

ArchitectureA MetaCMS website doesn’t have any physical pages (aka aspx files) instead a Runtime engine is responsible to built page instances using available templates and controls and apply themes. That way the whole page structure and appearance can change at runtime. Controls. Using a Parameter system that we’ve built each control is associated with specific content and is responsible to present it to the page instance that it’s placed. But other mini applications – modules can also be placed on an instance of a page.

Except from the runtime presentation engine, MetaCMS offers a number of services as well. So in it we’ve built an advance caching mechanism capable of automatic Cache Item invalidation Synchronization between web farm nodes, Logging service that can be configured with different types of logging sinks, Auditing, Messaging service that allows communication with a user using various platforms (email, Newsletters, sms etc.) and many more.


Also during the past five months we’ve developed a number of modules that add more functionality to the MetaCMS core some of which are:

  • Polls
  • Comments/Opinions
  • Publications
  • StockMarket
  • Events
  • EShop
  • Business Directory

This Friday, the first site, built using our platform went live. is an e-commerce solution built in co-operation with and is dedicated on selling organic food but that’s not the only one we’ve been working on… you’ll just have to wait a bit longer to find out more…

Some of you have been asking on my WPFSubsonic project status. Well I have to admit that things have been pretty hectic lately so I haven’t been able to complete it. I still haven’t found a way to pass configuration data on the custom tool but I have thought about it and I’m probably going to use XAML serializer/de-serializer in order to pass a configuration file to the custom tool.

For those of you that you simply can’t wait J, I’m posting a first built. In this build the DAL generation happens through a small executable file so that configuration can be performed through its App.config file.

I’ve been to a number of technical events over the years. Some of them were interesting and informational while others not. Over the last couple of days though, I had the great opportunity to attend a very interesting one, one that rarely takes place. Michael and Daniel presented a Microsoft Hellas sponsored workshop on building real world SOA applications using Microsoft .Net 3.0. Beyond the new .Net technologies which were discussed (but were already familiar to me), this event gave me the opportunity to see, proven at practice, architectural patterns for building Service Oriented applications. I hope that this is only the beginning and that similar events will take place in the future.

Thanks Michael, Daniel

I don’t know how many of you are interested or follow up on this effort. For those of you that do, I’m happy to say that the first release is very close.

The issue I still have to solve before publishing my code is the configuration one. Subsonic uses Web.Config to specify Database connection strings and the .Net 2.0 provider model to specify the Database drivers to be used. All these are configured in a custom configuration section that is read with a WebConfigurationSection descendant class at built time.

Since though custom build providers are not available at the Windows Forms platform I had to use another technique to emit the generated code in my programs. For this I decided to use Visual Studio Custom Tools following Dino Esposito’s article on MSDN Magazine. The problem with this implementation is that since your BaseCodeGeneratorWithSite class is registered as a COM object and created in Visual Studio’s scope, it has no longer access to types that could resolve the Custom App.Config Section (doesn’t know where to find the assemblies).

I’m thinking on putting the configuration section on the custom file that is passed on the BaseCodeGeneratorWithSite class as a parameter in the GenerateCode(string inputFileName, string inputFileContent) method. What do you think?