I recently finished reading the book ASP.NET 3.5 Social Networking by Andrew Siemer. I consider this book to be one of the more important books to read because I’m very interested in building social networking web sites and ASP.NET is my area of expertise. However I’m currently devoting a lot of time to PHP and the Elgg social networking web application because most ASP.NET web applications are not open source so they don’t have many developers working on improvements.
|ASP.NET 3.5 Social Networking: Andrew Siemer: Books
Andrew Siemer seems to be keeping up with technology. Not only does he 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. I’m not actually up to speed on LINQ, ASP.NET 3.5, or any of the open source tools he used but I just consider this a bonus because I learned a lot in addition to the material specifically about social networking.
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. It is not clear that this web application will become an open source project but if it does, then StructureMap will make it possible for other developers to replace part of the application in favor of something else if they’d rather take a different approach.
However, I don’t think the author has studied social networks closely enough to anticipate all the requirements. For example, he does not provide a means for members to customize their profile though CSS. Elgg also lacks this feature at the moment and it will prevent users from expressing their personality on the site. Andrew Siemer also skims over media galleries which he only implements as an user file management system with a photo gallery. In my opinion, vlogging is the only media that really creates an effective sense of community. You really need to experience the vlogging community to appreciate this. Therefore I would really like to find a social networking web application that has genuinely integrated video sharing into its system. I’m sure the author would consider this to be a whole other topic which requires another thick book to cover and Elgg certainly doesn’t have this but I still consider it to be essential. But even aside from that, the comment system he designed does not allow for threaded comments. This will not seem like a big deal until you’ve seen a really active community where a lot of interaction takes place. Vloggers do a ridiculous amount of commenting because YouTube made this the easiest way to respond to a video. Without comment threading, people have to indicate their replies to previous comments using the @ sign. I consider this to be an awkward user hack for a poorly designed application.
Although this is a thick book, 556 pages, most of the content is code listings so it won’t actually take you too long to read it. Building a social networking web application is a huge project which a solitary developer could hardly manage alone so just reading this book is not going to get you there. If you think about it, a social networking web application is actually a collection of web applications. There is the blogging application, the forum application, the groups application, the messaging application, and the media gallery application; not to mention the hundreds of minor details to attend to including security. In my opinion, it is quite hopeless to tackle such a project without an open source community of active developers. Andrew Siemer’s work is very impressive and sophisticated but it is still incomplete.