Performance is a key factor in deciding the architecture of a system. With distributed applications performance becomes even more key as data is passed between the different layers.
Microsoft has seemingly completing technologies in this space so it is very much a mystery on which will be the best technology for a given scenario.
A new article on MSDN called Performance of ASP.NET Web Services, Enterprise Services, and .NET Remoting by Ingo Rammer of Thinktecture and Richard Turner of Microsoft examines just this dilemma and offers tests, benchmarks and draws conclusions so you can decided for yourself based on the evidence which is the most appropriate technology to use, and most importantly how it should be used!
The tests all come with code so you can try the tests for yourself which is great because you can alter the code which helps if you wish to build on the article to cover your distinct scenario.
The conclusions that are draw from the article are,
- Use ASMX wherever possible
- Use ASMX for Web services
- Choose Web services for scalability
- Use Enterprise Services only inside your services
- Consider a ASMX hosted infrastructure in IIS or Enterprise Services over building your own
- Avoid passing DataSets between services
- Use Authenticated Connection Sharing
Now I’m particularly pleased with the results of this article as I have never found during my testing that web services were particularly slow just by there very nature reliant on transport, another reason to keep an eye on your networks latency.
Anyway, a very good article that is well worth forming part of your development strategy in .Net.