May 2011 - Posts

During the last week of June (26-30) we’re going to have a 5 day conference in Sela about current and new technologies in the field of web, mobile, desktop, and server development. If you’re interested in Silverlight, Windows Phone 7, HTML 5, WPF, WCF, or simply want to learn more about advanced .NET development, come and learn from the experts.
During this week, I will have three full-day sessions in the field of web development:
Advanced WCF - Deep dive into WCF, understand the concept of hosting and extensibility, and learn how to tune and debug your WCF services and clients.
WCF Crash Course – Learn about WCF from the outside in – what it is, what you can do with it, how you can use it wisely, and how you can extend it. So if you've never used WCF, or you used some of it, or if you are familiar with it and want to know more about its internals, this crash course is for you.
Debugging the Web with Fiddler – Learn how to use Fiddler from bottom to top to intercept, alter, and record messages, whether you create ASP.NET applications, AJAX-based clients, WCF services, or Silverlight applications.
So hurry up and register to ensure your place in the conference.
Did you reach this post because you are a frequent reader of my blog? or did you get here because you are looking for the Windows HPC Server 2008 R2 command called hpcpack?
The hpcpack is a command that is used in Windows HPC Server 2008 R2 (SP1 currently) to create deployment packages that are installed in Azure worker nodes.
With the hpcpack you can create a .zip file that contains the content you wish to deploy, upload the package to the Azure storage where all HPC application packages are stored (it is a special blob created for that matter), and sync the Azure worker nodes with the new uploaded applications.
The main problem with finding documentation about the hpcpack command is that searching hpcpack on the Internet usually produce search result for the Microsoft HPC Pack 2008 R2 instead of the hpcpack command.
So here’s a direct link to the TechNet documentation about this command:
http://technet.microsoft.com/en-us/library/gg481764(WS.10).aspx
I hope this post helped those of you searching for the hpcpack command.
Every once in a while, people ask me about problems they have when trying to use a single WCF service with multiple concurrent calls.
The first think I tell them is to check their WCF throttling settings. The throttling behavior in WCF controls how many instances and session WCF can create and manage at once.
These settings also depend on the binding you use. For example if you have a single proxy on the client side that sends many async calls at once, and you use basicHttpBinding, WCF will by default create many instances on the service side, this is because basicHttpBinding does not support sessions. If you change the binding to wsHttpBinding which supports sessions, you will end up using a single instance (this of course depends on the instance context mode of your service).
In WCF 3.5 the throttling settings were quite low, but in .NET 4 they were increased and now they depend on the number of cores your machine has.
Of course this is the obvious reason, but after solving this issue, some people find another problem with concurrent calls, usually when making a lot of concurrent calls that span many service instances. The problem with creating a lot of service instances at once, even after increasing the throttling values, relies in the fact the WCF uses the ThreadPool to create to queue the work, and the ThreadPool controls how many threads are available for work and how to create new threads (this is the MinIOThreads setting). The ThreadPool has a minimum of threads which is set according to the machine’s CPU, and can be changed if needed (note the bug that exists in the CLR in .NET 3.5).
Recently, a new problem was found with the way the ThreadPool’s managed IO threads, which can affect the use of WCF over time in high loads. You can follow the following blog post for more information about this behavior and how to workaround it.
There are other settings that might affect throttling, such as ASP.NET settings, and other System.Net settings. If you encounter scaling issues, I suggest you also check the following blog post for performance tips.
Otherwise I can’t explain how they came up with the idea of creating such a funny episode about people not reading license agreements.