SOA – The Four Commandments

Recently, I got an opportunity to meet and chat with some very able and talented developers and architects here at our .Net user group – KolkataNet. As usual, we got into discussing technology. This time around the buzzword was SOA (Service Oriented Architecture). To my utter surprise, none of them (including me) were not able to come up with a decently ‘complete’ definition for SOA. I must confess here that deep down inside I was not very unhappy about it. I was glad to find that when it comes to SOA, I am not the only confused bloke (lol).

This set me out to dig deeper into this highly hyped term. And really, the crux of finding was that the so highly hyped SOA is nothing but just a natural growth of the craft of developing software. The craft has come up a long way from procedural to object-orientation to component-based and now to service-orientation. Of course, every stage has had its own compelling drivers to take it to the next one. Hence, SOA is no revolution, it is just an evolution. There are business (rather marketing, lol) aspects to SOA too. But let us limit our focus to SOA as software development approach.

So what is SOA? In order to qualify itself as an SOA, an architecture must adhere to the infamous Four Tenants of SOA. Which are:

Boundaries are explicit. Developers should define explicitly what methods/properties are going to expose to the client.

Services are autonomous. Services and the consumer application are independent. So in future if we need to modify or enhance the services feature then we can take the services offline and work with that. So this won’t affect the consumer application.

Share Schema/Contract not class implementation. We need to share only the schema to our clients. If should not share any implementation information in to our clients. For example, we should not ask them to give any connection string info in the attribute level, which will expose what database we are using for our service.

Compatibility based on policy. The services should define all the requirements in order to use the services. We should not have person – to – person communication about the services.

So next time when you profess to have implemented SOA, check against these tenants to make sure that you are not exaggerating.

Cheers.

The page you are requesting cannot be served because of the extension configuration

Recently, I migrated to Windows 7 and ended up installing all my software’s again. I had a project which involved hosting a WCF service on IIS. The service used a .svc file extension and IIS 7 on my machine was not aware how to handle these files.

The error I got looked something like this:

HTTP Error 404.3 – Not Found

The page you are requesting cannot be served because of the extension configuration. If the page is a script, add a handler. If the file should be downloaded, add a MIME map. Detailed Error InformationModule StaticFileModule.

There were more errors related to local machine below these errors.I looked up the net and after some digging figured out the solution to the problem:

1. Run Visual Studio 2008 Command Prompt as “Administrator”.
2. Navigate to C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation.
3. Run this command servicemodelreg –i.
The servicemodelreg is a command line tool which provides the ability to manage the registration on ServiceModel on a machine.

Hope this hepls. Happy programming.