SharePoint 2010 Object Model introduction

Microsoft has replaced the "12 hive" structure that we had in
SharePoint 2007 with "14 Hive" structure in 2010.

It has apparently added
four new folders to its hive.

The Folders are :
* Policy
*
UserCode
* WebClients
* WebServices

See the Details at : 14 hive Directory structure of SharePoint 2010

In Sharepoint 2010 This is a step-by-step
tutorial to learn using sharepoint 2010′s Server and client object
model.
Server Object Model –

Here we will look at how to use
SharePoint API's, LINQ, REST and SharePoint web service to extract data from
sharepoint server.

Lets Start with using the API's in
Microsoft.SharePoint and Microsoft.SharePoint.Utilities
namespaces.

Firstly, to work with SharePoint 2010 components, your code
must first establish the site context or site collection context for requests
that are made to the server.

Please Note : In SharePoint, the SPsite
object also refered to as Site is actually a "Site Collection" object, not a
website
and the SPweb object also refered to as "web" is a single site in the
site collection.(It can be a top-level site collection site).
also, object of
type SPWebApplication is a big boss object which has reference to the web
applictaion that contains the site collection.

To get the reference to
site context in your code use the recommended Microsoft.SharePoint.SPContext
class and its members.

Lets look at how it is used

To get a
reference to the site collection -

SPSite oSiteCollection =
SPContext.Current.Site;

To get a reference to the current web site or web
in the site collection -

SPWeb oWebSite =
SPContext.Current.Web;

or

SPWeb oWebSite =
SPControl.GetContextWeb(Context);

Note : if your are using
Microsoft.SharePoint.SPContext class, you should not dispose any SPSite or SPWeb
object obtained
by any of the above methods. The SharePoint Foundation
runtime will dispose of them after page completion.

To get a reference to
all the webs or sites in a site collection -

SPWeb oWebSite =
SPContext.Current.Site.AllWebs["mySite1"];

oWebSite.Dispose();

Note
: You should explicitly dispose of references to objects that are obtained
through the AllWebs() or Openweb() property. You can also use using
clause
like below to avoid calling the dispose off method and let sharepoint
do this for you.

using can be something like

using (SPWeb oWebSite
= SPContext.Current.Site.AllWebs["mySite1"]);
{

}

You can also
use the Openweb() as below

using (SPWeb oWebSite =
mySiteCollection.OpenWeb("mySite1″))
{

}

Lets look at some
other components of the SharePoint farm that you can get using
SPContext

To get a reference to the current top-level server farm object
-

SPFarm myFarm = SPContext.Current.Site.WebApplication.Farm;

To
get a reference to the site collection database -

SPSite oSiteCollection
= SPContext.Current.Site.CurrentDatabase

Lets look at some of the general
code snippets

To return the collection of site collections in a
SharePoint Web application -

SPWebApplication webApplication =
SPContext.Current.Site.WebApplication;

using (SPSiteCollection
siteCollections = webApplication.Sites)
{

foreach (SPSite
siteCollection in siteCollections)
{
Label1.Text += siteCollection.Url +
"
";

siteCollection.Close();
}

}

Note : To runthe
above code reference the Microsoft.SharePoint.Administration.SPWebApplication
assembly in your code.

To return the collection of The all the Webs or
sites within a site collection, including the top-level site and all
subsites.

SPSite oSiteCollection =
SPContext.Current.Site;
using(SPWebCollection collWebsite =
oSiteCollection.AllWebs);
{

for (int i = 0; i < collWebsite.Count;
i++)
{
using (SPWeb oWebsite = collWebsite[i])
{
SPListCollection
collList = oWebsite.Lists;

for (int j = 0; j < collList.Count;
j++)
{
Label1.Text += SPEncode.HtmlEncode(collWebsite[i].Title) + " "
+
SPEncode.HtmlEncode(collList[j].Title) + "
";
}
}}}

To return
the all the subsites and lists of the current site

using (SPWeb oWebSite
= mySiteCollection.OpenWeb())
{

using(SPWebCollection subSites =
oWebsite.Webs)
{

foreach (SPWeb subSite in
subSites)
{
Label1.Text += SPEncode.HtmlEncode(subSite.Title) +
"
";

SPListCollection collList = subSite.Lists;

foreach (SPList
oList in collList)
{
Label1.Text += SPEncode.HtmlEncode(oList.Title) + " "
+
oList.ItemCount.ToString() + "
";

}subSite.Close();
}
}}