If asynchronous programming in ASP.NET is something you haven't been doing, then you'll want to check this article out: http://msdn.microsoft.com/msdnmag/issues/07/03/WickedCode/. Instead of spending more $ on new servers or hardware you might be able to utilize async Pages, Handlers, and Modules to lessen the amount of threads waiting to execute.
This article proposes some great ways of making common sequences of operations on lists more reusable in .NET: http://msdn2.microsoft.com/en-us/vcsharp/bb264519.aspx. It reminds me of some of the built-in set operations that are available in the SmallTalk programming language.
The internal keyword (in C#) gives access to other classes within the same assembly. Friend is the equivalent keyword in VB.Net. However, if you want another assembly to have access to another assembly’s “internal” stuff (in C#), then you can use the method from the web link below called “Friend Assemblies” where it exposes one assembly’s “internal” stuff to another assembly. Nowhere in this process do you actually use a keyword friend or friendly in C#. It is simply what they have called this relationship ......