Because ASP.NET is my area of expertise, I will use ASP.NET 3.5 to build Social Networking. ASP.NET 3.5 Social Networking by Andrew Siemer is one of the most important books to read.

Andrew Siemer use ASP.NET 3.5 in his web application, but he uses domain-driven design concepts, LINQ to SQL, and open source tools like Lucene.NET, MemCached, StructureMap, and NUnit. Therefore you may feel a little lost if you haven’t been following the rapid changes in the ASP.NET framework. If fact, you will even need to expand your knowledge beyond the ASP.NET framework to take advantage of the other technologies he introduced into his project.

As far as developing a social networking web application is concerned, the main benefit to be gained from reading this book is from the database schema and application design considerations that are analyzed. Even if you are not going to use ASP.NET you will learn how you might design your database tables to meet the project requirements. This is often a big stumbling block in creating a web application from scratch. It is often interesting to see how someone else approaches the application design.

For example, Andrew Siemer choose to store record counts in his tables to avoid running aggregate queries to get the record counts. He argues that this is more efficient which may be true. He used StructureMap to create loosely coupled objects in his application. StructureMap is a dependency injection framework and allows you to swap out a class and plug in another. While I could argue that this adds an unnecessary layer of complexity, it does make sense for a social networking web application which needs to meet the special needs of various niche communities. Social networking web applications need to be extremely flexible and customizable because the community of users will have many feature requests and suggestions for improvements. They will not be very happy if you lock them into a rigid environment.