(P7) These communities are able to generate income from advertising and additional paid services;

(P13) Unlike many books, we will not just discuss core concepts with demos in the form of snippets. We will build on entire working site from the ground up;

(P15) Problem --> Design --> Solution;

(P16) 
A user's profile is really just an extension of his / her account;

Account - hold the login information;
Profile - hold all the personal identifiers;

(P18) Messaging is essential to any community site as it allows users to communicate with one another directly;

(P21) 
Blogging is often a major feature in any community site as it gives those who enjoy speaking to the world a tool to do just that;

One of the biggest benefits for a community with active bloggers is that you are acquiring a large amount of free content to feed the various search engine spiders with. This in turn will help you get your search ranking up, which will drive more traffic to your site, and will in turn grow your community;

(P25) Anyone can build a mom and pop community site with the feature that we discussed. However, if you want to build a site that can grow with your community. We will want to start building it in a certain way from the beginning;

(P31) A module is a group of features and functionality in your application;

(P33) A Repository is an object whose purpose is specific to a single Entity object;

(P35) The presenter is a separate class file. There should be one presenter file per webpage;

(P35) On loading, the view would instantiate its presenter and pass a reference of itself to that presenter. This passes the control of the view to the presenter. The view then calls on init method in the presenter. The presenter is now responsible for initializing the page;

(P40) 
LINQ to SQL classes - one .dbml file;
Each class that represents a table will have all the columns of the tables represented as fields and properties for that class;

(P41) The connection class gives us a way to encapsulate our DataContext creation;

(P43) 
Once we have the DataContext defined, we can perform our query;

The reason we have specified from prior to anything else is so that visual studio Intellisense can be used;

(P44) 
"It is better to have and not need, than need and not have!"

Configuration - For the configuration wrapper. We want to create something that is capable of returning a strongly typed item out of our configuration source. Of cource, this configuration source will initially be the standard web.config;

(P50) The Fisharoo.FisharooCore Properties is what gives us access to our newly created settings file;

(P56) 
HttpContext.Current.Cache;
HttpContext.Current.Session;
HttpContext.Current.Response;

(P57) Sending emails is one task that every website has to be capable of;

(P61) Finally, we get to the Send() method that is used by all of the other methods. This method is responsible for actually sending the emails. But before this method performs any action, we need to add the following section to our web.configjust after the configuration tag. It is responsible for telling the .NET framework how to connect to our mail server;

(P62) What about errors those occur outside of the environment? The easiest thing to do in a web environment is to tap into the Application_Error event handler using the Global.asax file;

(P86) LINQ requires us to have a Timestamp so that we can easily use the Attach() method for persisting data to the database;

(P93) Any time we work with out LINQ classes or data, we will be going through the FisharooContext class;

(P94) 
A Repository provides us with a single place to go for our data (which doesn't necessarily have to be a database);

Repositories --> Connection --> DataContext --> SQL;

Each repository will be responsible for data related to a particular entity;

(P98) LINQ - Entire query is wrapped in parenthesis, this allows me to chain methods on top of the result set;

(P99) 
If the object does have an AccountID, it can't be new. If it doesn't have an AccountID, it must be new;

A new object is easy to work with. We simply call the DataContext.CollectionOfObjects.InsertOnSubmit(objectToAdd) method;

(P111) Extension Method - The only difference between this method and one you would normally write is the this reference preceding the first parameter;

(P114) The presenter is the only part of our front end that is capable of interacting with our domain logic;

(P145) As with all of the other controls and classes that .NET exposes to us, it is a good idea to wrap the SiteMap class;

(P155) An avatar is a small ico or p_w_picpath that is associated with each user's profile;

(P170) 
A service os solely responsible for making complex tasks easy to work with and re-usable;

OnInit() - Our dynamic controls were added in OnInit(). It was rendered dynamically will exist in ViewState;

(P192) HTTP modules are executed in the ASP.NET pipeline prior to HTTP handlers;

(P221) A user control is like a small self-contained page that you can then insert into your page (or master page);

(P310) 
ListView - <LayoutTemplate><ItemTemplate><EmptyItemTemplate>;

(P337) SEO (Search Engine Optimization) is generally defined as the process that optimizes organic search traffic;

(P439) We are initializing the control in the overriden OnInit() Method. This allows us to get the control's output into the ViewState so that we can access everything down the road;