Book Review: ASP.NET 3.5 Social Networking

The release of the book ASP.NET 3.5 Social Networking by Andrew Siemer comes at
a time when social networking is fast gaining popularity and is gradually
becoming a way of life. For
the ambitious technopreneurs, there is the impulse to develop “the next
Facebook” or at least a niche alternative to it. So how do we build one?
Building a social networking site is not as trivial as it seems. Not only there are complex technical
issues to contend with but there are also serious social and legal issues to
consider. Nevertheless, the book
tackles the technical side of things.
The 580-page book provides a reference solution in building an enterprise-grade
real-world social networking site using ASP.NET 3.5. It comes in both paperback and e-book
formats but I would recommend getting the paperback for better reading
experience.
There are 13 chapters in the book.
The appendices are not part of the actual book, but are available as separate
PDF downloads from the publisher’s site. To comfortably survive through the chapters of this book, one needs
experience in ASP.NET 3.5, C#, SQL Server 2005/2008, and Visual Studio 2008. Now, let’s see what each chapter of
the book has to offer:
Chapter 1 gives a nice introduction to social networking; it discusses the
common features that are required for a social networking site. It is here that the author introduces
Fisharoo — a niche community site that
will be the basis of discussion in the book.
Chapter 2 guides readers on creating an enterprise framework to handle the
needs of most web applications. It discusses design patterns (e.g.
Model-View-Presenter pattern, factory pattern using StructureMap, and repository
pattern using LINQ to SQL), best practices, and certain tools to make things
easier. It also covers error handling and logging.
Chapter 3 covers the common features that are related
to user accounts—which includes user registration, authentication, permissions,
and password security. There is also
discussion on some basic tools like password reminders, account administration,
and CAPTCHA. It should be noted that the book has chosen to explore a custom way
to handle users rather that to use the built-in ASP.NET membership controls.
Chapter 4 covers the creation of a user’s
profile and an avatar in a manner that is flexible enough for all systems to
use. It also covers the
implementation of privacy controls for user profile information. A custom
approach is used in the implementation of user profiles as opposed to using the
built-in ASP.NET profile APIs.
Chapter 5 discusses the implementation of friends, how
to search for them, finding them in the site's listings, and importing contacts
(e.g. from Outlook) into the site to find friends.
Chapter 6 covers the creation of an entire messaging
system—much like Hotmail or Gmail. It also touches on how to implement the Xinha
WYSIWYG editor in a way that can be re-used easily across the site for rich-text
inputs.
Chapter 7 covers details on how to build a media
gallery that will allow hosting of video, photos, resumes, or any number of
physical files. It also addresses the issue of multi-file uploads—through the
custom implementation of a Flash file uploader.
Chapter 8 discusses the creation of a blogging module
and how to add friendly URLs to blog posts.
Chapter 9 discusses the creation of the core features of a
message board—categories, forums, threads, and posts. In addition to these
features, the chapter also implements friendly URLs to help make the content
more SEO-friendly. It also covers integrating the message board section with an
alert service.
Chapter 10 covers the concept of Groups. It deals with
how groups can be used to bring many different systems (such as blogs, forums,
and alerts) together in a way to start creation of sub-communities.
Chapter 11 focuses on building the
tagging, rating and commenting controls to allow our users to express their
opinions about various content areas of our site.
Chapter 12 focuses on Moderation—a means to manage
community provided content using a very simple flagging tool. It also covers
methods such as Gagging to deal with habitual rule breakers. Finally, it
explores the issues of cross-site scripting (XSS) and measures that can be taken
to address it.
Chapter 13 discusses some concepts for scaling up the
application. Areas discussed include
database optimization, web farming, caching using MemCached.NET, searching of
indexed data using Lucene.NET, and email queuing concepts.
I like the fact that there are so many useful real-world techniques and
best practices discussed in this book that some of the concepts learnt can be
applied in other application domains. To cater to certain
complex real-world requirements, the book makes no qualms in straying away from
using standard .NET APIs; instead it opts for more flexible self-built APIs, and
third-party open-source libraries and tools.
I also like the fact that the book approaches the subject of development
in an end-to-end manner; apart from the architectural and coding aspects covered
by the book chapters, there is even guidance on setting up version control, unit
tests, and automating builds and testing processes—all of which can be found in
the downloadable appendices.
Be forewarned though; this book is “heavy”. Depending on one’s prior development
experience, some of the materials and source code may take time to step through
or digest.
If you’re an ASP.NET and C# developer building an enterprise-grade social
networking site, then this is the book for you!
Jason Ong
- February 2009
ASP.NET 3.5 Social Networking
Author: Andrew Siemer
Publisher:
Packt Publishing
ISBN: 1847194788
Related Resources