Tuesday, February 16, 2010

WCF Activation in Windows 7 and Windows 2008


In my earlier post on Windows 7 I had mentioned about the performance of Windows 7 being faster compared to earlier Windows operating systems. I had also mentioned about the minimal effort required for the installation of Windows 7 operating system. My team has been developing few Windows Communication Foundation (WCF) services. Our target environment is Windows 2008 server. For some reason we were unable to browse the WCF services on our deployment environment but they were working fine on our development environment which is Windows XP.

By default WCF Activation is disabled in Windows 7 & Windows 2008 server

We use Windows Installer Scripts (WIX) for generating the MSI installation packages. There is a dedicated team which provides us the testing and deployment environments. We were provided a Windows 2008 server machine with IIS configured on it. We installed the MSIs for the services on the server. These services are accessed by a WPF client. We could not access the services from the WPF client.

After doing initial checks about the endpoint and URL checks in the configuration file we tried accessing the .svc file using the browser on the server. We were unable to browse the file. We tried running the aspnet_regiis again to establish the mappings. But that also did not help.

We checked the mapping for .svc extension in the IIS MIME types. That was an indication that for some reason .svc extension was not mapped in IIS. We added the mapping manually and assigned the ISAPI.dll as the executable. After this the service started working.

It so happens that by default many of the services like IIS, MSMQ etc are not enabled by default with the operating system. We need to explicitly enable them. This can be seen from screenshot below

WCF Activation

Enable WCF Activation on Windows 7 & 2008 server

In order to enable the correct script mapping to .svc check the Microsoft.NET Framework 3.5.1 option in the Turn on Windows Features on or off dialog box. Select both Windows Communication Foundation HTTP Activation and Windows Communication Foundation non-HTTP Activation options as shown below

Enable WCF Activation

This will install the required script maps and handler mappings. You can check the handler mappings under the default web site in IIS.

svc handler mappings


The performance of Windows 7 and Windows 2008 is relatively better as compared to previous operating systems because not all services are installed by default. This also speeds up the installation process as only basic features are installed. users need to explicitly enable the services required by them. Unlike earlier operating systems you need not restart the system for the settings to take effect.

Hope this helps. Until next time happy programming :)

Further Reading

Following are some books I recommend related to the topics discussed in this blog.

Saturday, February 06, 2010

Common mistakes of an Agile Team


With many organizations adopting some form of Lean development it becomes necessary that the team is aware of the changes required to move from one methodology to another. Here are some of the most common mistakes a team does while trying to adopt Agile methodology.

My experiences so far

In my opinion the most important thing that is needed for adopting Agile is the change in mentality at all levels right from a junior programmer / developer, tech lead, team lead, architect, project lead, manager and also the top management. Unless everybody realises the change in roles in a scrum team it becomes difficult to manage Agile teams. The 3 scrum roles of a Product Owner, Scrum Master and Team are very well documented.

In order to get the optimal output from the team there has to be a right mix of all the ingredients. Team size is most important. Assuming that the team follows pair programming there should be around 6-8 people in a team. More than 8 developers means more than 4 pairs which can cause communication problems. Less than 4 people will mean that there are less than 2 pairs. This can increase the technical debt.

Problems start arising if the team is not trained properly before starting the Agile development. People don’t realise common things which are the foundations of Agile development like self-organization, communication over processes, faster feedback etc.

I have seen on many occasions that in an Agile team estimates are given by one or two people rather than the whole team. This results in a situations where team members are forced to stretch beyond the regular working hours in order to complete the work.

Teams don’t take into account the velocity while planning for the next sprint. Scrum masters fail to take into account the capacity which results in over commitment. The team is not able to achieve its goal.

Team members are not aware of the complete list of tasks planned for the iteration as they do not discuss the tasks during iteration planning meeting.  As a result the priorities are not clear and team ends up with wrong tasks completed at the end of the iteration.

Another common mistake I have seen is that people tend to go back to waterfall model the moment there is some impediment. The common example of this is people start working on individual tasks rather than pairing. This increases the technical debt within the team and the overhead is too much if this continues for too long as the knowledge is residing in silos.

Whenever there are stories added to the sprint in between after the sprint has started Scrum Master does not take enough measures to de-scope or reschedule some other story of the same magnitude which increases the workload of the team.

Developers often work on parallel tasks increasing the risk of having more than one item in half complete state at the end of the iteration. This can happen due to the definition of DONE not properly agreed between the product owner and the team. 

Team members are not aware of how to use different set of matrices like velocity, sprint burndown chart etc. The factors which are responsible for measuring these matrices like the estimated efforts and the actual hours remaining to complete the tasks are not updated regularly. This results in inaccurate facts and figures.

An active involvement of the product owner is also very important for the success of the team. If the product owner can’t attend everyday standup meetings with the team at least he should be available for the Sprint Review, Retrospective and the Planning meetings. An early feedback from the product owner at the end of the iteration helps the team to deliver the right set of features. Inability to demonstrate the features developed during the sprint due to any reason increases the maintenance cost and can lead to major reworks at a later point.

Agile is all about improving with each sprint / iteration. People forget to take concrete actions on the issues discussed during the retrospective meetings. Without positive actions being taken there will not be a shippable product at the end of the sprint.


I always keep saying that Agile is change in mindset and also attitude to the way we develop software. Unless everyone involved is trained properly and understand the concepts and artefacts related to Agile methodology the success of the team is not guaranteed. If people follow Agile properly in most cases we can have a highly energized workplaces and a high performing teams. Unfortunately in most cases that is not the case and teams just struggle to deliver on time.