I recently finished reading the book ASP.NET 3.5 Social Networking by Andrew Siemer. I was very interested in this book because I want to build a social networking site designed for vloggers and ASP.NET is my area of expertise. Currently I'm working to customize the Elgg social networking web application using PHP because it is open source and has an active developer community.
Unfortunately, developing a social networking application is a big project, not something the lone developer can accomplish. It really requires an integrated suite of web applications with modules for blogging, forums, groups, media galleries, etc. Andrew Siemer has done an impressive job of creating the framework of a social networking web application as documented in his book but it is by no means feature complete. There was no mention in the book of any plans to make this an open source project.
The author has clearly been keeping up with changes in technology and methodology. As far as ASP.NET 3.5 goes, he made extensive use of LINQ to SQL but was unable to use MVC which wasn't available at the time, although he managed to implement a MVP (Model View Presenter) design pattern. He also made use of open source tools like Lucene.NET, MemCached, StructureMap, and NUnit. I don't have any experience with those tools and I'm not up to speed with ASP.NET 3.5 but I considered this a bonus because I learned something new.
Even though I'm not using ASP.NET on my social networking project I still wanted to read this book to pick up on some tips on how to design such an application. Andrew Siemer provides plenty of explanation for his design decisions including how his database schema is structured according to the project requirements. This can eliminate one of the biggest stumbling blocks to a large project because a lot of time is wasted just figuring out how to design the database. Elgg is using the Entity Attribute Value model for its database and there is some debate over how well this will scale.
Although Andrew Siemer added considerable complexity to his project by using StructureMap, I guess this is wise because a social networking web application needs to be flexible. This design decision would definitely make sense for an open source project. StructureMap is a Dependency Injection tool written in C# for .NET development. StructureMap is also a generic "Plugin" mechanism for flexible and extensible .NET applications. In other words, it allows other developers to replace an object with some other implementation.
Social networking sites tend to get a lot of feature requests and suggestions from their large community of users. You really have to participate on several sites to get a sense of what the users are likely to need. Although the author anticipated many potential issues and requirements he did neglect to include some standard features. For example, he does not provide a means for members to customize their profile though CSS. Elgg also does not allow users to design their profile page and I know vloggers would miss this as they currently have a lot of fun creating new banners on Vloggerheads. I believe that vlogging is essential to create a really strong sense of online community so I found the media gallery component of the design particularly lacking. But you would need an entire video sharing module to really address that need. That is a huge project in its own right. I've learned that comment threading is really important for social networking sites. Without it you get users typing the @ sign in their comments to indicate who they are replying to and that is just an awkward user hack to work around a serious design flaw in the application.
Although this is a thick book, 556 pages, most of the content is code listings so you won't need to invest too much time in reading it. You may feel a little lost if you haven’t been following the rapid changes in the ASP.NET framework and the additional open source tools require additional work to familiarize yourself with them because they are not part of the ASP.NET framework.