This post originated from an RSS feed registered with .NET Buzz
by James Avery.
Original Post: On Distributed Applications
Feed Title: .Avery Blog
Feed URL: /blog/Install/BlogNotConfiguredError.aspx
Feed Description: .NET and everything nice
Sam Gentile wrote a very informed post on distributed computing and how a large number of .NET developers don't understand or use distributed computing in there applications. While I agree with a lot of what Sam says in the post, I think that a lot of people who read the post got the wrong impression from it. The first thing that Sam mentions is that a large number of ASP.NET books completely ignore distributed computing, this is true, but only because the majority of ASP.NET applications should not be built using distributed techniques. (Books also suffer from trying to please the majority, damn publishers trying to make money)
I think of distributed computing like a V12 engine, very fast and very powerful, but also very complex and very expensive. Are there times when you need a V12, of course! When doing work for the large companies that Avanade works with, most applications do need a V12, they have tons of offices, thousands of employees, and they need the application to be both fast and scalable. Now, this is probably about 10% or less of the applications that are being built. The large majority of .NET and ASP.NET applications are being built for small companies, or for personal use and they really don't need distributed computing, they will do just fine with a V6.
Sam brings up the point that Java is very distributed computing focused, this is very true. Java is also very prominent in enterprise situations where this is appropriate. Java is hard to find in small companies and this might very well be the reason why. I have seen plenty of Java applications fail because they are trying to build a V12 when a V6 is all that is needed.
The reason that tool kits like the Community Starter Kit are not built using ES or remoting is because 99% of the people who will use it will not need to use distributed computing... Does your user group website need a middle tier on another server? I seriously doubt it.
I think everything that Sam says in correct, but a large part of being a software developer is deciding on the best solution for the problem you have. Most of the problems that me and Sam run into are probably going to need distributed computing, but I know that at the last company I worked for none of the applications needed to be built that way. You need to look at your problem and decide what is needed.
And I don't buy the whole future scalability issue, that's like saying that we should put V12 engines in mini vans because someday they might want to go 200 miles per hour... if that is the case then they need a different car, or in our case a different software solution. Consider the future when making your decision, but don't build an overly complex and overly expensive solution based on "what-ifs".