<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7871774925932891304</id><updated>2011-10-03T10:20:07.999-07:00</updated><category term='CSS'/><category term='dot net 2.0 features'/><category term='menu navigation'/><category term='Sharepoint'/><category term='membership'/><category term='roles'/><category term='sharepoint 2010 architecture'/><category term='Dot net 2.0'/><category term='CorelDraw'/><category term='Dot net'/><category term='provider model'/><category term='WSS'/><category term='InfoPath'/><title type='text'>Balan's Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://balanr.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871774925932891304/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://balanr.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>balan</name><uri>http://www.blogger.com/profile/15726184235090633722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://4.bp.blogspot.com/_UDvvdE81WwE/SjnOdXMjDtI/AAAAAAAAAMA/9fbAkJAkVFQ/S220/balan1.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7871774925932891304.post-8741554675795794992</id><published>2011-09-13T03:58:00.000-07:00</published><updated>2011-09-13T04:00:21.354-07:00</updated><title type='text'>SharePoint 2010 Search and FAST Search</title><content type='html'>&lt;div class="entrytitle"&gt;&lt;br /&gt;&lt;h1&gt;SharePoint 2010 Search and FAST Search&lt;/h1&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="entrybody"&gt;&lt;br /&gt;&lt;p&gt;Like many of you, I was (and in some cases) was very confused about how SharePoint 2010 Search and the new FAST Search for SharePoint worked when the FAST product was installed in a SharePoint environment. My understanding was that when FAST was installed, SharePoint Search ceased to exist. Turns out – that was wrong. Let’s first take a look at a SharePoint Search only scenario:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.social-point.com/wp-content/uploads/2010/04/SearchwithSPOnly.png"&gt;&lt;img title="Search with SP Only" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="218" alt="Search with SP Only" src="http://www.social-point.com/wp-content/uploads/2010/04/SearchwithSPOnly_thumb.png" width="414" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;So as you can see SharePoint Search indexed the content sources and the “people” directory to create a rich index and property database to be able to provide a rich Search experience. All of the goodness that has been added to Search in SharePoint 2010 is now available to the end user. While there has been a lot of enhancements to the new version of search, there still are some limitations that would drive someone to want to use FAST Search for SharePoint (more on that in another post). &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;So when FAST is added to the configuration, SharePoint Search is not removed from the configuration – they are actually sharing some of the roles. Take a look at this diagram:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.social-point.com/wp-content/uploads/2010/04/SearchwithSPandFAST.png"&gt;&lt;img title="Search with SP and FAST" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="311" alt="Search with SP and FAST" src="http://www.social-point.com/wp-content/uploads/2010/04/SearchwithSPandFAST_thumb.png" width="415" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Here you can see that SharePoint Search stays around to handle all search aspects of the People directory. FAST Search for SharePoint take point on indexing all all content. The secret sauce of providing a unified experience to the end user happens at the Query Object Model. It’s at this location where the 2 result sets are brought back together and ultimately delivered to the WFE and ultimately to the end user.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;So there your go – when you use FAST Search for SharePoint – you are actually using 2 different search technologies.&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871774925932891304-8741554675795794992?l=balanr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://balanr.blogspot.com/feeds/8741554675795794992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7871774925932891304&amp;postID=8741554675795794992' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871774925932891304/posts/default/8741554675795794992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871774925932891304/posts/default/8741554675795794992'/><link rel='alternate' type='text/html' href='http://balanr.blogspot.com/2011/09/sharepoint-2010-search-and-fast-search.html' title='SharePoint 2010 Search and FAST Search'/><author><name>balan</name><uri>http://www.blogger.com/profile/15726184235090633722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://4.bp.blogspot.com/_UDvvdE81WwE/SjnOdXMjDtI/AAAAAAAAAMA/9fbAkJAkVFQ/S220/balan1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871774925932891304.post-5232853818380630911</id><published>2011-03-29T23:13:00.000-07:00</published><updated>2011-03-29T23:29:37.476-07:00</updated><title type='text'></title><content type='html'>&lt;div class="header"&gt;&lt;br /&gt;&lt;h1 class="title"&gt;SharePoint 2010 Architectures Overview&lt;/h1&gt;&lt;br /&gt;&lt;div class="lw_vs"&gt;&lt;br /&gt;&lt;div id="curversion"&gt;&lt;strong&gt;SharePoint 2010&lt;/strong&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div id="mainSection"&gt;&lt;br /&gt;&lt;div id="mainBody"&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Published: February 2011&lt;/strong&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Summary:&lt;/strong&gt; Learn about the architectures of Microsoft SharePoint Foundation 2010 and Microsoft SharePoint Server 2010, including the platform stack, the Microsoft ASP.NET-IIS integrated request pipeline, the server and client object models, and the execution process system for &lt;em&gt;sandboxed solutions&lt;/em&gt; and &lt;em&gt;farm solutions&lt;/em&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Applies to:&lt;/strong&gt; Microsoft SharePoint Foundation 2010 Microsoft SharePoint Server 2010&lt;/p&gt;&lt;br /&gt;&lt;h1 class="heading"&gt;Overview of SharePoint Foundation and SharePoint Server Architectures&lt;/h1&gt;&lt;br /&gt;&lt;div id="section95" class="section"&gt;&lt;br /&gt;&lt;p&gt;This article provides an overview of the architectures of Microsoft SharePoint Foundation and SharePoint Server, including the platform stack, the Microsoft ASP.NET-IIS integrated request pipeline, the server and client object models, the execution process system for &lt;em&gt;sandboxed solutions&lt;/em&gt; and &lt;em&gt;farm solutions&lt;/em&gt;, and more.&lt;/p&gt;&lt;/div&gt;&lt;a id="SP14Architectures_whatissharepoint"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h1 class="heading"&gt;What Is SharePoint?&lt;/h1&gt;&lt;br /&gt;&lt;div id="section104" class="section"&gt;&lt;br /&gt;&lt;p&gt;The use of the plural term "architectures" in the title is not a mistake. SharePoint has many architectures, partly because "architecture" has many meanings in the context of software development, but also because SharePoint itself is many things—things that in the past would have been distinct applications or platforms.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The following is a selection of some of the most important things that SharePoint is:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;A portal server with delegated administration&lt;/strong&gt;. SharePoint enables information workers (IW) who have no knowledge of website design or website administration to create, almost instantly, attractive and functioning websites. This relieves information technology (IT) departments from the burden of creating and administering the sites, and it empowers the IWs to create their own sites for teams, blogs, wikis, and other purposes. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;A groupware application kit&lt;/strong&gt;. SharePoint provides a platform on which IWs can create collaboration solutions that include document libraries and workspaces, workflows, wikis, blogs, and team-oriented lists, such as Events, Announcements, and Tasks. Microsoft SharePoint Workspace (formerly Microsoft Office Groove 2007) provides an offline experience for these collaboration solutions. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;A workflow host&lt;/strong&gt;. Business processes can be systematized and modeled with workflows that are triggered by associated events; for example, the addition of a document to a document library. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;A content management application&lt;/strong&gt;. SharePoint Server Enterprise Content Management (ECM) features include document management, records management, and web content management. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;A Business Intelligence (BI) application kit&lt;/strong&gt;. The Microsoft Business Connectivity Services (BCS) features of SharePoint enable data from non-SharePoint sources, such as a SAP installation or Oracle database, to be accessed (read/write) just as if it were an ordinary SharePoint list. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;The operating system of an intranet&lt;/strong&gt;. SharePoint can provide for an intranet many of the functions that an operating system provides for a computer, including storing and copying files, hosting services, starting applications, and securing data. (This is not to imply that SharePoint can only be used on an intranet. SharePoint can also host extranet and Internet-facing solutions.) &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;A host for services&lt;/strong&gt;. SharePoint deployments make data available through a client object model, the REST-based Windows Communication Foundation (WCF) Data Services (formerly ADO.NET Data Services), and many out-of-the-box ASMX web services. In addition, the SharePoint Service Application Framework provides a platform that enables developers to build scalable middle-tier services that can provide data or processing resources to other SharePoint features. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;A data store&lt;/strong&gt;. SharePoint stores data as multicolumn lists in a Microsoft SQL Server database. You can query the data by using LINQ and also using Collaborative Application Markup Language (CAML). The data can be mirrored, backed up, restored, and, depending on the edition of SQL Server being used, you may be able to take snapshots of the data store. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;A data and processing layer for multiple user interfaces (UIs)&lt;/strong&gt;. Besides its native UI of webpages (including special versions for mobile devices), which can contain ECMAScript (JavaScript, JScript), SharePoint also supports access from Microsoft Silverlight applications and the Microsoft SharePoint Workspace client application. With the SharePoint client object model, you can access SharePoint using Windows Presentation Foundation (WPF), Windows Forms, or any other managed code application. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;This article discusses the architectures of SharePoint 2010 (with many links to more detailed information) in several senses, including the platform stack on which SharePoint runs, the configuration layers, the client and server object models, the services framework, the HTTP request pipeline, and the worker process system.&lt;/p&gt;&lt;/div&gt;&lt;a id="SP14Architectures_platformstack"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h1 class="heading"&gt;SharePoint Development Platform Stack&lt;/h1&gt;&lt;br /&gt;&lt;div id="section157" class="section"&gt;&lt;br /&gt;&lt;p&gt;Figure 1 shows how SharePoint Foundation is built on Microsoft .NET Framework 3.5, ASP.NET, and Internet Information Services (IIS). SharePoint is also built on SQL Server, but you can install SQL Server on a dedicated server that does not have SharePoint installed, which is typical in a production farm. All of these platforms must be running on a 64-bit installation of Windows Server 2008 on the server computers. SharePoint Server, in turn, is built on SharePoint Foundation. There are two editions of SharePoint Server: Standard and Enterprise.&lt;/p&gt;&lt;strong&gt;Figure 1. The platform stack for SharePoint development&lt;/strong&gt; &lt;img style="WIDTH: 661px; HEIGHT: 551px" id="a312800b-61c7-414c-8823-0efef4433490" title="Platform stack for SharePoint 2010" alt="Platform stack for SharePoint 2010" src="http://i.msdn.microsoft.com/dynimg/IC438440.gif" width="587" height="643" xmlns="" /&gt; &lt;br /&gt;&lt;p&gt;Perhaps the most noteworthy aspect of the figure is that IIS and ASP.NET are shown as a single platform. This is because SharePoint requires that IIS operate in integrated mode with ASP.NET. Hence, from a SharePoint point of view, they are effectively a single web-hosting application. For more information about this, see the next section, &lt;a href="http://www.blogger.com/post-create.g?blogID=7871774925932891304#BKMK_SPasASP_IIS"&gt;SharePoint as an ASP.NET-IIS Application&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In Figure 1, the smaller boxes that have no fill represent some selected subparts of the platform that contains them, or on which they depend. The two thin, downward-pointing arrows indicate some specific dependencies that are shown only as examples. Many other specific dependencies are not shown in the figure. The thick, left-pointing arrows indicate that the entity on the right side accesses the entity to which the arrow points. For example, BCS accesses external databases. &lt;/p&gt;&lt;/div&gt;&lt;a id="BKMK_SPasASP_IIS"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h1 class="heading"&gt;SharePoint as an ASP.NET-IIS Application&lt;/h1&gt;&lt;br /&gt;&lt;div id="section171" class="section"&gt;&lt;br /&gt;&lt;p&gt;As the &lt;a href="http://www.blogger.com/post-create.g?blogID=7871774925932891304#BKMK_HiLevelOM"&gt;High Level Object Model&lt;/a&gt; section later in this article shows in more detail, the highest level of organization in a SharePoint deployment, other than the farm itself, is the &lt;em&gt;web application&lt;/em&gt;. A &lt;em&gt;web application&lt;/em&gt; in SharePoint terminology is closely related to what is called a &lt;em&gt;website&lt;/em&gt; in IIS terminology. An IIS website monitors for incoming requests through a particular port, and it checks for a particular host header or IP address, or both. Every SharePoint Foundation web application is hosted in an IIS website that has the same name as the web application. It can be helpful, especially when you are trying to see the relation between SharePoint and IIS from a high and broad perspective, to think of the SharePoint web application and its corresponding IIS website as a single entity.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Nevertheless, the SharePoint web application and the IIS website are not quite the same thing (and they are represented by different classes in the SharePoint object model: the &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.administration.spwebapplication.aspx"&gt;SPWebApplication&lt;/a&gt; class and the &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.administration.spiiswebsite.aspx"&gt;SPIisWebSite&lt;/a&gt; class). For one thing, although there is usually a one-to-one relation between SharePoint web applications and IIS websites, this is not always the case. It is possible to extend a SharePoint web application to multiple IIS websites, although that is not a common design.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Figure 2 shows the IIS websites and application pools on a SharePoint Foundation front-end web server.&lt;/p&gt;&lt;strong&gt;Figure 2. IIS Manager on a SharePoint Foundation front-end web server&lt;/strong&gt; &lt;img id="3ec191a6-704b-4d26-a451-93c06388638c" title="IIS showing websites and application pools" alt="IIS showing websites and application pools" src="http://i.msdn.microsoft.com/dynimg/IC438938.gif" width="675" height="442" xmlns="" /&gt; &lt;br /&gt;&lt;p&gt;Just as in any application that is built on the ASP.NET-IIS integrated pipeline, when a front-end web server receives a request from a client for a page or other resource in a SharePoint site, the request is passed through a pipeline of units that process the request. This processing includes authenticating the user, verifying the user’s authorization, building the response, sending the response, and finally, logging the request. For more information about the integrated pipeline, see &lt;a href="http://learn.iis.net/page.aspx/243/aspnet-integration-with-iis-7/"&gt;ASP.NET Integration with IIS 7&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The response to any request is produced by an &lt;a href="http://msdn.microsoft.com/en-in/library/ms227675.aspx"&gt;HTTP handler&lt;/a&gt; object. Requests are assigned to one or another HTTP handler object (or to a handler factory class that creates HTTP handler objects) depending on the resource requested and the HTTP verb in the request. The assignment is determined by a stack of configuration files named applicationhost.config, machine.config, and web.config.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The request pipeline also contains &lt;a href="http://msdn.microsoft.com/en-in/library/ms178468.aspx"&gt;HTTP modules&lt;/a&gt;. Modules are assemblies that typically contain one or more event handlers or define new events that other modules can handle. An HTTP module can register for one or more events in the life cycle of the request. They are often used to preprocess requests or postprocess the response. The result of a module’s preprocessing is stored in the &lt;a href="http://msdn.microsoft.com/en-in/library/system.web.httpcontext.aspx"&gt;HttpContext&lt;/a&gt; object. For example, the value of the &lt;a href="http://msdn.microsoft.com/en-in/library/system.web.httpcontext.user.aspx"&gt;User&lt;/a&gt; property is produced by an authentication module.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The processing of a request by HTTP modules and an HTTP handler is governed by an &lt;a href="http://msdn.microsoft.com/en-in/library/system.web.httpapplication.aspx"&gt;HttpApplication&lt;/a&gt; object or an object derived from that class. SharePoint installs a global.asax file in the root of each web application (IIS website) that identifies &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.applicationruntime.sphttpapplication.aspx"&gt;SPHttpApplication&lt;/a&gt; as the class from which an HTTP application object is created.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;SharePoint also modifies the pipeline with a custom HTTP module (&lt;strong&gt;SPRequestModule&lt;/strong&gt;), and with changes to the default applicationhost.config file. For detailed information about SharePoint and the integrated pipeline, see &lt;a href="http://msdn.microsoft.com/en-in/library/ee537834.aspx"&gt;Microsoft SharePoint Foundation as an ASP.NET Application&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Figure 3 shows the relations among the classes that handle HTTP requests for a SharePoint front-end web server.&lt;/p&gt;&lt;strong&gt;Figure 3. SharePoint customizations of the HTTP request pipeline&lt;/strong&gt; &lt;img id="2b2f23d9-796a-4827-9f3c-61319e7227ea" title="Classes that handle requests in SharePoint" alt="Classes that handle requests in SharePoint" src="http://i.msdn.microsoft.com/dynimg/IC464711.gif" width="658" height="263" xmlns="" /&gt; &lt;br /&gt;&lt;p&gt;In addition to its use of the integrated pipeline, SharePoint uses some other features of IIS and technologies from ASP.NET. Among them are the following:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;Active pages (aspx files)&lt;/strong&gt;: SharePoint pages are ASP.NET pages. SharePoint controls are referenced in the page markup with a registered "SharePoint" prefix. (For more information about the ASP.NET page parsing and compiling system, see &lt;a href="http://msdn.microsoft.com/en-in/library/ms366723.aspx"&gt;Understanding ASP.NET Dynamic Compilation&lt;/a&gt;. Note that the standard page parser of ASP.NET compiles a page the first time it is requested unless the page is explicitly set not to be compiled. However, SharePoint pages that have been customized by a SharePoint website owner are stored in the SharePoint content database and are not compiled when they are accessed. SharePoint uses a custom virtual path provider, an internal class named &lt;strong&gt;SPVirtualPathProvider&lt;/strong&gt; that is derived from &lt;a href="http://msdn.microsoft.com/en-in/library/system.web.hosting.virtualpathprovider.aspx"&gt;VirtualPathProvider&lt;/a&gt;, to locate a requested page from either the file system or the content database and load it. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;The master page/content page distinction&lt;/strong&gt;: A SharePoint page is a merger of a master page and a content page. For more information, see &lt;a href="http://msdn.microsoft.com/en-in/library/wtxbf3hh.aspx"&gt;ASP.NET Master Pages&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-in/library/ms443795.aspx"&gt;Master Pages&lt;/a&gt;. (For some SharePoint Server pages, a third foundational page is involved in the merger, a page layout.) &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;Web Parts&lt;/strong&gt;: Web Parts actually originated in an early version of SharePoint. The idea was adopted by ASP.NET. In most SharePoint Web Part development situations, we recommend that you use the ASP.NET version, but in some situations the original SharePoint incarnation is a better choice. The SharePoint UI for mobile devices also uses the ASP.NET concept of registered Web Part adapters. For more information about Web Parts in SharePoint, see &lt;a href="http://msdn.microsoft.com/en-in/library/ee535520.aspx"&gt;Building Block: Web Parts&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-in/library/ee536690.aspx"&gt;Building Block: Mobile Pages, Controls, and Adapters&lt;/a&gt;. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;User controls (.ascx files)&lt;/strong&gt;: Many SharePoint web controls and Web Parts are built with ASP.NET user controls. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;Web services (.asmx files)&lt;/strong&gt;: Some, but not all, SharePoint web services are implemented as ASP.NET ASMX services. For more information about ASP.NET web services in SharePoint, see &lt;a href="http://msdn.microsoft.com/en-in/library/aa979690.aspx"&gt;ASP.NET Web Services&lt;/a&gt;. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;Virtual directories&lt;/strong&gt;: SharePoint maps several virtual directories in each IIS website to physical folders in the SharePoint root, which is the folder %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\. When you as a developer need to provision SharePoint web applications with images, resource files, and other important files, they are deployed to the appropriate physical folder on the front-end web servers. This process is handled automatically by the solution deployment mechanism of SharePoint. For example, user controls are deployed to %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\ControlTemplates (or a subfolder), which is mapped to the virtual directory _controltemplates. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;ASP.NET development experience can be an advantage for a SharePoint developer, but the SharePoint development experience is different from the ASP.NET experience in many ways. Some examples of the differences are as follows:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li class="unordered"&gt;SharePoint has its own installation and deployment model. For more information, see &lt;a href="http://www.blogger.com/post-create.g?blogID=7871774925932891304#BKMK_DeploymentModel"&gt;SharePoint Deployment Models&lt;/a&gt; later in this article. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;SharePoint makes a distinction, unknown in ASP.NET, between application pages and site pages. For more information, see &lt;a href="http://www.blogger.com/post-create.g?blogID=7871774925932891304#BKMK_PagesUI"&gt;Pages, Parsing, and Safe Mode&lt;/a&gt; later in this article. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;SharePoint has its own systems for modifying web.config files. For more information, see &lt;a href="http://msdn.microsoft.com/en-in/library/ms460914.aspx"&gt;Working with Web.config Files&lt;/a&gt;. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;The ASP.NET worker process model is modified in SharePoint. See &lt;a href="http://www.blogger.com/post-create.g?blogID=7871774925932891304#BKMK_ExecutionModel"&gt;Process and Execution Trust Model&lt;/a&gt; later in this article. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;For more information about how SharePoint development differs from ASP.NET development, see &lt;a href="http://msdn.microsoft.com/en-in/library/ee536974.aspx"&gt;ASP.NET vs. SharePoint: How Development Differs&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;a id="SP14Architectures_Configstack"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h1 class="heading"&gt;SharePoint Configuration Stack&lt;/h1&gt;&lt;br /&gt;&lt;div id="section277" class="section"&gt;&lt;br /&gt;&lt;p&gt;SharePoint configuration settings exist at several levels. As in all ASP.NET applications that use the integrated pipeline, some fundamental settings are in the machine.config file, the global web.config file, and the applicationhost.config file, which is the IIS configuration store. SharePoint makes no changes in the default versions of the first two files. It does make some changes in the IIS configuration store. For more information about the changes, see &lt;a href="http://msdn.microsoft.com/en-in/library/ee537834.aspx"&gt;Microsoft SharePoint Foundation as an ASP.NET Application&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Each IIS website and, therefore, each SharePoint web application, can have a web.config file in its root folder. This file is substantially customized by SharePoint whenever a SharePoint web application is created. For more information about the changes, see &lt;a href="http://msdn.microsoft.com/en-in/library/ee537834.aspx"&gt;Microsoft SharePoint Foundation as an ASP.NET Application&lt;/a&gt;. SharePoint also takes advantage of the fact that web.config files can be applied to specific virtual or physical folders within a web application. For example, SharePoint puts a web.config file in the virtual directory _layouts\mobile (which is mapped to the physical directory %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS\MOBILE\). Among other things, the web.config file registers a series of filters that control how a page is rendered, based on the capabilities of the mobile device that has requested the page.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;All of the configuration files discussed so far must be identical across all front-end web servers. The SharePoint deployment model and its system for programmatically modifying web.config files helps ensure conformity to this rule. For more information, see &lt;a href="http://msdn.microsoft.com/en-in/library/ee537008.aspx"&gt;Building Block: Solutions&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-in/library/ms460914.aspx"&gt;Working with Web.config Files&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Farm-wide configuration settings are stored in the SharePoint configuration database on the computer that is running SQL Server in the farm. Configuration for specific types of websites is contained in various kinds of XML files, such as the Onet.xml file, and configuration for specific instances of websites is contained in the content database. In addition, several classes in the SharePoint object model have property bags that can be used to store custom configuration information for specific objects, such as objects that represent websites, Features, alerts, and files.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Finally, context information for specific HTTP requests is contained in the ASP.NET &lt;strong&gt;HttpContext&lt;/strong&gt; object of the request. The SharePoint object model adds an &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.spcontext.aspx"&gt;SPContext&lt;/a&gt; class that does not inherit &lt;strong&gt;HttpContext&lt;/strong&gt;; however, it gets many of its property values from the current &lt;strong&gt;HttpContext&lt;/strong&gt; object and adds other properties to represent SharePoint-specific context information, such as the current website, list, and list item.&lt;/p&gt;&lt;/div&gt;&lt;a id="BKMK_DeploymentModel"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h1 class="heading"&gt;SharePoint Deployment Models&lt;/h1&gt;&lt;br /&gt;&lt;div id="section297" class="section"&gt;&lt;br /&gt;&lt;p&gt;SharePoint solutions are generally &lt;em&gt;not&lt;/em&gt; installed by using MSI or ClickOnce technology. (Some exceptions are noted later.) SharePoint has its own installation system. Instead of MSI files, the solutions are packaged in SharePoint solution package files. These are CAB files that have a special extension: .wsp. SharePoint solution package files can contain several kinds of elements, including assemblies, user controls, custom ASP.NET pages, XML configuration files, resource files, images, list definitions, Web Parts, Features, and others. ECMAScript files and Silverlight .xap files can also be deployed to the servers by using SharePoint Solution Packages.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;There are two kinds of &lt;em&gt;solutions&lt;/em&gt; in SharePoint: &lt;em&gt;farm solutions&lt;/em&gt; and &lt;em&gt;sandboxed solutions&lt;/em&gt;. The differences between them are discussed in this section and in &lt;a href="http://www.blogger.com/post-create.g?blogID=7871774925932891304#BKMK_WorkerProcess"&gt;Worker Processes, Farm Solutions, and Sandboxed Solutions&lt;/a&gt; later in this article.&lt;/p&gt;&lt;br /&gt;&lt;div class="alert"&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;th align="left"&gt;&lt;img id="note" class="cl_IC101471" title="note" alt="note" src="http://i.msdn.microsoft.com/Hash/030c41d9079671d09a62d8e2c1db6973.gif" xmlns="" /&gt; &lt;strong&gt;Note: &lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;The terms "solution" and "feature" are familiar in software development. The first thing to note about the SharePoint deployment model is that these terms are names of formal components of SharePoint that are defined in this section. By convention, "Feature" is capitalized when it refers to the SharePoint component of that name. Throughout this article, I will follow the additional convention of italicizing "farm solution," "sandboxed solution," and "solution" when the SharePoint component is being referenced. When either "solution" or "feature" is lowercase and not italic, it is being used in its ordinary sense. &lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Installation of a SharePoint solution package is a multi-step process:&lt;/p&gt;&lt;br /&gt;&lt;ol class="ordered"&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Adding&lt;/strong&gt;: A &lt;em&gt;solution&lt;/em&gt; package file is added to one of two stores. &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;em&gt;Farm solutions&lt;/em&gt; are deployed by farm administrators to the farm's &lt;em&gt;solution&lt;/em&gt; store, which is in the farm's configuration database. This is done by using either the SharePoint Management Shell or the object model. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;em&gt;Sandboxed solutions&lt;/em&gt; are deployed to a specific site collection's &lt;strong&gt;Solution Gallery&lt;/strong&gt; by a site collection administrator. The gallery is a special SharePoint list, so it is in the content database. &lt;em&gt;Solution&lt;/em&gt; deployment to the gallery is done through the &lt;strong&gt;Site Actions&lt;/strong&gt; UI of the site collection or by using SharePoint Management Shell. For information about the difference between site collections and websites, see &lt;a href="http://www.blogger.com/post-create.g?blogID=7871774925932891304#BKMK_MiddleOM"&gt;Middle Level Object Model&lt;/a&gt; later in this article. &lt;/li&gt;&lt;/ul&gt;Thus, SharePoint Solution Package files are never installed to the file system of any server, although elements of a &lt;em&gt;farm solution&lt;/em&gt; may be installed to the file system when the &lt;em&gt;solution&lt;/em&gt; is deployed. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Deploying&lt;/strong&gt;: The &lt;em&gt;solution&lt;/em&gt; package is unpacked and its elements are deployed to their appropriate places. &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li class="unordered"&gt;For a &lt;em&gt;farm solution&lt;/em&gt;, this step also requires a farm administrator and can be done by using either Central Administration or SharePoint Management Shell, or the object model. Some examples of how elements are deployed: user control files (.ascx) are copied to %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\ControlTemplates and assemblies are deployed to the global assembly cache or to a web application's &lt;code&gt;\bin&lt;/code&gt; folder. If there are SharePoint Features (defined later) in the &lt;em&gt;farm solution&lt;/em&gt;, they are in this step copied to a subfolder of %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\FEATURES. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;For &lt;em&gt;sandboxed solutions&lt;/em&gt;, the deployment step is taken by a site collection administrator. There are limits on what kinds of elements can be in &lt;em&gt;sandboxed solutions&lt;/em&gt; and where they can be deployed. For example, nothing can be deployed to the file system of the servers from a &lt;em&gt;sandboxed solution&lt;/em&gt;. Features in &lt;em&gt;sandboxed solutions&lt;/em&gt; are deployed to the content database. &lt;/li&gt;&lt;/ul&gt;It is also in this second step that any Features in the &lt;em&gt;solution&lt;/em&gt; are installed in the &lt;strong&gt;Feature Gallery&lt;/strong&gt; of the farm, web application, site collection, or website, depending on the scope of the Feature. (For more information about the relations of farm, web applications, site collections, and websites to one another, see &lt;a href="http://www.blogger.com/post-create.g?blogID=7871774925932891304#BKMK_ContentHierarchy"&gt;Content Hierarchy&lt;/a&gt; later in this article.) &lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;p&gt;Within a SharePoint solution package, there can be an additional level of encapsulation because a &lt;em&gt;solution&lt;/em&gt; can have one or more SharePoint Features. A Feature can be installed at the scope of the farm, the web application, the site collection, or the website. After it is installed, a Feature must be activated by owners of any website within the scope; so &lt;strong&gt;Activating&lt;/strong&gt; becomes a third step of installation for Features. Features can contain content types, controls, custom actions, custom fields, files, workflows, list instances, list templates, event receivers, and document converters; although some of these cannot be included in certain scopes. (Features that are deployed in &lt;em&gt;sandboxed solutions&lt;/em&gt; can be scoped only to a site collection or website. For site collection-scoped features in &lt;em&gt;sandboxed solutions&lt;/em&gt;, the second and third steps are combined. The Features are activated when the &lt;em&gt;solution&lt;/em&gt; is deployed &lt;/p&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;th align="left"&gt;&lt;img id="note" class="cl_IC101471" title="note" alt="note" src="http://i.msdn.microsoft.com/Hash/030c41d9079671d09a62d8e2c1db6973.gif" xmlns="" /&gt; &lt;strong&gt;Note: &lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;SharePoint is not consistent in its terminology with regard to installation. The terms &lt;em&gt;adding&lt;/em&gt;, &lt;em&gt;deploying&lt;/em&gt;, and &lt;em&gt;activating&lt;/em&gt; are the most frequently used to refer to the three steps of installation; but depending on what tool is used to complete a step and whether the &lt;em&gt;solution&lt;/em&gt; is farm or sandboxed, you will see a variety of terminology. The first step may be called &lt;em&gt;adding&lt;/em&gt;, &lt;em&gt;installing&lt;/em&gt;, or &lt;em&gt;uploading&lt;/em&gt;. The second step may be called &lt;em&gt;deploying&lt;/em&gt;, &lt;em&gt;activating&lt;/em&gt; or &lt;em&gt;installing&lt;/em&gt;. There is a similar inconsistency in the terms for reversing these steps; but most commonly, reversing the second step is called &lt;em&gt;retracting&lt;/em&gt; and reversing the first step is called &lt;em&gt;removing&lt;/em&gt;. The third step, which applies only to Features, is always called &lt;em&gt;activating&lt;/em&gt;, and its reversal is always called &lt;em&gt;deactivating&lt;/em&gt;. &lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Some SharePoint solutions target one of the client object models, either exclusively or in addition to targeting the server object model: the ECMAScript, Silverlight, and Microsoft .NET Framework client object models. (For more information about the client object models, see &lt;a href="http://www.blogger.com/post-create.g?blogID=7871774925932891304#BKMK_ClientOM"&gt;Client Object Models in SharePoint&lt;/a&gt; later in this article.) There is nothing unusual about the installation of the client portion of such solutions.&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li class="unordered"&gt;The script files that define the ECMAScript object model are downloaded to a client computer when a page that references them is opened. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;Similarly, a Silverlight .xap executable is downloaded to the client computer when a page that is hosting it is accessed. The SharePoint assemblies that contain the Silverlight client object model are encased in the .xap file. Those assemblies are &lt;code&gt;Microsoft.SharePoint.Client.Silverlight.dll&lt;/code&gt; and &lt;code&gt;Microsoft.SharePoint.Client.Silverlight.Runtime.dll&lt;/code&gt;. (It is also possible to cache these assemblies on the front-end web server. For details, see &lt;a href="http://msdn.microsoft.com/en-in/library/ff798413.aspx"&gt;RIA Technologies: Benefits, Tradeoffs, and Considerations&lt;/a&gt;.) &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;Stand-alone .NET Framework applications (such as a WPF application) that target the SharePoint client object model are installed just as any other client applications: using MSI files or ClickOnce. The assemblies that contain this client object model, &lt;code&gt;Microsoft.SharePoint.Client.dll&lt;/code&gt; and &lt;code&gt;Microsoft.SharePoint.Client.Runtime.dll&lt;/code&gt;, must be distributed as part of the solution. The redistributable is located at &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&amp;amp;FamilyID=b4579045-b183-4ed4-bf61-dc2f0deabe47"&gt;SharePoint Foundation 2010 Client Object Model Redistributable&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;For more information about the processing of client-side logic in SharePoint, see &lt;a href="http://msdn.microsoft.com/en-in/library/ff798452.aspx"&gt;Client Application Models in SharePoint 2010&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;For more information about the deployment system, see &lt;a href="http://msdn.microsoft.com/en-in/library/ee537350.aspx"&gt;Building Block: Features&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-in/library/ee537008.aspx"&gt;Building Block: Solutions&lt;/a&gt;, and &lt;a href="http://msdn.microsoft.com/en-in/library/ee539979.aspx"&gt;Packaging and Deployment&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;a id="BKMK_ExecutionModel"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h1 class="heading"&gt;Process and Execution Trust Model&lt;/h1&gt;&lt;br /&gt;&lt;div id="section469" class="section"&gt;&lt;br /&gt;&lt;p&gt;In the simplest scenarios, the process model of SharePoint is the same as any other ASP.NET application; but in SharePoint, the distinction between &lt;em&gt;farm solutions&lt;/em&gt; and &lt;em&gt;sandboxed solutions&lt;/em&gt; entails some more complex scenarios.&lt;/p&gt;&lt;a id="BKMK_WorkerProcess"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4 class="subHeading"&gt;Worker Processes, Farm Solutions, and Sandboxed Solutions&lt;/h4&gt;&lt;br /&gt;&lt;div class="subSection"&gt;&lt;br /&gt;&lt;p&gt;When an HTTP request is received by a front-end web server, a special driver, &lt;code&gt;HTTP.SYS&lt;/code&gt;, detects the request and routes it to the application pool that is handling requests for the targeted IIS website, and thus, the targeted SharePoint web application. Every application pool has an IIS worker process (w3wp.exe) in which the request pipeline for each request is executed. (For more information about the IIS 7.0 worker processes and application pools, see &lt;a href="http://learn.iis.net/page.aspx/101/introduction-to-iis-7-architecture/"&gt;Introduction to IIS 7 Architecture&lt;/a&gt;.) On a SharePoint server, the IIS worker process runs in the application pool account, which gives the process read and write permissions to SharePoint resources. On a multiserver farm, the application pool account is a domain user that is not a machine administrator on any server in the farm, but is a member of the WSS_WPG, WSS_ADMIN_WPG, and IIS_USERS groups on each server. (This should be a different account from the farm administration account. The latter is also not a local machine administrator on any farm server. The farm account is a member of all the same groups as the application pool account and also the WSS_RESTRICTED_WPG_V4 and Performance Monitor User groups. An exception is made for the application pool of the Central Administration web application: its application pool account &lt;em&gt;is&lt;/em&gt; the farm account. Also, the SharePoint 2010 Timer Service executes in the context of the farm account.) For more information about the accounts needed in a SharePoint farm, see &lt;a href="http://technet.microsoft.com/en-us/library/cc263445(office.12).aspx"&gt;Plan for administrative and service accounts (Office SharePoint Server)&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Figure 4 shows how an IIS worker process that is running on a front-end web server processes an HTTP request.&lt;/p&gt;&lt;strong&gt;Figure 4. Request processing model for full-trust farm solution&lt;/strong&gt; &lt;img id="614244e6-54fa-496a-8cb8-0a888b9d542f" title="Process model for full-trust farm solutions" alt="Process model for full-trust farm solutions" src="http://i.msdn.microsoft.com/dynimg/IC464712.gif" xmlns="" /&gt; &lt;br /&gt;&lt;p&gt;However, unlike a standard ASP.NET application, SharePoint makes a distinction between &lt;em&gt;sandboxed solutions&lt;/em&gt; and &lt;em&gt;farm solutions&lt;/em&gt;. &lt;em&gt;Farm solutions&lt;/em&gt; run in the IIS worker process just like any ASP.NET application. &lt;em&gt;Sandboxed solutions&lt;/em&gt; run in a specially restricted execution environment. This is necessary because &lt;em&gt;sandboxed solutions&lt;/em&gt; are installed on (and scoped to) SharePoint site collections without the intervention of the IT professionals that are managing the SharePoint farm. To prevent rogue or poorly performing code from slowing or crashing the application pool, SharePoint imposes restrictions on what the code in a &lt;em&gt;sandboxed solution&lt;/em&gt; can do. As a crucial part of the implementation of this system, &lt;em&gt;sandboxed solutions&lt;/em&gt; must run in a special sandboxed worker process (SPUCWorkerProcess.exe).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;When a request attempts to access a &lt;em&gt;sandboxed solution&lt;/em&gt;, a SharePoint execution manager that runs in the IIS worker process finds a sandbox worker process (or starts one, if none is running) in which the code of the &lt;em&gt;sandboxed solution&lt;/em&gt; will run. In principal, this sandboxed worker process can be started on any server in the farm that is running the SharePoint 2010 User Code Host service (SPUCHostService.exe). (In the UI of the Central Administration application, this is known as the Microsoft SharePoint Foundation Sandboxed Code Service.)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The server that is running the SharePoint 2010 User Code Host service can be, but does not have to be, the front-end web server on which the IIS worker process is running. Which server is used is configurable in the Central Administration application: Administrators can choose to have each sandboxed process run in "local mode," which means that each request for a &lt;em&gt;sandboxed solution&lt;/em&gt; is processed on the same front-end web server on which the IIS worker process is running; or they can have the execution manager start each sandboxed process in "remote mode," also known as "affinity mode." In affinity mode, the execution manager looks for a server that is running the SharePoint 2010 User Code Host service and which already has created an application domain inside its SPUCWorkerProcess.exe process for the very same &lt;em&gt;sandboxed solution&lt;/em&gt;. (This would be the case if that same &lt;em&gt;sandboxed solution&lt;/em&gt; was requested before, possibly by another user on another site collection.) If there is a matching application domain, the request is sent to that same application domain for handling. If none of the servers that are running the SharePoint 2010 User Code Host service already has an application domain for the &lt;em&gt;sandboxed solution&lt;/em&gt;, the execution manager assigns the request to the least busy of those servers. The server then creates the needed application domain and processes the request for the &lt;em&gt;sandboxed solution&lt;/em&gt;. The application domain stays alive after the request is processed and is reused if there is another request for the same &lt;em&gt;sandboxed solution&lt;/em&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;By default, all &lt;em&gt;sandboxed solutions&lt;/em&gt; that are handled by a given server run in the same sandbox worker process, but this is configurable through the object model. Each &lt;em&gt;sandboxed solution&lt;/em&gt; gets its own application domain within the common process, and this, too, is configurable through the object model. The SharePoint 2010 User Code Host service runs in an account that has the same rights as a typical application pool account. It should be a member of the WSS_WPG, WSS_ADMIN_WPG, and IIS_USERS groups on the server on which the service instance is running.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Code Execution and Access Constraints on Sandboxed Solutions&lt;/strong&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;All code that runs in this sandbox worker process is subject to execution and access constraints. There are two systems of constraints: One applies to all and only calls to any assembly, &lt;em&gt;except Microsoft.SharePoint.dll&lt;/em&gt;, whether it is a SharePoint assembly or not. The other applies to all and only calls made to the parts of the SharePoint Foundation object model that are in the assembly Microsoft.SharePoint.dll. The calls that this second system applies to are not just calls in custom SharePoint solutions. Calls to Microsoft.SharePoint.dll from other SharePoint assemblies (that have themselves been called by custom code) such as Microsoft.SharePoint.Linq.dll are also subject to this constraint.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The first system of is imposed by two mechanisms:&lt;/p&gt;&lt;br /&gt;&lt;ol class="ordered"&gt;&lt;br /&gt;&lt;li&gt;A highly restrictive code access security (CAS) policy significantly limits what code in the sandboxed worker process can do. This policy is defined in the wss_usercode.config file in %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\CONFIG, and it is referenced in the web.config file in %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\UserCode. Among the restrictions imposed by the CAS policy are the following: &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li class="unordered"&gt;Code in the sandbox cannot call unmanaged code. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;Code in the sandbox cannot call the Microsoft .NET Framework 3.5 reflection APIs. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;Code in the sandbox can call only the .NET Framework 3.5 assemblies that have the &lt;a href="http://msdn.microsoft.com/en-in/library/system.security.allowpartiallytrustedcallersattribute.aspx"&gt;AllowPartiallyTrustedCallersAttribute&lt;/a&gt; attribute. This blocks access to about two-thirds of all the .NET Framework 3.5 APIs, including &lt;a href="http://msdn.microsoft.com/en-in/library/system.printing.aspx"&gt;System.Printing&lt;/a&gt;, for example. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div class="alert"&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Secondly, the sandboxed worker process has a low-privileged security token. &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li class="unordered"&gt;The token denies the process the right to read from or write to the file system. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;The token denies the process the right to call to the network. Therefore, only resources available on the server that is running the sandboxed worker process may be accessed. An external database, for example, cannot be accessed. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;The token denies the process the right to write to the registry. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;The token denies the right to call to any assembly that is not in the general assembly cache, even if it has the &lt;strong&gt;AllowPartiallyTrustedCallersAttribute&lt;/strong&gt; attribute and would otherwise be eligible to be called from the sandboxed worker process. &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;p&gt;As noted, a second system of constraints imposes restrictions on what APIs in Microsoft.SharePoint.dll can be directly called by code in the sandboxed worker process, and a call to any forbidden API in the object model results in an exception (which is caught and reported to the user as an error). The implementation of these restrictions is accomplished by a pair of specially restricted versions of the &lt;code&gt;Microsoft.SharePoint.dll&lt;/code&gt; assembly, sometimes called &lt;em&gt;shim&lt;/em&gt; assemblies, that are located in %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\UserCode\assemblies. One of the two assemblies is loaded by the sandboxed worker process. The other assembly is loaded in a special proxy process (&lt;code&gt;SPUCWorkerProcessProxy.exe&lt;/code&gt;) that runs in full trust and that is also managed by the SharePoint 2010 User Code Host. The standard &lt;code&gt;Microsoft.SharePoint.dll&lt;/code&gt; assembly is also loaded in this proxy process.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The main job of the two shim assemblies is to filter out forbidden SharePoint classes and members. When the &lt;em&gt;sandboxed solution&lt;/em&gt; calls an approved API, the first shim assembly passes it to the second in the proxy process, which in turn passes it to the standard &lt;code&gt;Microsoft.SharePoint.dll&lt;/code&gt;. Any returned results are passed back to the original calling code. This cross-process interaction is possible through &lt;a href="http://msdn.microsoft.com/en-in/library/kwdt6w2k.aspx"&gt;.NET Framework remoting&lt;/a&gt;. A sandboxed worker process and a full-trust proxy process are always started together and paired with one another. If either process crashes, the other is also stopped. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;The shim assemblies also have a secondary job. Some SharePoint APIs are available to &lt;em&gt;sandboxed solutions&lt;/em&gt;, but only with special restrictions on the parameters that are passed to them. It is the shim assemblies that enforce these input restrictions and ensure that an exception is thrown when there is a violation. The only case of this in SharePoint Foundation 2010 are the &lt;a href="http://msdn.microsoft.com/en-in/library/ms466911.aspx"&gt;SPSite&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-in/library/ms432450.aspx"&gt;SPSite&lt;/a&gt; constructors. These constructors can be called in &lt;em&gt;sandboxed solutions&lt;/em&gt;, but only URLs or GUIDs that refer to the site collection in which the &lt;em&gt;sandboxed solution&lt;/em&gt; is running can be passed to them. &lt;/p&gt;&lt;br /&gt;&lt;div class="alert"&gt;&lt;br /&gt;&lt;p&gt;The following are some of the restrictions on the SharePoint object model that can be accessed &lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li class="unordered"&gt;The &lt;strong&gt;SPWebApplication&lt;/strong&gt; class cannot be accessed. Among other things, this means that a &lt;em&gt;sandboxed solution&lt;/em&gt; cannot access anything outside its hosting site collection. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;Almost all classes in the &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.webcontrols.aspx"&gt;Microsoft.SharePoint.WebControls&lt;/a&gt; namespace cannot be accessed, which means that you are mainly restricted to ASP.NET controls in &lt;em&gt;sandboxed solutions&lt;/em&gt;. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;For a complete list of APIs in Microsoft.SharePoint.dll that are available to &lt;em&gt;sandboxed solutions&lt;/em&gt;, see &lt;a href="http://msdn.microsoft.com/en-in/library/ee537860.aspx"&gt;Microsoft.SharePoint.dll APIs Available from Sandboxed Solutions&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;div class="alert"&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;th align="left"&gt;&lt;img id="Important" class="cl_IC160177" title="Important" alt="Important" src="http://i.msdn.microsoft.com/Hash/030c41d9079671d09a62d8e2c1db6973.gif" xmlns="" /&gt; &lt;strong&gt;Important: &lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;The deployment stage of a sandboxed solution itself runs in a sandboxed worker process and is subject to the same execution constraints. For example, you cannot deploy a file to the disk when you are deploying a sandboxed solution. This is the main reason why a user control (ASCX file) cannot be in a sandboxed solution. See &lt;a href="http://www.blogger.com/post-create.g?blogID=7871774925932891304#BKMK_DeploymentModel"&gt;SharePoint Deployment Models&lt;/a&gt; for information about the deployment stage. &lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Resource Usage Restrictions on Sandboxed Solutions&lt;/strong&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;Sandboxed solutions&lt;/em&gt; are also subject to three kinds of resource usage restrictions that can be organized based on the kind of entity to which the restriction applies and the kind of entity on which the penalty for exceeding the restriction is imposed.&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;Per Request with the Request Penalized:&lt;/strong&gt; There is a hard limit to how long a &lt;em&gt;sandboxed solution&lt;/em&gt; can take to finish. By default, this is 30 seconds. If a &lt;em&gt;sandboxed solution&lt;/em&gt; exceeds the limit, the request (but not the sandboxed worker process) is terminated. (This limit is configurable, but only through custom code against the object model. The relevant parts of the object model cannot be accessed by &lt;em&gt;sandboxed solutions&lt;/em&gt;, so no &lt;em&gt;sandboxed solution&lt;/em&gt; can change the limit.) &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;Per Request with the Process Penalized:&lt;/strong&gt; A set of 15 resource limits apply to requests. If a request exceeds one of them, the process (and &lt;em&gt;all&lt;/em&gt; the &lt;em&gt;sandboxed solutions&lt;/em&gt; that are running in it) is terminated. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;Per Day/Per Site Collection with the Site Collection Penalized:&lt;/strong&gt; Each site collection is subject to a configurable maximum of daily &lt;em&gt;resource points&lt;/em&gt;. These points accumulate based on an algorithm that takes into account the use of resources in the 15 resource categories by the &lt;em&gt;sandboxed solutions&lt;/em&gt; that are installed in the site collection. When a site collection exceeds its maximum allowed points, all &lt;em&gt;sandboxed solutions&lt;/em&gt; in the site collection are terminated and no more can run for the rest of the day. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;SharePoint provides a &lt;em&gt;solution&lt;/em&gt; validator framework that can be used to develop custom &lt;em&gt;solution&lt;/em&gt; validators, such as a validator that verifies whether a &lt;em&gt;solution&lt;/em&gt; is signed with a specific certificate. The validators in a site collection run when a &lt;em&gt;sandboxed solution&lt;/em&gt; is activated (that is, deployed, in the terminology used earlier in this article). The activation of any invalid &lt;em&gt;solution&lt;/em&gt; is blocked. If a validator is updated or a new validator is added, each activated &lt;em&gt;solution&lt;/em&gt; is rechecked by the validators the next time it is executed. Invalid &lt;em&gt;solutions&lt;/em&gt; are deactivated. For an introduction to custom validators, see &lt;a href="http://msdn.microsoft.com/en-us/magazine/ee335711.aspx"&gt;Developing, Deploying, and Monitoring Sandboxed Solutions in SharePoint 2010&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;For more information about the sandbox restrictions, see &lt;a href="http://msdn.microsoft.com/en-in/library/ee536577.aspx"&gt;Sandboxed Solutions&lt;/a&gt; and its child topics and the &lt;a href="http://msdn.microsoft.com/en-in/library/ff798382.aspx"&gt;Microsoft patterns and practices guidelines for Sandboxed Solutions&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Figure 5 shows how an HTTP request is handled when it accesses a &lt;em&gt;sandboxed solution&lt;/em&gt;. &lt;/p&gt;&lt;strong&gt;Figure 5. Request processing model for sandboxed solutions&lt;/strong&gt; &lt;img id="323a5d7f-64eb-4f8d-bddb-1968fb0a5f4d" title="Request processing model in sandboxed solutions" alt="Request processing model in sandboxed solutions" src="http://i.msdn.microsoft.com/dynimg/IC464713.gif" width="651" height="484" xmlns="" /&gt; &lt;br /&gt;&lt;p&gt;The SPUCHostService.exe, SPUCWorkerProcess.exe, and SPUCWorkerProcessProxy.exe files are located at %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\UserCode.&lt;/p&gt;&lt;br /&gt;&lt;div class="alert"&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;th align="left"&gt;&lt;img id="note" class="cl_IC101471" title="note" alt="note" src="http://i.msdn.microsoft.com/Hash/030c41d9079671d09a62d8e2c1db6973.gif" xmlns="" /&gt; &lt;strong&gt;Note: &lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;A &lt;em&gt;solution&lt;/em&gt; that is designed to run in the sandbox &lt;em&gt;can&lt;/em&gt; be deployed by a farm administrator as a &lt;em&gt;farm solution&lt;/em&gt;. It might perform better if it is, because it would run in the IIS worker process instead of the sandboxed worker process. &lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Not all SharePoint execution is in an IIS worker process, a sandboxed worker process, or the proxy process. The following are some examples:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li class="unordered"&gt;The SharePoint Timer Service (owstimer.exe) runs on all servers and is used to execute prescheduled timer jobs. It runs under the farm account. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;The SharePoint Tracing Service (wsstracing.exe) runs under the local service account. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;The SharePoint Administration Service (wssadmin.exe) runs under the local system account. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Within the category of &lt;em&gt;farm solutions&lt;/em&gt;, a further distinction can be made when the requested resource is an .aspx page. If the requested page is what SharePoint calls an &lt;em&gt;application page&lt;/em&gt;, the returned page is passed to the regular ASP.NET page parser; but if the requested page is what SharePoint calls a &lt;em&gt;site page&lt;/em&gt;, the returned page is routed through a special safe mode parser. The distinction between the two kinds of parsing is best understood in light of the distinction between the two kinds of pages. For more information about both subjects, see &lt;a href="http://www.blogger.com/post-create.g?blogID=7871774925932891304#BKMK_PagesUI"&gt;Pages, Parsing, and Safe Mode&lt;/a&gt; later in this article. (Application pages cannot be included in &lt;em&gt;sandboxed solutions&lt;/em&gt;. All pages installed as part of a &lt;em&gt;sandboxed solution&lt;/em&gt; use safe mode parsing.)&lt;/p&gt;&lt;/div&gt;&lt;a id="SP14Architectures_AssemblyDeployment"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4 class="subHeading"&gt;Assembly Deployment, Execution, and Persistence&lt;/h4&gt;&lt;br /&gt;&lt;div class="subSection"&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;Farm solutions&lt;/em&gt; divide into two types depending on where their assemblies are deployed and the trust level of the assemblies' execution:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;GAC/Full Trust&lt;/strong&gt;: The assemblies are deployed to the global assembly cache (GAC) of every front-end web server in the farm and run with full trust. They are callable from any SharePoint web application on the farm. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;Bin/CAS&lt;/strong&gt;: The assemblies are deployed to the \bin folder (on every front-end web server) of a specific SharePoint web application and their trust level is determined by a CAS policy referenced in the web application's web.config file. They have to be separately deployed to every SharePoint web application that needs to call them. &lt;br /&gt;&lt;div class="alert"&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;th align="left"&gt;&lt;img id="Tip" title="Tip" alt="Tip" src="http://i.msdn.microsoft.com/dynimg/IC115537.gif" xmlns="" /&gt;&lt;strong&gt;Tip: &lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;We recommend that you use the Bin/CAS model only when neither full-trust &lt;em&gt;farm solutions&lt;/em&gt; nor &lt;em&gt;sandboxed solutions&lt;/em&gt; (nor the hybrid solutions described in &lt;a href="http://www.blogger.com/post-create.g?blogID=7871774925932891304#BKMK_Hybrid"&gt;Hybrid Solution Techniques&lt;/a&gt;) are possible for your solution. &lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Noncompiled files for both kinds of &lt;em&gt;farm solutions&lt;/em&gt;—including, for example, images, user controls, and string resources—are deployed to subfolders of %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;Sandboxed solutions&lt;/em&gt; are deployed inside a SharePoint solution package (.wsp file) to the &lt;strong&gt;Solution Gallery&lt;/strong&gt; of a specific site collection. Thus, they are deployed and persisted in the site collection's content database. As noted earlier, they do not run in full trust: Instead, they run within a highly restricted CAS policy and can only call a restricted subset of the SharePoint object model. A &lt;em&gt;sandboxed solution&lt;/em&gt; can be accessed only in site collections to which it is deployed.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;When a &lt;em&gt;sandboxed solution&lt;/em&gt; is accessed for the first time, such as when a user navigates to a page that contains a Web Part from a &lt;em&gt;sandboxed solution&lt;/em&gt;, any assemblies in the &lt;em&gt;solution&lt;/em&gt; are unpacked from the &lt;em&gt;solution&lt;/em&gt; package and copied to the file system of the server that is handling the sandbox request. The default location is &lt;code&gt;C:\ProgramData\Microsoft\SharePoint\UCCache&lt;/code&gt;, but this is configurable on each server that is running the User Code Host Service. (Recall that the server that handles the sandbox request is not necessarily the front-end web server that is handling the initial HTTP request. The User Code Host Service can be run on back-end application servers in the farm instead.) Because the sandboxed worker process cannot copy anything to the file system, the copying is done by the User Code Host Service.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The assemblies do not stay in the file cache perpetually. When the user session that accessed the assemblies finishes, the assemblies stay in the cache for only a short time, and they may be reloaded from there if another user session accesses them. Eventually, if they are not accessed, they are removed according to a proprietary algorithm that takes into account how busy the server is and how much time has gone by since the assemblies were last accessed. If the &lt;em&gt;sandboxed solution&lt;/em&gt; is used after that time, the assemblies are unpacked again and copied to the UCCache.&lt;/p&gt;&lt;br /&gt;&lt;div class="alert"&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;th align="left"&gt;&lt;img id="Caution" title="Caution" alt="Caution" src="http://i.msdn.microsoft.com/dynimg/IC1429.gif" xmlns="" /&gt; &lt;strong&gt;Caution: &lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Administrators, developers, and third-party code should not add, remove, or load anything from the UCCache. It should be accessed only by the SharePoint infrastructure. &lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;a id="BKMK_Hybrid"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4 class="subHeading"&gt;Hybrid Solution Techniques&lt;/h4&gt;&lt;br /&gt;&lt;div class="subSection"&gt;&lt;br /&gt;&lt;p&gt;The SharePoint solutions architecture includes a technique by which a &lt;em&gt;sandboxed solution&lt;/em&gt; can call custom operations that run in full trust. The technique requires that a &lt;em&gt;farm solution&lt;/em&gt; be developed that includes one or more classes that derive from &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.usercode.spproxyoperation.aspx"&gt;SPProxyOperation&lt;/a&gt;. Each of these defines an operation that will run in full trust and can be called from &lt;em&gt;sandboxed solutions&lt;/em&gt; by using the &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.utilities.sputility.executeregisteredproxyoperation.aspx"&gt;ExecuteRegisteredProxyOperation&lt;/a&gt; method. Specifically, these full-trust proxy operations execute in the same proxy process (SPUCWorkerProcessProxy.exe) that was described earlier in &lt;a href="http://www.blogger.com/post-create.g?blogID=7871774925932891304#BKMK_WorkerProcesses"&gt;Worker Processes, Farm Solutions, and Sandboxed Solutions&lt;/a&gt;. The proxy operations can return data to the &lt;em&gt;sandboxed solution&lt;/em&gt;. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Like all &lt;em&gt;farm solutions&lt;/em&gt;, the assembly with the proxy operations can be deployed only if it is from a trusted source. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Figure 6 shows how a request that accesses a &lt;em&gt;sandboxed solution&lt;/em&gt; is processed when the &lt;em&gt;sandboxed solution&lt;/em&gt; makes a call to a full-trust proxy.&lt;/p&gt;&lt;strong&gt;Figure 6. Request processing model when a sandboxed solutions calls a full-trust proxy&lt;/strong&gt; &lt;img id="9a8be9c2-4183-4139-b264-bbee427919c4" title="Sandbox and full-trust proxy process model" alt="Sandbox and full-trust proxy process model" src="http://i.msdn.microsoft.com/dynimg/IC464714.gif" width="621" height="482" xmlns="" /&gt; &lt;br /&gt;&lt;p&gt;The preceding description might give the impression that, with the hybrid technique, a &lt;em&gt;farm solution&lt;/em&gt; and a &lt;em&gt;sandboxed solution&lt;/em&gt; are always developed together by the same development team. In fact, the &lt;em&gt;farm solution&lt;/em&gt; may be developed specifically to provide certain operations to any and all &lt;em&gt;sandboxed solutions&lt;/em&gt; that need those services, including &lt;em&gt;sandboxed solutions&lt;/em&gt; that are developed by other teams. For example, because a &lt;em&gt;sandboxed solution&lt;/em&gt; cannot write to the SharePoint Unified Logging Service (ULS) logs, a &lt;em&gt;farm solution&lt;/em&gt; that opened proxy logging operations to &lt;em&gt;sandboxed solutions&lt;/em&gt; would be very useful. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Another hybrid technique uses client-side code to access the resources that cannot be accessed from a &lt;em&gt;sandboxed solution&lt;/em&gt;. For example, a &lt;em&gt;sandboxed solution&lt;/em&gt; could include a custom site page with JavaScript that makes calls to the SharePoint ECMAScript client object model. Also, a &lt;em&gt;sandboxed solution&lt;/em&gt; could include a Web Part that hosts a Silverlight application. The latter application can make calls to the SharePoint Silverlight client object model. For more information about the client-side code in SharePoint, see &lt;a href="http://www.blogger.com/post-create.g?blogID=7871774925932891304#BKMK_ClientOM"&gt;Client Object Models in SharePoint&lt;/a&gt; later in this article.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;For more information about hybrid solution techniques, see &lt;a href="http://msdn.microsoft.com/en-in/library/ff798433.aspx"&gt;Hybrid Approaches&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;a id="BKMK_PagesUI"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h1 class="heading"&gt;Pages, Parsing, and Safe Mode&lt;/h1&gt;&lt;br /&gt;&lt;div id="section901" class="section"&gt;&lt;br /&gt;&lt;p&gt;As noted earlier in &lt;a href="http://www.blogger.com/post-create.g?blogID=7871774925932891304#BKMK_SPasASP_IIS"&gt;SharePoint as an ASP.NET-IIS Application&lt;/a&gt;, SharePoint makes extensive use of the master page/content page distinction. But SharePoint Foundation also divides its ASPX pages along a different axis: It distinguishes between &lt;em&gt;application pages&lt;/em&gt; and &lt;em&gt;site pages&lt;/em&gt;. Both of these kinds of pages can be mergers of master and content pages and, indeed, every ASCX page that is built into SharePoint, whether it is an application page or a site page, is a combination of a master and content page. Hereafter, in this section, there is no further mention of the master/content page distinction.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Application pages differ from site pages in the following ways:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;Typical purpose&lt;/strong&gt;: Application pages tend to be function-oriented, especially functionality that is needed by many kinds of websites within a given web application; for example, the standard form for creating a new list item is an application page. Site pages tend to be content-oriented; for example, the list-of-lists page of a standard team site. However, exceptions to both tendencies are possible. Indeed, we currently recommend that third-party developers develop custom Web Parts, which can be added to site pages, to handle their solution's functionality whenever possible, rather than develop custom application pages. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;Customizablility&lt;/strong&gt;: Site owners (and other users who have appropriate permissions) can customize site pages, but not application pages. Users can also add an entirely new ASCX page to a website's &lt;strong&gt;Site Pages&lt;/strong&gt; gallery, but only web application administrators can install a new application page. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;Class inheritance&lt;/strong&gt;: Application pages are objects of the &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.webcontrols.layoutspagebase.aspx"&gt;LayoutsPageBase&lt;/a&gt; class or the &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.webcontrols.unsecuredlayoutspagebase.aspx"&gt;UnsecuredLayoutsPageBase&lt;/a&gt; class. Site pages are objects of the &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.webpartpages.wikieditpage.aspx"&gt;WikiEditPage&lt;/a&gt; class or the &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.portal.webcontrols.webpartpage.aspx"&gt;WebPartPage&lt;/a&gt; class. (All of these classes derive from the ASP.NET &lt;a href="http://msdn.microsoft.com/en-in/library/system.web.ui.page.aspx"&gt;Page&lt;/a&gt; class.) &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;Web Part support&lt;/strong&gt;: Application pages cannot have Web Part zones or dynamic Web Parts. They can have static Web Parts, but there is little point to using a static Web Part instead of an ordinary control on an application page because end users cannot customize application pages anyway. Some kinds of site pages can have static Web Parts, and other kinds can have Web Part zones with dynamic Web Parts. See later in this section for more information. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;Storage location&lt;/strong&gt;: Application pages are stored on the file system of the front-end web servers in the _layouts virtual directory of a web application (which maps to the %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS physical directory) or one of its subdirectories. A site page that has &lt;em&gt;not&lt;/em&gt; been customized is stored in other subdirectories of %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE, most typically in %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\SiteTemplates and %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\FEATURES. A site page that &lt;em&gt;has&lt;/em&gt; been customized, such as with Microsoft SharePoint Designer, is stored in the content database of the website for which it was customized. New site pages that have been added to the &lt;strong&gt;Site Pages&lt;/strong&gt; gallery are stored just as customized pages. &lt;br /&gt;&lt;div class="alert"&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;th align="left"&gt;&lt;img id="note" class="cl_IC101471" title="note" alt="note" src="http://i.msdn.microsoft.com/Hash/030c41d9079671d09a62d8e2c1db6973.gif" xmlns="" /&gt;&lt;strong&gt;Note: &lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Even an uncustomized site page has an entry in the content database; but whereas the entry of a customized page contains the ASPX markup that constitutes the page, the entry for an uncustomized page contains the path of the .aspx file on the local front-end web server. An uncustomized page can be shared by many websites. If it is, it is referenced in each website's content database, with all the entries pointing to the same physical file. For example, every Team Site has a content database entry pointing to the default Team Site home page. If the home page is customized on any of the sites, it is copied into the page's entry in the content database in its customized form, and the pointer to the uncustomized version is removed. &lt;br /&gt;&lt;p&gt;&lt;/p&gt;Sometimes the uncustomized site page is referred to as a &lt;em&gt;page template&lt;/em&gt; and the pages in the content database as &lt;em&gt;page instances&lt;/em&gt;. However, remember that if the page is not customized in a particular website, the "instance" of the page is simply the database entry pointing back to the file on the file system. &lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;Availability&lt;/strong&gt;: An application page can be accessed from every website in the web application and is therefore shared among all the websites. But a site page is available only to a user of the website where it is deployed. (Uncustomized site pages are shared by multiple websites, as noted earlier, but only websites where they have been specifically provisioned either as part of a Feature or as part of a site definition.) &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;Parsing mode&lt;/strong&gt;: Application pages are parsed in &lt;em&gt;direct mode&lt;/em&gt;, which just means that they are parsed by the standard ASP.NET page parser. The first time an application page is requested, it is parsed and compiled and cached in the front-end web server's memory, where it remains until the application domain or the entire IIS host is recycled. With every subsequent request for the page, it is served from the cache, if it is there. Uncustomized site pages are also parsed in direct mode, but customized site pages, and new pages that are added to the &lt;strong&gt;Site Pages&lt;/strong&gt; gallery, are parsed in &lt;em&gt;safe mode&lt;/em&gt;. Safe mode processing differs from direct mode (that is, from standard ASP.NET page processing) in the following ways: &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li class="unordered"&gt;Only controls (including Web Parts) that are registered as safe in the web application's web.config file are rendered. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;Inline server-side code is not allowed in safe mode, and an error page is returned to the user if the safe mode parser finds inline code on the requested site page. Inline code includes &amp;lt;script&amp;gt; elements, such as &lt;code&gt;&amp;lt;script runat="server"&amp;gt; [code is here] &amp;lt;/script&amp;gt;&lt;/code&gt;, and control event handlers, such as &lt;code&gt;&amp;lt;asp:button OnClick="MyButtonHandler()" /&amp;gt;&lt;/code&gt;. (Code behind that is compiled into a separate assembly is allowed, and so is embedded ECMAScript.) &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;The page is not compiled. (And, thus, any compilation directives in the file are ignored.) &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div class="alert"&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;th align="left"&gt;&lt;img id="note" class="cl_IC101471" title="note" alt="note" src="http://i.msdn.microsoft.com/Hash/030c41d9079671d09a62d8e2c1db6973.gif" xmlns="" /&gt;&lt;strong&gt;Note: &lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;The terms &lt;em&gt;safe mode parsing&lt;/em&gt;, &lt;em&gt;safe mode processing&lt;/em&gt;, and &lt;em&gt;safe mode rendering&lt;/em&gt; are used interchangeably in SharePoint documentation. &lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Security and performance are the motivations for the two kinds of pages, especially the difference in processing mode. One of the purposes of SharePoint is to delegate administrative control to ordinary business users instead of requiring the intervention of network administrators and IT professionals. For this reason, users are allowed to add new pages and customize existing pages. If these users were allowed to add any control or Web Part they wanted or add any code blocks they wanted to the pages, there is a great danger that poor performing or malicious code would be added to a page. The reason that pages that use safe mode are not compiled is that there may be thousands of pages on a SharePoint installation. If every one of them was compiled into an assembly and loaded in memory, the performance of the server would be degraded, and only recycling the application domain would remove them. Moreover, recycling the application domain would remove &lt;em&gt;all&lt;/em&gt; assemblies, not just the seldom-used pages. There is also a limit on the number of assemblies that can be loaded in an application domain that is imposed by the .NET Framework. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;The safe mode parser only creates a control tree for the page, which can be unloaded again from memory immediately after use. On the other hand, pages that are shared, such as application pages and uncustomized site pages &lt;em&gt;should&lt;/em&gt; be compiled on first use, because these pages are used a lot and subsequent requests for them can be handled much faster if the pages are cached as assemblies in the server memory. That is why they run in direct mode.&lt;/p&gt;&lt;br /&gt;&lt;div class="alert"&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;th align="left"&gt;&lt;img id="security" title="security" alt="security" src="http://i.msdn.microsoft.com/dynimg/IC17938.gif" xmlns="" /&gt;Security &lt;strong&gt;Note: &lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;It is possible to allow inline code, unsafe controls, or both, on selected customized site pages. You can do both things by adding one or more &amp;lt;PageParserPath&amp;gt; elements to the &amp;lt;SafeMode&amp;gt; element of the &amp;lt;SharePoint&amp;gt; section of the web application's web.config file. You can use the attributes of the &amp;lt;PageParserPath&amp;gt; element to specify a customized site page or set of customized site pages, and to enable inline code and unsafe controls for the designated site pages. However, you should use extreme caution when you make these kinds of changes, because they cancel the security benefits of safe mode. For example, if you allow inline code for all pages that have names on the pattern &lt;code&gt;Contoso*.aspx&lt;/code&gt; in the directory &lt;code&gt;/sites/contoso/SitePages&lt;/code&gt;, anyone with the right to add pages can create a page that has a name following that pattern and add it to that directory, including a page that contains malicious or poor-performing code. (The directory path is a "virtual path" that points to a set of files in the content database.) Notice that allowing unsafe controls only enables such controls that are added in an editing tool, such as SharePoint Designer. When an end user adds a Web Part to a page in the browser, the Web Part must still be registered as safe even if unsafe controls have been enabled in a &amp;lt;PageParserPath&amp;gt; element. &lt;br /&gt;&lt;p&gt;&lt;/p&gt;You can turn on compilation for selected customized site pages by using an attribute of the &amp;lt;PageParserPath&amp;gt; element. This might be useful if you have reason to believe that the customized page will be visited often enough to justify compiling it into a DLL cached in memory. &lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Within the category of site pages, there are additional distinctions. In SharePoint Foundation, there are &lt;em&gt;standard&lt;/em&gt; site pages and &lt;em&gt;Web Part&lt;/em&gt; site pages. Standard site pages are wiki-enabled pages that allow inline Web Parts. Standard pages are objects of a class that derives from &lt;strong&gt;WikiEditPage&lt;/strong&gt;. Web Parts pages, on the other hand, derive from &lt;strong&gt;WebPartPage&lt;/strong&gt;. They have one or more Web Part zones into which Web Parts can be added, and they have no wiki-editable area.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;SharePoint Server 2010 adds a third kind of site page: &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.publishing.publishingpage.aspx"&gt;PublishingPage&lt;/a&gt;. (There is also a &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.publishing.pagelayout.aspx"&gt;PageLayout&lt;/a&gt; class in SharePoint Server 2010, but this is an extension of the master page/content page system of ASP.NET, not another kind of site page.)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;SharePoint also has a set of built-in pages that are designed for mobile devices. They do not use the ASP.NET master page/content page technology, and they are not divided into application pages and site pages. SharePoint mobile pages are all application pages, and they are located in the &lt;code&gt;\_layouts\Mobile&lt;/code&gt; folder. There is one respect in which a SharePoint mobile page is more like a customized site page: If the page contains a mobile Web Part adapter, the adapter must be registered as a safe control or it is not rendered.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;For more information about page types in SharePoint, see &lt;a href="http://msdn.microsoft.com/en-in/library/ee539040.aspx"&gt;Building Block: Pages and User Interface&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-in/library/ff512772.aspx"&gt;ASP.NET vs. SharePoint: Page Development&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-in/library/aa979592.aspx"&gt;SharePoint Page Types&lt;/a&gt;, and &lt;a href="http://msdn.microsoft.com/en-in/library/ff512785.aspx"&gt;Publishing Programming Model&lt;/a&gt;. For more information about mobile pages, see &lt;a href="http://msdn.microsoft.com/en-in/library/ee536690.aspx"&gt;Building Block: Mobile Pages, Controls, and Adapters&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-in/library/ms462572.aspx"&gt;Overview of Mobile Pages and the Redirection System&lt;/a&gt;. For more information about safe controls and safe mode, see &lt;a href="http://msdn.microsoft.com/en-in/library/ee537834.aspx"&gt;Microsoft SharePoint Foundation as an ASP.NET Application&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;a id="BKMK_DataAndQuery"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h1 class="heading"&gt;Data Model, Data Management, and Query System&lt;/h1&gt;&lt;br /&gt;&lt;div id="section1057" class="section"&gt;&lt;br /&gt;&lt;p&gt;The primary data structure in SharePoint Foundation is the list. Every list belongs to a list type. Similarly, every column in a list has a field type, and every list item has a content type. External data—that is, data from outside the SharePoint content databases—can also be shown and managed in SharePoint.&lt;/p&gt;&lt;a id="BKMK_Lists"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4 class="subHeading"&gt;Lists&lt;/h4&gt;&lt;br /&gt;&lt;div class="subSection"&gt;&lt;br /&gt;&lt;p&gt;Data in SharePoint Foundation is primarily stored as tables much as it is in a relational database, except that the tables are called "lists" in SharePoint lingo. Indeed, the back-end storage of content data for a SharePoint Foundation web application is in one or more SQL Server databases. These are called content databases. (There is also a special configuration database on the computer that is running SQL Server that holds farm configuration data, and a special BDC database that supports Microsoft Business Connectivity Services (BCS). For more information about BCS, see &lt;a href="http://www.blogger.com/post-create.g?blogID=7871774925932891304#BKMK_ExternalAndBCS"&gt;External Lists and the Business Connectivity Service&lt;/a&gt; later in this article.) However, there are some differences between relational database tables and SharePoint Foundation lists:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li class="unordered"&gt;Data is not queried by SQL. Instead, data is queried in server-side code either by LINQ or by queries formulated in CAML. For more information about server-side data querying, see &lt;a href="http://msdn.microsoft.com/en-in/library/ee535714.aspx"&gt;Building Block: Queries and Views&lt;/a&gt; and the topic &lt;a href="http://msdn.microsoft.com/en-in/library/ee536691.aspx"&gt;Querying from Server-side Code&lt;/a&gt;, along with its child topics. You can programmatically write data to the lists using either the server object model or the LINQ to SharePoint provider. For more information, see &lt;a href="http://msdn.microsoft.com/en-in/library/ee537339.aspx"&gt;Managing Data with LINQ to SharePoint&lt;/a&gt;. From client-side code, data is queried by using either the client object model or WCF Data Services (formerly ADO.NET Data Services). For more information about client-side data querying, see &lt;a href="http://msdn.microsoft.com/en-in/library/ee539764.aspx"&gt;Querying from Client-side Code&lt;/a&gt;. &lt;br /&gt;&lt;div class="alert"&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;th align="left"&gt;&lt;img id="Caution" title="Caution" alt="Caution" src="http://i.msdn.microsoft.com/dynimg/IC1429.gif" xmlns="" /&gt;&lt;strong&gt;Caution: &lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Directly accessing the back-end computer that is running SQL Server by using SQL queries, stored procedures, or any other method is not supported. &lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;A list can have a column whose possible values are the values of a column on a different list. The lookup column relationship between the lists is somewhat like a foreign key relationship between two relational tables. However, the field on the target list that provides the values is not necessarily the foreign key. All SharePoint Foundation lists have an ID column. This column is, in effect, always the foreign key in any lookup relationship. For more information about lookup relationships in SharePoint Foundation, see &lt;a href="http://msdn.microsoft.com/en-in/library/ff623048.aspx"&gt;Lookups and List Relationships&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-in/library/ff798514.aspx"&gt;List Relationships in SharePoint 2010&lt;/a&gt;. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;Lists can be joined just as tables can, but with some restrictions. There must be a lookup relation between the lists or they cannot be joined. For more information about list joins, see &lt;a href="http://msdn.microsoft.com/en-in/library/ee539975.aspx"&gt;List Joins and Projections&lt;/a&gt;. &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;A SharePoint Foundation document library is a special kind of list in which each row includes an attached document, and the other columns are data about the document, such as its author, when it was last edited, and who has it checked out. Picture libraries are similar except that the attached file is an image file. For more information, see &lt;a href="http://msdn.microsoft.com/en-in/library/ee534985.aspx"&gt;Building Block: Lists and Document Libraries&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Every list has a list type, and SharePoint Foundation includes many built-in list types that enable end-users to create the most common kinds of business and team solutions. Among these are Announcements, Tasks, and Calendar. Developers can also create custom list types. For more information about list development, see &lt;a href="http://msdn.microsoft.com/en-in/library/ee536277.aspx"&gt;SharePoint List Data Model&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;h4 class="subHeading"&gt;Content Types and Field Types&lt;/h4&gt;&lt;br /&gt;&lt;div class="subSection"&gt;&lt;br /&gt;&lt;p&gt;A row in a list—that is, a list item—also has a type. These are called &lt;em&gt;content types&lt;/em&gt;. Each is basically a set of columns and metadata. The simplest is the built-in Item content type. All other content types are derived from Item. SharePoint Foundation includes many built-in content types, such as Event and Announcement. Developers can create custom content types. For more information about content types, see &lt;a href="http://msdn.microsoft.com/en-in/library/ee535063.aspx"&gt;Building Block: Content Types&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-in/library/ms479905.aspx"&gt;Content Types&lt;/a&gt;, and &lt;a href="http://msdn.microsoft.com/en-in/library/ff798404.aspx"&gt;SharePoint Columns, Lists, and Content Types&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;A column in a list, also known as a "field," also has a type, and it is distinct from the &lt;em&gt;data type&lt;/em&gt; of the values that can be stored in the field. A SharePoint Foundation field type includes not only information about the underlying data type, but also information about how the data is formatted and rendered on forms, such as the forms for creating, displaying, and editing specific list items. For example, it is the field type that determines whether a field value is entered as string or from a drop-down list of values. Many field types are built-in to SharePoint Foundation, such as the &lt;strong&gt;Modified By&lt;/strong&gt; field on a document library and the &lt;strong&gt;Due Date&lt;/strong&gt; field on a Task list. Developers can create custom field types. For more information, see &lt;a href="http://msdn.microsoft.com/en-in/library/ee535893.aspx"&gt;Building Block: Columns and Field Types&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-in/library/ms446361.aspx"&gt;Custom Field Types&lt;/a&gt;, and &lt;a href="http://msdn.microsoft.com/en-in/library/ff798404.aspx"&gt;SharePoint Columns, Lists, and Content Types&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;a id="BKMK_ExternalAndBCS"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4 class="subHeading"&gt;External Lists and the Business Connectivity Service&lt;/h4&gt;&lt;br /&gt;&lt;div class="subSection"&gt;&lt;br /&gt;&lt;p&gt;External data, such as data in an SAP installation or Oracle database, can also be represented as a list on a SharePoint Foundation page and within SharePoint Workspace and Microsoft Office client applications. The Microsoft Business Connectivity Services (BCS) of SharePoint Foundation enables read/write access to this data.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The critical components of BCS are Business Data Connectivity (BDC) service models. Each model is an XML file that describes a type of external data source, such as SAP services. One or more specific instances of the data source, such as a particular SAP database, are defined in the model, including connection and security information about the data source. The business entities in the data source, such as Customer or Order, are represented in the model by external content types, and the model also defines relationships between these entities. Finally, the model defines, for each entity, a set of standard operations, called &lt;em&gt;stereotyped operations&lt;/em&gt;, that can be performed on the entity, including create, retrieve, update, and delete operations. For more information about the structure of BDC models, see &lt;a href="http://msdn.microsoft.com/en-in/library/ee556378.aspx"&gt;BDC Model Infrastructure&lt;/a&gt;. The models are stored in a dedicated database on the SharePoint farm computer that is running SQL Server, which is distinct from the configuration database and the content databases. This database is called the &lt;em&gt;metadata store&lt;/em&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;After a model is added to the metadata store, users can access the external data in a variety of ways. For example, in SharePoint Foundation, users can create a SharePoint list out of an external content type, such as Customer, or add a column of data from the external source to an existing list. SharePoint Server 2010 has some BCS enhancements: It includes some built-in Web Parts for working with external data, and it enables users to search the external data. Also, SharePoint Workspace and Microsoft Office client applications can access and display the external data directly. Finally, with SharePoint Server 2010, users can index and search the external data sources.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;A service named Business Data Connectivity service manages the interactions between SharePoint and the external data source. The service runs on an application server in the farm. There is also a BDC Runtime that runs on all front-end web servers. When a SharePoint client application requests external data, the BDC Runtime on the front-end web server requests the metadata that defines the BDC model from a locally cached copy of the BDC metadata store. The runtime then uses the metadata provided to perform data operations directly on the external system. Similarly, on client computers that are running SharePoint Workspace and Microsoft Office client applications, a BDC Client Runtime enables direct client access to the external data by using the BDC model, which is also cached on the client computer (although the SharePoint Server 2010 farm is still needed for long-term persistence of the BDC models). The external data itself can be cached on the client computer to enable an offline experience.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;After the BDC service is running and the needed BDC models are registered, end users can create non-code solutions that involve external data. For more complex solutions, the BCS Runtime APIs enable developers to make custom Web Parts or other solutions to interact with the external data. Because a BDC model provides a kind of translation between operations in code and the stereotyped operations of the external data source, the same APIs can be used for all external data sources no matter how different their individual access systems are. BDC solutions are packaged and deployed as &lt;em&gt;farm solutions&lt;/em&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Figure 7 shows some of the major components of BCS and their relationships.&lt;/p&gt;&lt;strong&gt;Figure 7. BCS runtime and deployment components&lt;/strong&gt; &lt;img id="66e9c572-2019-4ec6-8032-60314a1ab3df" title="Components of BDC deployment and runtime" alt="Components of BDC deployment and runtime" src="http://i.msdn.microsoft.com/dynimg/IC416531.png" xmlns="" /&gt; &lt;br /&gt;&lt;p&gt;The BDC service is built in conformance with the &lt;a href="http://msdn.microsoft.com/en-in/library/ee536263.aspx"&gt;Service Application Framework&lt;/a&gt; of SharePoint Foundation. See also &lt;a href="http://www.blogger.com/post-create.g?blogID=7871774925932891304#BKMK_ServiceApplicationFramework"&gt;Services and the Service Application Framework&lt;/a&gt; and &lt;a href="http://www.blogger.com/post-create.g?blogID=7871774925932891304#BKMK_Services"&gt;Services Hierarchy&lt;/a&gt; later in this article.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;For more information about BCS architecture, see &lt;a href="http://msdn.microsoft.com/en-in/library/ee558876.aspx"&gt;BDC Architecture&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-in/library/ee559650.aspx"&gt;Mechanics of Using Business Connectivity Services&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-in/library/ee556407.aspx"&gt;Business Data Connectivity (BDC) Service&lt;/a&gt;, and &lt;a href="http://msdn.microsoft.com/en-in/library/ff798503.aspx"&gt;External Data in SharePoint 2010&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;a id="BKMK_ServiceApplicationFramework"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h1 class="heading"&gt;Services and the Service Application Framework&lt;/h1&gt;&lt;br /&gt;&lt;div id="section1155" class="section"&gt;&lt;br /&gt;&lt;p&gt;Services on a SharePoint farm can be usefully divided into four groups:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li class="unordered"&gt;Windows Services &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;Web Services &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;IIS Web Services &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;Configuration Services &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;For details and examples of each of these four kinds of services, see &lt;a href="http://msdn.microsoft.com/en-in/library/cc768569.aspx"&gt;Background: Service Entities in Microsoft SharePoint Foundation&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Services in the latter two categories can be created to conform to the &lt;a href="http://msdn.microsoft.com/en-in/library/ee536263.aspx"&gt;Service Application Framework&lt;/a&gt;. Many of the services built-in to SharePoint Foundation and SharePoint Server implement the framework. Moreover, the framework lets developers build scalable middle-tier shared services that are hosted in SharePoint Foundation.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;A service that conforms to the framework can be split into multiple configured farm-scoped instantiations (CFSIs). Each of these provides the functionality of the service, but each has its own individual permission and provisioning settings. A CFSI is not an actual running process on a particular server. The same CFSI can be running on multiple servers, but it is not the same as the entirely abstract service itself either. Each of the servers on which the CFSI runs has its own actual instance (a running process) of the CFSI. Moreover, more than one CFSI of a given service can be running on the same server or servers. Thus, the framework provides a means for different versions of the same basic service to be available simultaneously. A consuming application on a front-end web server can target a specific CFSI. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Figure 8 shows the services and service instances on a hypothetical 10-server farm. This figure is repeated, with a more detailed explanation of its contents, in &lt;a href="http://msdn.microsoft.com/en-in/library/cc768569.aspx"&gt;Background: Service Entities in Microsoft SharePoint Foundation&lt;/a&gt;. For this article, note only that the light translucent rectangles represent services, the darker translucent rectangles represent CFSIs (also known as &lt;em&gt;service applications&lt;/em&gt;), and the smaller solid rectangles represent instances of services. The CFSIs are present only for the services that implement the Service Application Framework, which in this example are the Usage Service, the Application Discovery and Load Balancer Service, the Security Token Service, and the BDC Service.&lt;/p&gt;&lt;strong&gt;Figure 8. Services and service instances on a typical 10-server farm&lt;/strong&gt; &lt;img id="27e5d5b0-e521-42fc-8138-ca324d46d79e" title="10 server SharePoint Foundation service objects" alt="10 server SharePoint Foundation service objects" src="http://i.msdn.microsoft.com/dynimg/IC347467.gif" width="642" height="587" xmlns="" /&gt; &lt;br /&gt;&lt;p&gt;Applications that need to consume a particular CFSI of a service do so through proxies. The front-end web server that hosts the application has a proxy to represent the service itself and a second proxy to represent the CFSI that is being targeted. The proxies are not depicted in Figure 8, but Figure 9 shows a single-server SharePoint Foundation farm immediately after installation. Note also the following:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li class="unordered"&gt;Web services that implement the Service Application Framework are represented with a dot-bordered box. At initial installation, each has a single CFSI, sometimes called a "service application". &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;The service proxies belong to the farm, but each CFSI proxy (also known as a &lt;em&gt;service application proxy&lt;/em&gt;) belongs to a web application. The content publishing web application and the Central Administration web application each have their own proxy for the Business Data Catalog CFSI, and they each have their own for the Usage and Health Data CFSI. Neither has a proxy for the Subscription or Application Discovery and Load Balancer CFSIs at initial installation. &lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Figure 9. Services, CFSIs, service instances, and web applications in a new single server deployment&lt;/strong&gt; &lt;img id="dca67f5e-915d-4094-b154-c39c6f490e2d" title="Admin objects in new single server deployment" alt="Admin objects in new single server deployment" src="http://i.msdn.microsoft.com/dynimg/IC356303.gif" xmlns="" /&gt; &lt;br /&gt;&lt;p&gt;For more information about services in SharePoint and the Service Application Framework architecture, see &lt;a href="http://msdn.microsoft.com/en-in/library/cc768569.aspx"&gt;Background: Service Entities in Microsoft SharePoint Foundation&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-in/library/ee536537.aspx"&gt;Service Application Framework Architecture&lt;/a&gt;, and &lt;a href="http://blogs.msdn.com/b/dtaylor/archive/2009/11/18/service-application-topologies.aspx"&gt;SharePoint Service Application Topologies&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;a id="SP14Architectures_sitedefinitionswebtemplates"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h1 class="heading"&gt;Site Definitions and Web Templates&lt;/h1&gt;&lt;br /&gt;&lt;div id="section1209" class="section"&gt;&lt;br /&gt;&lt;p&gt;What makes it possible for ordinary business users to create their SharePoint websites without the intervention of IT professionals is the fact that types of websites in SharePoint are given detailed, stored definitions. Using the SharePoint UI, users can then instantiate a particular website from any of the defined types. There are actually two kinds of definitions of site types: &lt;em&gt;site definition configurations&lt;/em&gt; and &lt;em&gt;web templates&lt;/em&gt;. A site definition is stored on the file system of the front-end web servers, in a subfolder of %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\SiteTemplates, as a set of XML configuration files and possibly also page files and other supporting files. A web template is stored in a SharePoint Solution Package (.wsp file) in the content database, specifically in the &lt;strong&gt;Solution Gallery&lt;/strong&gt; of a site collection. Either kind of type definition specifies such things as a default home page, various aspects of the default look-and-feel and layout of the site's pages, the types of lists available in sites of the specified type, and other configuration details of the site type.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;For more information, see &lt;a href="http://msdn.microsoft.com/en-in/library/ee536161.aspx"&gt;Building Block: Web Sites and Site Collections&lt;/a&gt; and the &lt;a href="http://msdn.microsoft.com/en-in/library/ms434313.aspx"&gt;Site Types: WebTemplates and Site Definitions&lt;/a&gt; node of the SharePoint Foundation SDK.&lt;/p&gt;&lt;/div&gt;&lt;a id="SP14Architectures_security"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h1 class="heading"&gt;SharePoint Security&lt;/h1&gt;&lt;br /&gt;&lt;div id="section1223" class="section"&gt;&lt;br /&gt;&lt;p&gt;The SharePoint security system protects deployments from both errant users and errant code.&lt;/p&gt;&lt;br /&gt;&lt;h4 class="subHeading"&gt;User Security&lt;/h4&gt;&lt;br /&gt;&lt;div class="subSection"&gt;&lt;br /&gt;&lt;p&gt;SharePoint Foundation supports security for user access at the website, list, folder, and item levels. Security management is role-based at all levels. The authorization process assumes that the user has already been authenticated, which refers to the process by which the current user is identified. SharePoint Foundation does not implement its own system for authentication or identity management, but instead relies solely on external systems, whether Windows authentication or non-Windows authentication.&lt;/p&gt;&lt;br /&gt;&lt;h4 class="subHeading"&gt;Authentication&lt;/h4&gt;&lt;br /&gt;&lt;div class="subSection"&gt;&lt;br /&gt;&lt;p&gt;SharePoint supports several forms of authentication. The default is Windows claims-based authentication. The claims-based identity model for SharePoint is built upon &lt;a href="http://msdn.microsoft.com/en-us/security/aa570351.aspx"&gt;Windows Identity Foundation (WIF)&lt;/a&gt;. Under this model, the user presents an identity to your SharePoint farm as a set of claims. One claim could be the user's name, another might be an email address. An external identity system is configured to give SharePoint all the information that it needs about the user with each request, along with cryptographic assurance that the identity data comes from a trusted source. Other types of supported authentication include Windows classic authentication and ASP.NET forms-based authentication. For more information about authentication and SharePoint, see the &lt;a href="http://msdn.microsoft.com/en-in/library/ee536164.aspx"&gt;Getting Started with Security and Claims-Based Identity Model&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-in/library/ee535242.aspx"&gt;SharePoint Claims-Based Identity&lt;/a&gt; nodes of the SharePoint Foundation SDK.&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;h4 class="subHeading"&gt;Authorization&lt;/h4&gt;&lt;br /&gt;&lt;div class="subSection"&gt;&lt;br /&gt;&lt;p&gt;Access to websites, lists, folders, and list items is controlled through a role-based membership system by which users, and groups of users, are assigned to roles that authorize their access to SharePoint objects. By default, permissions are inherited in the sense that a user who has certain permissions for an object, such as a list, will have the same permissions for its child objects, such as folders and list items. However, it is possible to break inheritance and assign to users and groups a different set of permissions to a child object. A role definition is a set of rights, such as rights to read, create, or delete. A role assignment associates a user or group with a role definition.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;SharePoint supports two kinds of groups: domain groups and SharePoint groups. Domain groups remain outside SharePoint control; users cannot use SharePoint to define, browse, or modify domain group membership. SharePoint groups are scoped to the site-collection level, and they can be used only within the site collection. Domain groups can be used anywhere within the scope of the Active Directory service.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;For more information, see &lt;a href="http://msdn.microsoft.com/en-in/library/ms414400.aspx"&gt;Authorization, Users, and Groups&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;h4 class="subHeading"&gt;Code Security&lt;/h4&gt;&lt;br /&gt;&lt;div class="subSection"&gt;&lt;br /&gt;&lt;p&gt;Much of the code security story for SharePoint was already described in earlier sections. In this section, different parts of the story are very briefly pulled together, and some gaps in the story are filled.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Every web application runs in an IIS application pool that processes HTTP requests. The pool itself runs in a user account known as the &lt;em&gt;application pool identity&lt;/em&gt;. In a multiserver farm, this is usually a domain user. The application pool identity is the user identity for code that runs in an IIS worker process. However, access to various SharePoint objects is determined by the permissions of the user who has made the request that is being processed. The isolation of web applications into separate application pools ensures that if one of them crashes, the others are not affected.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The IIS worker process calls assemblies that may operate under their own additional restrictions. If the assembly is loaded out of the global assembly cache, it operates in full trust. However, if the assembly is loaded out of the web application's &lt;code&gt;\bin&lt;/code&gt; directory, it is subject to the trust limitations that are defined by a CAS policy.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;If the request is for a &lt;em&gt;sandboxed solution&lt;/em&gt;, the SharePoint execution manager that runs in the IIS worker process spawns a sandboxed worker process. The latter process runs within a highly restrictive CAS policy, is limited to a subset of the SharePoint server object model, and can only access resources within the site collection to which the &lt;em&gt;solution&lt;/em&gt; was deployed.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;If the request is for a customized site page, all Web Parts on the page must be registered as safe controls and, by default, the page is not returned at all if it contains inline code blocks.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;a id="SP14Architectures_serverobjectmodel"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h1 class="heading"&gt;Server Object Model in SharePoint&lt;/h1&gt;&lt;br /&gt;&lt;div id="section1264" class="section"&gt;&lt;br /&gt;&lt;p&gt;The server object model in SharePoint is large, and only some of the truly critical classes can be described in this article. These classes can be usefully divided into three hierarchies: the Physical Objects Hierarchy, the Content Hierarchy, and the Services Hierarchy. Each is described briefly in the following subsections with links to more extended discussions. For a synoptic overview of the major classes from all three hierarchies, see &lt;a href="http://msdn.microsoft.com/en-in/library/ms473633.aspx"&gt;Server and Site Architecture: Object Model Overview&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;h4 class="subHeading"&gt;Physical Objects Hierarchy&lt;/h4&gt;&lt;br /&gt;&lt;div class="subSection"&gt;&lt;br /&gt;&lt;p&gt;The Physical Objects Hierarchy includes classes that represent physical entities, such as servers and farms—the two most important.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;A SharePoint Foundation farm, and its configuration database, is represented by the &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.administration.spfarm.aspx"&gt;SPFarm&lt;/a&gt; class. A server farm consists of one or more physical servers. These may include one or more front-end web servers, zero or more application servers, and a computer running SQL Server that may be hosted on a dedicated database server or on one of the other servers in the farm. (If it is a dedicated server, SharePoint is not actually installed on it, although it is still seen as a member of the farm in the farm management UI of the Central Administration application.) A farm may consist of just a single server. If the farm has multiple front-end web servers, they are usually load-balanced. You can use any hardware or software load-balancing solution, including the built-in NLB (Network Load Balancing) in Windows Server 2008. SharePoint does not itself supply the load-balancing.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;SPFarm&lt;/strong&gt; inherits from &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.administration.sppersistedobject.aspx"&gt;SPPersistedObject&lt;/a&gt;, which means that the object (there is only one) that instantiates the class persists in the configuration database. The three most important child classes of &lt;strong&gt;SPFarm&lt;/strong&gt; are &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.administration.spserver.aspx"&gt;SPServer&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.administration.spservice.aspx"&gt;SPService&lt;/a&gt;, and &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.administration.spsolution.aspx"&gt;SPSolution&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;A physical server in a SharePoint Foundation farm is represented by the &lt;strong&gt;SPServer&lt;/strong&gt; class. In addition to many inherited members, it has an &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.administration.spserver.address.aspx"&gt;Address&lt;/a&gt; property that holds the IP address of the server and a &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.administration.spserver.role.aspx"&gt;Role&lt;/a&gt; property that identifies the server's role in the farm. It also has a &lt;span class="unresolvedLink"&gt;ServerInstances&lt;/span&gt; property that holds references to all the instances of Windows services and web services that are running on the server. &lt;strong&gt;SPServer&lt;/strong&gt; also inherits from &lt;strong&gt;SPPersistedObject&lt;/strong&gt;, so server objects are persisted in the configuration database.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;For more information about the Physical Objects Hierarchy in the object model, see &lt;a href="http://msdn.microsoft.com/en-in/library/cc768557.aspx"&gt;The Physical Objects Hierarchy of Microsoft SharePoint Foundation&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-in/library/cc768572.aspx"&gt;Background: Physical Objects in Microsoft SharePoint Foundation&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;a id="BKMK_ContentHierarchy"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4 class="subHeading"&gt;Content Hierarchy&lt;/h4&gt;&lt;br /&gt;&lt;div class="subSection"&gt;&lt;br /&gt;&lt;p&gt;The Content Hierarchy includes classes that represent publishable items of data, such as list items. There are also classes that represent nested containers of data, such as lists, content databases, websites, site collections, and web applications.&lt;/p&gt;&lt;a id="BKMK_HiLevelOM"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4 class="subHeading"&gt;High Level Object Model&lt;/h4&gt;&lt;br /&gt;&lt;div class="subSection"&gt;&lt;br /&gt;&lt;p&gt;Beneath the farm, the broadest content container is the web application, which is represented by the &lt;strong&gt;SPWebApplication&lt;/strong&gt; class. An &lt;strong&gt;SPWebApplication&lt;/strong&gt; object represents a content-publishing web application in SharePoint Foundation. It contains one or more content databases, which hold the data of one or more site collections. Each such web application is served by at least one (and usually only one) IIS website and typically has its own application pool in IIS. Also, each web application has its own security and authentication settings. The SharePoint Foundation object model provides some hooks into the web application's other life as an IIS object through the &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.administration.spwebapplication.iissettings.aspx"&gt;IisSettings&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.administration.spwebapplication.applicationpool.aspx"&gt;ApplicationPool&lt;/a&gt; properties. For more information about the relation between SharePoint web applications and IIS, see &lt;a href="http://www.blogger.com/post-create.g?blogID=7871774925932891304#BKMK_SPasASP_IIS"&gt;SharePoint as an ASP.NET-IIS Application&lt;/a&gt; earlier in this article.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The &lt;strong&gt;SPWebApplication&lt;/strong&gt; class has a &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.administration.spwebapplication.contentdatabases.aspx"&gt;ContentDatabases&lt;/a&gt; property that holds all its child content database objects.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Every web application contains one or more content databases. Each of these is represented by the &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.administration.spcontentdatabase.aspx"&gt;SPContentDatabase&lt;/a&gt; class. A content database is a SQL Server database that contains all the data (lists, list items, blog posts and comments, wiki pages, and documents in document libraries) and the customized page files that constitute the site collections that belong to the database. Objects that represent each child site collection are in the &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.administration.spcontentdatabase.sites.aspx"&gt;Sites&lt;/a&gt; property.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Both &lt;strong&gt;SPWebApplication&lt;/strong&gt; and &lt;strong&gt;SPContentDatabase&lt;/strong&gt; inherit from &lt;strong&gt;SPPersistedObject&lt;/strong&gt;, so these objects persist in the farm's configuration database.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;For more detailed discussions of web applications, content databases, and their classes, see &lt;a href="http://msdn.microsoft.com/en-in/library/cc768619.aspx"&gt;The Content Hierarchy of Microsoft SharePoint Foundation&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-in/library/cc768571.aspx"&gt;Background: Content Entities in Microsoft SharePoint Foundation&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;a id="BKMK_MiddleOM"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4 class="subHeading"&gt;Middle Level Object Model&lt;/h4&gt;&lt;br /&gt;&lt;div class="subSection"&gt;&lt;br /&gt;&lt;p&gt;At the middle level of the content hierarchy are site collections and their subsites. An &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.spweb.aspx"&gt;SPWeb&lt;/a&gt; object represents a single website. An &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.spsite.aspx"&gt;SPSite&lt;/a&gt; object represents a collection of websites within a SharePoint web application that are grouped together for mainly administrative reasons. (The &lt;strong&gt;SPSite&lt;/strong&gt; class is not a collection in the sense of a class that implements &lt;a href="http://msdn.microsoft.com/en-in/library/system.collections.icollection.aspx"&gt;ICollection&lt;/a&gt;.)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The &lt;strong&gt;SPSite&lt;/strong&gt; class has a &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.spsite.rootweb.aspx"&gt;RootWeb&lt;/a&gt; property that holds its child top-level website. (Top-level websites were called "root webs" in the first version of SharePoint Foundation, Microsoft SharePoint Team Services.) In turn, the &lt;strong&gt;SPWeb&lt;/strong&gt; object that represents the top-level website has a &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.spweb.webs.aspx"&gt;Webs&lt;/a&gt; property that holds all its immediate child subsites (but not the subsites of those subsites). (The &lt;span class="unresolvedLink"&gt;AllWebs&lt;/span&gt; property returns &lt;em&gt;all&lt;/em&gt; the descendent sites and the top-level website.) &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Among the SharePoint elements that can be scoped to the site collection level are master pages, Web Parts, themes, lists, content types, and Features. A site collection can also be a unit of backup and restoration. It is also the level at which groups of users are created and assigned default permissions. Site collections are the largest possible scope for a search in SharePoint Foundation, although broader search scopes are possible in SharePoint Server 2010.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The content of a site collection is always included within a single content database.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Websites can be children of other websites, and all websites belong to a site collection. The &lt;strong&gt;SPWeb&lt;/strong&gt; class has dozens of properties and methods for programmatic handling of every aspect of the website, including users, lists, fields, content types, Features, alerts, and much more.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;For much more information about site collections and websites, see &lt;a href="http://msdn.microsoft.com/en-in/library/ee536161.aspx"&gt;Building Block: Web Sites and Site Collections&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-in/library/cc768619.aspx"&gt;The Content Hierarchy of Microsoft SharePoint Foundation&lt;/a&gt;, and &lt;a href="http://msdn.microsoft.com/en-in/library/cc768571.aspx"&gt;Background: Content Entities in Microsoft SharePoint Foundation&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;div class="alert"&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;th align="left"&gt;&lt;img id="Tip" title="Tip" alt="Tip" src="http://i.msdn.microsoft.com/dynimg/IC115537.gif" xmlns="" /&gt; &lt;strong&gt;Tip: &lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Both &lt;strong&gt;SPWeb&lt;/strong&gt; and &lt;strong&gt;SPSite&lt;/strong&gt; evolved from early versions of what is now called "SharePoint" before there was a .NET Framework. Even today they wrap some COM objects. The .NET Framework garbage collector does not know how to release these COM resources. Accordingly, both classes implement the &lt;a href="http://msdn.microsoft.com/en-in/library/system.idisposable.aspx"&gt;IDisposable&lt;/a&gt; interface. If they are not disposed of, website and site collection objects cause memory leaks on the farm servers. It is essential that SharePoint developers call the &lt;a href="http://msdn.microsoft.com/en-in/library/system.idisposable.dispose.aspx"&gt;Dispose&lt;/a&gt; method of every &lt;strong&gt;SPWeb&lt;/strong&gt; and &lt;strong&gt;SPSite&lt;/strong&gt; that their code creates. There are some subtleties about disposing of such objects. For example, website and site collection objects that are obtained from the &lt;strong&gt;SPContext&lt;/strong&gt; object should not be disposed of. &lt;em&gt;Developers should carefully study&lt;/em&gt; &lt;a href="http://msdn.microsoft.com/en-in/library/ee557362.aspx"&gt;Disposing Objects&lt;/a&gt;. &lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;a id="BKMK_LowLevelOM"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4 class="subHeading"&gt;Low Level Object Model&lt;/h4&gt;&lt;br /&gt;&lt;div class="subSection"&gt;&lt;br /&gt;&lt;p&gt;At the heart of SharePoint are lists and list items, which are represented, respectively, by the &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.splist.aspx"&gt;SPList&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.splistitem.aspx"&gt;SPListItem&lt;/a&gt; classes. The &lt;strong&gt;SPList&lt;/strong&gt; class has members for programmatically adding, deleting, and retrieving list items, and also for managing metadata about the list such, as its content types and fields. The &lt;strong&gt;SPListItem&lt;/strong&gt; class has members for managing the item's fields, the values of its fields, its content type, and any associated workflows. Lists can have folders that give them a hierarchical structure. Folders are represented by the &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.spfolder.aspx"&gt;SPFolder&lt;/a&gt; class.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Note that, although any given list item has a specific content type, the object model provides only the &lt;strong&gt;SPListItem&lt;/strong&gt; class to represent all list items. Hence, working with list items and their fields is, in many ways, like working in a weakly typed environment. SharePoint includes a tool, &lt;a href="http://msdn.microsoft.com/en-in/library/ee538255.aspx"&gt;SPMetal&lt;/a&gt;, that can generate code for an object relational mapping. The generated code defines classes for each content type in a website and, for each field in the content type, it declares a strongly typed property. The tool makes it possible for LINQ queries to be strongly typed. For example, if a developer mistakenly refers to the &lt;strong&gt;DueDate&lt;/strong&gt; field of the &lt;strong&gt;Task&lt;/strong&gt; content type as "DateDue", the compiler catches the mistake if SPMetal is used and the reference is to a property of a &lt;strong&gt;Task&lt;/strong&gt; type object, &lt;code&gt;myTask.DateDue&lt;/code&gt;. However, without SPMetal, the reference would have to be to a member of the fields collection of an &lt;strong&gt;SPListItem&lt;/strong&gt; object, &lt;code&gt;myItem["DateDue"]&lt;/code&gt;. The mistake would not be caught until run time.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Each field (column) on a list item is represented by an &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.spfield.aspx"&gt;SPField&lt;/a&gt; object.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;For more information about lists, list items, folders, and fields, see &lt;a href="http://msdn.microsoft.com/en-in/library/ee534985.aspx"&gt;Building Block: Lists and Document Libraries&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-in/library/ee535893.aspx"&gt;Building Block: Columns and Field Types&lt;/a&gt;, and &lt;a href="http://msdn.microsoft.com/en-in/library/ee536277.aspx"&gt;SharePoint List Data Model&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;a id="BKMK_Services"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4 class="subHeading"&gt;Services Hierarchy&lt;/h4&gt;&lt;br /&gt;&lt;div class="subSection"&gt;&lt;br /&gt;&lt;p&gt;The Services Hierarchy includes classes that represent web services, Windows services, other types of services, instances of services, and CFSIs of services (see &lt;a href="http://www.blogger.com/post-create.g?blogID=7871774925932891304#BKMK_ServiceApplicationFramework"&gt;Services and the Service Application Framework&lt;/a&gt; earlier in this article).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;A SharePoint Foundation service is represented by a class that inherits from &lt;strong&gt;SPService&lt;/strong&gt;. The class provides members that get information about the jobs the service is performing. If a service implements the &lt;a href="http://msdn.microsoft.com/en-in/library/ee536263.aspx"&gt;Service Application Framework&lt;/a&gt;, the &lt;strong&gt;SPService&lt;/strong&gt; object has an &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.administration.spservice.applications.aspx"&gt;Applications&lt;/a&gt; property that holds all the CFSIs of the service that are running on the farm. A CFSI of a service is represented by an object of a class that inherits from the &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.administration.spserviceapplication.aspx"&gt;SPServiceApplication&lt;/a&gt; class.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Every &lt;strong&gt;SPService&lt;/strong&gt; object has an &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.administration.spservice.instances.aspx"&gt;Instances&lt;/a&gt; property that holds all the instances of the service that are running on various servers in the farm. The instances that host a particular CFSI are held in the &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.administration.spserviceapplication.serviceinstances.aspx"&gt;ServiceInstances&lt;/a&gt; property of the &lt;strong&gt;SPServiceApplication&lt;/strong&gt; object that represents the CFSI. No more than one instance of each CFSI runs on any one server. However, a given service can have multiple CFSIs, and they can run on the same servers. Moreover, a given CFSI (and, thus, a given service) can run on multiple servers, in which case each server has its own actual instance (a running process) of the CFSI. If the service has no CFSIs, it still has instances on each server on which it runs, but there can be no more than one instance of such a service on a given server. Each instance is represented by an object of a class derived from &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.administration.spserviceinstance.aspx"&gt;SPServiceInstance&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Applications that consume services that conform to the framework are represented by proxies. Here, also, there is a proxy object for the service as a whole and a proxy for the particular CFSI that is being consumed. The consumer proxy for a service is represented by an &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.administration.spserviceproxy.aspx"&gt;SPServiceProxy&lt;/a&gt; object and the proxy for the CFSI is represented by an &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.administration.spserviceapplicationproxy.aspx"&gt;SPServiceApplicationProxy&lt;/a&gt; object.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Figure 10 illustrates the relationships among the main classes in the Service Application Framework.&lt;/p&gt;&lt;strong&gt;Figure 10. Relation of major classes in the Service Application Framework&lt;/strong&gt; &lt;img id="e00e5709-0674-439f-b575-ceda3d428fd8" title="Class relations in Service Application Framework" alt="Class relations in Service Application Framework" src="http://i.msdn.microsoft.com/dynimg/IC347465.gif" xmlns="" /&gt; &lt;br /&gt;&lt;p&gt;The following kinds of objects are persisted in the configuration database because these classes inherit from &lt;strong&gt;SPPersistedObject&lt;/strong&gt;:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;SPService&lt;/strong&gt; &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;SPServiceApplication&lt;/strong&gt; &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;SPServiceInstance&lt;/strong&gt; &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;SPServiceProxy&lt;/strong&gt; &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;strong&gt;SPServiceApplicationProxy&lt;/strong&gt; &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;For more information about the services object model, see &lt;a href="http://msdn.microsoft.com/en-in/library/cc768564.aspx"&gt;The Services Hierarchy of Microsoft SharePoint Foundation&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-in/library/cc768569.aspx"&gt;Background: Service Entities in Microsoft SharePoint Foundation&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;a id="BKMK_ClientOM"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h1 class="heading"&gt;Client Object Models in SharePoint&lt;/h1&gt;&lt;br /&gt;&lt;div id="section1486" class="section"&gt;&lt;br /&gt;&lt;p&gt;There are three client object models in SharePoint Foundation: one each for Microsoft Silverlight applications, Microsoft .NET Framework applications, and ECMAScript. They are almost the same in the APIs that they expose. The *.js files that contain the ECMAScript client object model, like all *.js files, are downloaded automatically to the user's computer when a page that references the object model is accessed. (The standard built-in master page for SharePoint references these files.) &lt;/p&gt;&lt;br /&gt;&lt;p&gt;The assemblies that contain the Silverlight object model can be downloaded in the .xap file, but another alternative is to download at run time the file %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS\ClientBin\Microsoft.SharePoint.Client.xap, which encases the Microsoft Silverlight assemblies.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The .NET Framework object model can be called only if the assemblies that contain the object model have been installed to the client computer. You must use the official redistribution package, &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=b4579045-b183-4ed4-bf61-dc2f0deabe47"&gt;SharePoint Foundation 2010 Client Object Model Redistributable&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;These object models provide a subset of the classes in the server-side &lt;code&gt;microsoft.sharepoint.dll&lt;/code&gt; assembly, although many of the class names have been slightly changed (usually by dropping the "SP" at the beginning of the class name). The client object models are implemented as a WCF service (&lt;code&gt;.../_vti_bin/client.svc&lt;/code&gt;), but they use &lt;a href="http://msdn.microsoft.com/en-in/library/ms733027.aspx"&gt;web bindings&lt;/a&gt; to implement efficient &lt;em&gt;request batching&lt;/em&gt;. Commands are serialized into XML and sent to the server in a single HTTP request. For every command, a corresponding server object model call is made, and the server returns a response to the client in compacted JavaScript Object Notation (JSON) format, which the proxy parses. The client APIs provide a familiar, object-oriented interface to the WCF service, so developers are shielded from the details of the service. In particular, the client-side runtime handles all communication between the clients and server.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.client.aspx"&gt;Microsoft.SharePoint.Client&lt;/a&gt; is the core namespace used for the Microsoft .NET Framework managed and Silverlight object models, and &lt;a href="http://msdn.microsoft.com/en-in/library/ee557057.aspx"&gt;SP&lt;/a&gt; is the core namespace for the ECMAScript object model. Client objects inherit from the &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.client.clientobject.aspx"&gt;ClientObject&lt;/a&gt; class (ECMAScript: &lt;a href="http://msdn.microsoft.com/en-in/library/ff410042.aspx"&gt;ClientObject&lt;/a&gt;).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;SharePoint code on a client begins by retrieving a client context object that represents the current request context, and through this context, you can obtain access to client objects at the site-collection level or lower in the SharePoint Foundation hierarchy. Client objects inherit from the &lt;strong&gt;ClientObject&lt;/strong&gt; class (ECMAScript: &lt;a href="http://msdn.microsoft.com/en-in/library/ff410042.aspx"&gt;ClientObject&lt;/a&gt;), and you can use them to retrieve properties for a specific SharePoint object, to retrieve child objects and their properties, or to retrieve child items from a collection.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;After a client object is obtained, a query is defined and loaded. This is followed by a call of the &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.client.clientruntimecontext.executequery.aspx"&gt;ExecuteQuery&lt;/a&gt; method or the &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.client.clientruntimecontext.executequeryasync.aspx"&gt;ExecuteQueryAsync&lt;/a&gt; method (ECMAScript: &lt;a href="http://msdn.microsoft.com/en-in/library/ff411085.aspx"&gt;executeQueryAsync&lt;/a&gt;) to send the query to the server. The query commands are packaged as XML and processed on the server by the WCF service, Client.svc, which runs the batched commands by calls to the server-side object model. Returned data is sent back to the client by the service as JSON data.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Figure 11 shows the major components and events of the client's interaction with the server when the client object models are used.&lt;/p&gt;&lt;strong&gt;Figure 11. Client and server interaction with the client object models&lt;/strong&gt; &lt;img id="89ccb2b1-299e-4e99-8b1c-3ea2b0078042" title="Interaction of client and server object models" alt="Interaction of client and server object models" src="http://i.msdn.microsoft.com/dynimg/IC464715.jpg" width="663" height="581" xmlns="" /&gt; &lt;br /&gt;&lt;div class="alert"&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;th align="left"&gt;&lt;img id="note" class="cl_IC101471" title="note" alt="note" src="http://i.msdn.microsoft.com/Hash/030c41d9079671d09a62d8e2c1db6973.gif" xmlns="" /&gt; &lt;strong&gt;Note: &lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;The Silverlight client object model in SharePoint is not supported on Windows Phone 7. &lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;For more information about the client object models, see the following topics: &lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;a href="http://msdn.microsoft.com/en-in/library/ee857094.aspx"&gt;Using the SharePoint Foundation 2010 Managed Client Object Model&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;a href="http://msdn.microsoft.com/en-in/library/ee537564.aspx"&gt;Using the Client APIs&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;a href="http://msdn.microsoft.com/en-in/library/ee537247.aspx"&gt;Managed Client Object Model&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;a href="http://msdn.microsoft.com/en-in/library/ee537855.aspx"&gt;Object Model Hierarchy and Identity&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;a href="http://msdn.microsoft.com/en-in/library/ee536158.aspx"&gt;Client Context as Central Object&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;&lt;a href="http://msdn.microsoft.com/en-in/library/ff798452.aspx"&gt;Client Application Models in SharePoint 2010&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div class="alert"&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;th align="left"&gt;&lt;img id="note" class="cl_IC101471" title="note" alt="note" src="http://i.msdn.microsoft.com/Hash/030c41d9079671d09a62d8e2c1db6973.gif" xmlns="" /&gt; &lt;strong&gt;Note: &lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;The client object models are not the only way to query SharePoint list data from a client application. SharePoint also supports a WCF Data Services (formerly ADO.NET Data Services) interface to the list data. For more information, see &lt;a href="http://www.blogger.com/post-create.g?blogID=7871774925932891304#BKMK_DataAndQuery"&gt;Data Model, Data Management, and Query System&lt;/a&gt; earlier in this article. The section &lt;a href="http://www.blogger.com/post-create.g?blogID=7871774925932891304#BKMK_LowLevelOM"&gt;Low Level Object Model&lt;/a&gt; earlier in this article mentions that the server object model treats content types and their field types in a weakly typed manner, but that the SPMetal tool enables strongly typed programming against these entities. A parallel point applies to client-side computing: Content types are weakly typed in the client object model, but they are strongly typed when you are programming against the WCF Data Services interface. &lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;a id="SP14Architectures_workflows"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h1 class="heading"&gt;Workflows in SharePoint&lt;/h1&gt;&lt;br /&gt;&lt;div id="section1573" class="section"&gt;&lt;br /&gt;&lt;p&gt;Like all workflows, SharePoint workflows model and systematize business processes. However, SharePoint workflows are generally oriented around the SharePoint list data model. In most cases, each instance of a SharePoint workflow embodies processes that surround an item in a list or document library. Indeed, the most common kinds of SharePoint workflow are workflows that are associated with a list or with one or more content types. Some SharePoint workflows are manually started, but they are most commonly designed to start automatically in response to some event connected with a list item or library item, such as adding, deleting, or updating an item.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;There are also workflows associated with websites rather than lists or content types. These are always started manually (or programmatically), not automatically in response to some event. In addition, they are generally used to systematize processes that transcend particular list items, such as retrieving and setting values of multiple list items across different lists, or performing non-list operations, such as creating and configuring subsites. &lt;/p&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;th align="left"&gt;&lt;img id="note" class="cl_IC101471" title="note" alt="note" src="http://i.msdn.microsoft.com/Hash/030c41d9079671d09a62d8e2c1db6973.gif" xmlns="" /&gt; &lt;strong&gt;Note: &lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;SharePoint Designer envisages two &lt;em&gt;Reusable&lt;/em&gt; and &lt;em&gt;Globally Reusable&lt;/em&gt; workflows. These are really just list workflows that you can use on multiple lists without having to re-create them for each of those lists. &lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Workflows in SharePoint are built on the framework provided by Windows Workflow Foundation (WF). When a workflow is running in SharePoint, the WF runtime engine is hosted in the SharePoint process. The WF runtime engine loads and unloads workflow templates and provides sequencing and persistence for workflows. The persistence services are crucial because they enable workflows to remain active through discontinuous user sessions, through resets of the front-end web server, and even through reboots of the server. &lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;For many of its services, WF enables customization by hosting applications. SharePoint provides custom implementations of the following services for the engine: transaction, persistence, notifications, roles, tracking, and messaging. For example, when a workflow instance reaches a point at which it is waiting for user input, SharePoint unloads that workflow instance from memory and persists its data in the content database. Then, when an appropriate event occurs that requires that the workflow instance start again, such as when a user enters input, SharePoint re-instantiates the workflow instance by using persisted data, so the workflow instance can receive and handle the event as necessary.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;A SharePoint workflow type is represented by two entities that work in partnership with each other. First, there is a workflow &lt;em&gt;definition&lt;/em&gt;. These can be defined in code and compiled into an assembly, or defined in XOML markup. When the workflow type is defined in XOML, it is called a declarative or "no code" workflow, and it persists uncompiled in the content database until it is called, at which point it is compiled just-in-time for use. The workflow definition, in either compiled or declarative form, specifies the parameters, events (such as activation), and sequence of activities in the workflow. It also defines the branching structures of the workflow and the conditions that determine the paths of execution.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The partner of the workflow definition is the workflow &lt;em&gt;template definition&lt;/em&gt;. A workflow template definition is an XML file that contains the information SharePoint requires to instantiate and run the workflow, such as the following:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li class="unordered"&gt;Name and description of the workflow &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;Class within the workflow assembly to call &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;Identity of the workflow assembly &lt;/li&gt;&lt;br /&gt;&lt;li class="unordered"&gt;Location of any custom forms used in this workflow &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;You can store these XML files in either of two locations. The first is %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\&lt;em&gt;lcid&lt;/em&gt;\Workflow. For example, the template definition of the built-in moderation workflow is stored in the moderationworkflow.xml file. The second location is the &lt;strong&gt;Workflows&lt;/strong&gt; list of the root website of a site collection. The built-in Three-state workflow is an example. Regardless of where it is stored, at run time, the workflow template definition is used to create an &lt;a href="http://msdn.microsoft.com/en-in/library/microsoft.sharepoint.workflow.spworkflowtemplate.aspx"&gt;SPWorkflowTemplate&lt;/a&gt; object, which is cached to speed up the creation of workflow instances. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;You can associate workflow templates with lists (including document libraries), content types, and websites. For any workflow template that is associated with a list or content type, an item of that list or content type can have an instance of the workflow in progress. Although there can be only one instance of a specific workflow type in progress at any one time for a given item, any item can have multiple workflows in progress, each of a different type.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;You can create compiled workflows by using the Microsoft Visual Studio workflow designer. You can also create declarative workflows by using SharePoint Designer. Workflows are installed as Features at the site collection level. But you can also "publish" a workflow directly from SharePoint Designer to a website, in which case there is no Feature.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;A workflow type is available for a list, content type, or website only if it is associated with the list, content type, or website. These associations are stored in the content database of each site collection. This association data typically includes whether the workflow is started automatically or by users. If a workflow is added to multiple content types, lists, or websites, it will have one entry for each such association. Likewise, if you add multiple workflows to a specific content type, list, or website, the database contains one entry for each workflow that is added to the content type, list, or website.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;For more information about the SharePoint workflow infrastructure, see &lt;a href="http://msdn.microsoft.com/en-in/library/ms434426.aspx"&gt;Introduction to Workflows in SharePoint Foundation&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;a id="SP14Architectures_conclusion"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h1 class="heading"&gt;Conclusion&lt;/h1&gt;&lt;br /&gt;&lt;div id="section1627" class="section"&gt;&lt;br /&gt;&lt;p&gt;Even an article as long as this one cannot cover all the SharePoint architectures or say everything that could be said about the architectures that it does cover. It does provide an overview of the most important SharePoint architectures and should enable you to do further research on each of them.&lt;/p&gt;&lt;/div&gt;&lt;a id="SP14Architectures_AdditionalResources"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871774925932891304-5232853818380630911?l=balanr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://balanr.blogspot.com/feeds/5232853818380630911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7871774925932891304&amp;postID=5232853818380630911' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871774925932891304/posts/default/5232853818380630911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871774925932891304/posts/default/5232853818380630911'/><link rel='alternate' type='text/html' href='http://balanr.blogspot.com/2011/03/sharepoint-2010-architectures-overview.html' title=''/><author><name>balan</name><uri>http://www.blogger.com/profile/15726184235090633722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://4.bp.blogspot.com/_UDvvdE81WwE/SjnOdXMjDtI/AAAAAAAAAMA/9fbAkJAkVFQ/S220/balan1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871774925932891304.post-424800963567055245</id><published>2011-01-04T23:24:00.000-08:00</published><updated>2011-01-04T23:31:27.364-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSS'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><title type='text'>Difference between WSS and Sharepoint</title><content type='html'>1. WSS is more affordable as it is shipped with Windows Server 2003 or Microsoft Small Business Server.&lt;br /&gt;&lt;br /&gt;2. MOSS costs more than WSS because it requires its own licensing, and it requires purchases of other software and optional hardware.&lt;br /&gt;&lt;br /&gt;3. WSS is suitable for small to medium projects, while MOSS is for highly budgeted, larger projects.&lt;br /&gt;&lt;br /&gt;4. MOSS is actually based on the WSS platform, and only expanded with additional components.&lt;br /&gt;&lt;br /&gt;5. WSS is limited, but much simpler to employ compared to the extensive but more complicated MOSS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871774925932891304-424800963567055245?l=balanr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://balanr.blogspot.com/feeds/424800963567055245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7871774925932891304&amp;postID=424800963567055245' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871774925932891304/posts/default/424800963567055245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871774925932891304/posts/default/424800963567055245'/><link rel='alternate' type='text/html' href='http://balanr.blogspot.com/2011/01/difference-between-wss-and-sharepoint.html' title='Difference between WSS and Sharepoint'/><author><name>balan</name><uri>http://www.blogger.com/profile/15726184235090633722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://4.bp.blogspot.com/_UDvvdE81WwE/SjnOdXMjDtI/AAAAAAAAAMA/9fbAkJAkVFQ/S220/balan1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871774925932891304.post-4366343590069915012</id><published>2011-01-04T22:32:00.000-08:00</published><updated>2011-01-04T22:35:18.677-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint 2010 architecture'/><title type='text'>Sharepoint 2010 architecture diagram</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_UDvvdE81WwE/TSQREPLhyiI/AAAAAAAAAew/sMJolXvCIOs/s1600/sharepoint%2B2010%2Barchitecture.gif"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 334px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5558586604574067234" border="0" alt="" src="http://4.bp.blogspot.com/_UDvvdE81WwE/TSQREPLhyiI/AAAAAAAAAew/sMJolXvCIOs/s400/sharepoint%2B2010%2Barchitecture.gif" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871774925932891304-4366343590069915012?l=balanr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://balanr.blogspot.com/feeds/4366343590069915012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7871774925932891304&amp;postID=4366343590069915012' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871774925932891304/posts/default/4366343590069915012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871774925932891304/posts/default/4366343590069915012'/><link rel='alternate' type='text/html' href='http://balanr.blogspot.com/2011/01/sharepoint-2010-architecture-diagram.html' title='Sharepoint 2010 architecture diagram'/><author><name>balan</name><uri>http://www.blogger.com/profile/15726184235090633722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://4.bp.blogspot.com/_UDvvdE81WwE/SjnOdXMjDtI/AAAAAAAAAMA/9fbAkJAkVFQ/S220/balan1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_UDvvdE81WwE/TSQREPLhyiI/AAAAAAAAAew/sMJolXvCIOs/s72-c/sharepoint%2B2010%2Barchitecture.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871774925932891304.post-6887289571671697259</id><published>2009-08-05T23:14:00.000-07:00</published><updated>2009-08-05T23:33:24.712-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dot net 2.0 features'/><title type='text'>Dot Net 2.0 New Features</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Themes and Skins:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Reference: &lt;/span&gt;&lt;a href="http://www.ondotnet.com/pub/a/dotnet/2004/08/30/themesandskins.html?page=1"&gt;&lt;span style="font-family:arial;"&gt;http://www.ondotnet.com/pub/a/dotnet/2004/08/30/themesandskins.html?page=1&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Localization:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Reference:&lt;/span&gt;&lt;a href="http://www.codeproject.com/useritems/localization.asp"&gt;&lt;span style="font-family:arial;"&gt;http://www.codeproject.com/useritems/localization.asp&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Generics:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Reference:&lt;/span&gt;&lt;a href="http://www.15seconds.com/issue/031024.htm"&gt;&lt;span style="font-family:arial;"&gt;http://www.15seconds.com/issue/031024.htm&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Partial Classes:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Reference:&lt;/span&gt;&lt;a href="http://www.devx.com/dotnet/Article/22603"&gt;&lt;span style="font-family:arial;"&gt;http://www.devx.com/dotnet/Article/22603&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Nullable Types:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Reference:&lt;/span&gt;&lt;a href="http://www.c-sharpcorner.com/UploadFile/mosessaur/nullabletypes08222006164135PM/nullabletypes.aspx"&gt;&lt;span style="font-family:arial;"&gt;c-sharpcorner&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Static Classes:&lt;/strong&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Reference:&lt;/span&gt;&lt;a href="http://www.c-sharpcorner.com/UploadFile/prabuvel/CSharpNewFeatures11162005041030AM/CSharpNewFeatures.aspx"&gt;&lt;span style="font-family:arial;"&gt;c-sharpcorner&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Master Pages:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Reference:&lt;/span&gt;&lt;a href="http://www.codeproject.com/aspnet/masterpages.asp"&gt;&lt;span style="font-family:arial;"&gt;http://www.codeproject.com/aspnet/masterpages.asp&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Selective Validation:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Reference:&lt;/span&gt;&lt;a href="http://www.c-sharpcorner.com/UploadFile/DipalChoksi/valgrp_asp20_dc09212006132516PM/valgrp_asp20_dc.aspx"&gt;&lt;span style="font-family:arial;"&gt;c-sharpcorner&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Data Points:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Reference:&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/05/11/DataPoints/default.aspx"&gt;&lt;span style="font-family:arial;"&gt;msdn&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Transaction Scope:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Reference:&lt;/span&gt;&lt;a href="http://www.c-sharpcorner.com/UploadFile/mosessaur/TransactionScope04142006103850AM/TransactionScope.aspx"&gt;&lt;span style="font-family:arial;"&gt;c-sharpcorner&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Caching:&lt;/strong&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Reference:&lt;/span&gt;&lt;a href="http://www.developer.com/net/asp/article.php/10917_3427131_1"&gt;&lt;span style="font-family:arial;"&gt;http://www.developer.com/net/asp/article.php/10917_3427131_1&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Membership, Roles, and Profile:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Reference:&lt;/span&gt;&lt;a href="http://aspnet.4guysfromrolla.com/articles/120705-1.aspx"&gt;&lt;span style="font-family:arial;"&gt;http://aspnet.4guysfromrolla.com/articles/120705-1.aspx&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Use Case Points:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Reference:&lt;/span&gt;&lt;a href="http://www.codeproject.com/gen/design/usecasepoints.asp"&gt;&lt;span style="font-family:arial;"&gt;http://www.codeproject.com/gen/design/usecasepoints.asp&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Function Point:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Reference:&lt;/span&gt;&lt;a href="http://www.codeproject.com/gen/design/Softwarecosting.asp"&gt;&lt;span style="font-family:arial;"&gt;http://www.codeproject.com/gen/design/Softwarecosting.asp&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;URL Mapping:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Reference:&lt;/span&gt;&lt;a href="http://aspnet.4guysfromrolla.com/articles/011007-1.aspx"&gt;&lt;span style="font-family:arial;"&gt;http://aspnet.4guysfromrolla.com/articles/011007-1.aspx&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;CSS Friendly Control Adapters:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Reference:&lt;/span&gt;&lt;a href="http://www.asp.net/CSSAdapters/WhitePaper.aspx"&gt;&lt;span style="font-family:arial;"&gt;http://www.asp.net/CSSAdapters/WhitePaper.aspx&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Networking:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Reference:&lt;/span&gt;&lt;a href="http://www.15seconds.com/Issue/051215.htm"&gt;&lt;span style="font-family:arial;"&gt;http://www.15seconds.com/Issue/051215.htm&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;ASP.NET Web Site Layout&lt;/strong&gt; :&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Reference:&lt;/span&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ex526337.aspx"&gt;&lt;span style="font-family:arial;"&gt;http://msdn2.microsoft.com/en-us/library/ex526337.aspx&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Site Navigation:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Reference:&lt;/span&gt;&lt;a href="http://aspnet.4guysfromrolla.com/articles/111605-1.aspx"&gt;&lt;span style="font-family:arial;"&gt;http://aspnet.4guysfromrolla.com/articles/111605-1.aspx&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;ASP.NET AJAX:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Reference:&lt;/span&gt;&lt;a href="http://ajax.asp.net/Default.aspx"&gt;&lt;span style="font-family:arial;"&gt;http://ajax.asp.net/Default.aspx&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Personalization:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Reference:&lt;/span&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms379593(VS.80).aspx"&gt;&lt;span style="font-family:arial;"&gt;http://msdn2.microsoft.com/en-us/library/ms379593(VS.80).aspx&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt; source:&lt;a href="http://nilangshah.wordpress.com/2007/05/25/dot-net-20-new-features-collection/"&gt;http://nilangshah.wordpress.com/2007/05/25/dot-net-20-new-features-collection/&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871774925932891304-6887289571671697259?l=balanr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://balanr.blogspot.com/feeds/6887289571671697259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7871774925932891304&amp;postID=6887289571671697259' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871774925932891304/posts/default/6887289571671697259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871774925932891304/posts/default/6887289571671697259'/><link rel='alternate' type='text/html' href='http://balanr.blogspot.com/2009/08/dot-net-20-new-features.html' title='Dot Net 2.0 New Features'/><author><name>balan</name><uri>http://www.blogger.com/profile/15726184235090633722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://4.bp.blogspot.com/_UDvvdE81WwE/SjnOdXMjDtI/AAAAAAAAAMA/9fbAkJAkVFQ/S220/balan1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871774925932891304.post-839014050794740170</id><published>2009-06-26T06:45:00.000-07:00</published><updated>2009-06-26T06:51:43.718-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='provider model'/><title type='text'>A Look at ASP.NET 2.0's Provider Model</title><content type='html'>&lt;span style="color:#000066;"&gt;Introduction&lt;br /&gt;Back in 2001 I started work on an ASP.NET online messageboard application called WebForums.NET. The idea was to create an ASP.NET-based messageboard system that could easily be plugged into an existing website. One particular challenge building such an end-to-end application was providing a means for customers to be able to integrate it within their system. For example, clearly an online forum needs some sort of data store to store user information, forums, posts, and so on, but what's important is not to lock the customer into a particular data store. That is, you shouldn't say, "I'm going to have my application use Microsoft SQL Server 2000," because at that point, how are customers who use Oracle or Access going to be able to use your software?&lt;br /&gt;&lt;br /&gt;Another issue is with integration into a customer's existing data. All online forum sites have user accounts and a means for creating new accounts; this is typically modeled in the forum's architecture as a Users table in the database. But customers might already have their own user-related database tables that already have thousands of user accounts. Or a customer might want to use the forums in an intranet setting, authenticating and storing user information against Active Directory, rather than some database table. When a forum software system creates a Users database table and says to the customer, "This is how you will store users," they alienate those customers who already have existing infrastructure and user data. Clearly this challenge faces any company or developer that's creating software to be used "in the wild."&lt;br /&gt;&lt;br /&gt;This particular challenge arises when you build a system with a rigid API implementation. Rather than providing a means to customize the logic, a rigid API implementation hard codes the implementation details - you will use SQL Server as your backend data store... you will have a Users table in this database where all user information will be stored. This rigidity, however, can be broken quite easily using the provider design pattern. With the provider design pattern the system architect merely defines the API, the programmatic functionality offerred by the system. For an online forum application, this might include a Users class with methods like Authenticate(username, password) and GetUserDetails(username).&lt;br /&gt;&lt;br /&gt;The beauty of the provider model is that the customer implementing the solution can specify a custom class that the system should use. This custom class must implement the system's well-defined API, but it allows for any custom implementation to be seamlessly plugged in. That is, once this API is defined, the system implementor can create a default concrete implementation - one that uses SQL Server and a Users table - that most customers can use without modification. Those customers that have a custom need - those that want to use Oracle or have user data stored in some other manner - can create classes that provide the necessary functionality and plug them into the system.&lt;br /&gt;&lt;br /&gt;The provider design pattern is used throughout ASP.NET 2.0. There are also guidelines on how to provide this functionality in ASP.NET 1.x applications. In this article we'll examine the provider model and see how it's used in ASP.NET 2.0. Read on to learn more!&lt;br /&gt;Breaking the Rigid API ImplementationFairly early on in my development of WebForums.NET I realized that the rigid API implementation was going to be a problem. Part of my design goal for the software was to make it as flexible and customizable as possible, and boxing users into using SQL Server and my implementation of the users data model seemed restrictive, at best. Unfortunately, I didn't have any insight into this problem, but luckily &lt;/span&gt;&lt;a href="http://weblogs.asp.net/asmith"&gt;&lt;span style="color:#000066;"&gt;Andy Smith&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#000066;"&gt; did. He suggested (and built!) a system that involved two pieces:&lt;br /&gt;A set of abstract base classes that defined the system's core functionality, and&lt;br /&gt;Code that would, at runtime, dynamically load a specified class that extended the abstract base class and use its functionality. Specifically, the code inspected the Web.config file, which contained a &lt;configsetting&gt;that gave the fully-qualified name for the class to use. With this architecture, I could define the system's functionality through a series of abstract base classes, provide concrete implementations of these classes using SQL Server 2000 and the Users table. Customers that were happy with this configuration could just use the application as-is and everything would work fine without them needing to write a line of code. Those developers who needed to customize the solution for their unique needs, however, could do so by creating their own classes that derived from the appropriate abstract base class(es). They could have this new class used by the system by simply dropping the assembly in the application's /bin directory and updating the Web.config file.&lt;br /&gt;Specifically, WebForums.NET shipped with an abstract base class called DataProvider that spelled out all of the methods in the system, akin to:&lt;br /&gt;public abstract class DataProvider&lt;br /&gt;{&lt;br /&gt;public abstract bool AuthenticateUser(string username, string password);&lt;br /&gt;public abstract User GetUserInfo(string username);&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;public static DataProvider Instance()&lt;br /&gt;{&lt;br /&gt;...&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;The AuthenticateUser(username, password) and GetUserInfo(username) methods spelled out two of the many methods defined by the system. The static Instance() method was the workhorse of the DataProvider class. It contained the code that inspected the Web.config file for the WebForums.NET configuration information, which indicated the fully-qualified name of the class the system was to use. The method then used reflection (with caching) to create an instance of that class and return it to the system.&lt;br /&gt;WebForums.NET shipped with a class called SqlDataProvider that extended the DataProvider base class, providing concrete implementations for the assorted methods. For example, all methods in SqlDataProvider worked with data stored in a SQL Server 2000 database; the user-related methods worked with a pre-defined Users database table. A customer who wanted to change the backend functionality could create her own class that derived from DataProvider, indicating in the Web.config file that their custom class should be used. For example, the Web.config in WebForums.NET would include the following content: &lt;/span&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5351633056949236178" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 50px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_UDvvdE81WwE/SkTR6T-ycdI/AAAAAAAAATI/6P8wkZkGbUY/s400/pic1.JPG" border="0" /&gt; &lt;span style="color:#000066;"&gt;This setting information, by default, referenced the SqlDataProvider class that shipped with WebForums.NET. However, if a customer created their own implementation of the API, they could provide their class's details here, and the system would automatically start using their implementation in lieu of the default implementation.&lt;br /&gt;With this architecture in place, the page developer working with the WebForums.NET could use code like the following to authenticate a user:&lt;br /&gt;if (DataProvider.Instance().AuthenticateUser(username, password))&lt;br /&gt;// User is authenticated&lt;br /&gt;else&lt;br /&gt;// Username/password invalid!&lt;br /&gt;When the DataProvider.Instance() method is called, the configuration file is examined and an instance of the appropriate class is returned. This would be the default SqlDataProvider class if the customer has not created their own implementation; it would be their own class if they did. Once the DataProvider.Instance() method returns an instance of the appropriate provider, we can simply invoke the members of the API, AuthenticateUser() in this example.&lt;br /&gt;&lt;br /&gt;The Benefits of the Provider ModelThe provider model offers a number of benefits. First, note that there's a clean separation between the code and the backend implementation. Regardless if whether or not the code to authenticate a user is done against a SQL Server 2000 database's Users table, or if it's done against an Active Directory store, the code from the page developer's perspective is the same: DataProvider.Instance().AuthenticateUser(username, password). The backend implementation changes are transparent.&lt;br /&gt;Since system architects are strongly encouraged to create a default concrete implementation, the provider model offers the best of both worlds: to those who are content with the default implementation, the system just works as expected; for those that need to customize the system, they can do so without upsetting the existing code or programmatic logic. This design pattern also makes prototyping and agile development a lot easier. For example, in the early iterations of working with the system, it might be easier to just use the default implementation. However, later you suspect you'll need to cusomize certain aspects in order to integrate the work with your company's existing systems. When that time comes, you can achieve the needed customization through the provider model, meaning your earlier work need not be changed to reflect the backend implementation changes.&lt;br /&gt;Like many good design patterns, the provider model also affords separation of duties among developers. One set of developers can be tasked with mastering the system's API, while others can be tasked with focusing on the backend implementation and customization. These two groups can work on the system without stepping on one another's toes. Furthermore, if the system being worked on is an industry standard - like ASP.NET 2.0 - skills from both tasks can be easily carried over into future jobs.&lt;br /&gt;The Provider Model in ASP.NET 2.0ASP.NET 2.0 utilizes the provider model throughout its architecture. Many of its subsystems - Membership, Site Navigation, Personalization, and so on - utilize the provider model. Each of these subsystems provide a default implementation, but enable customers to tweak the functionality to their own needs. For example, the Site Navigation piece of ASP.NET 2.0 allows a page developer to define the navigational structure of their website. This data can then be used by a variety of Web controls, to display site maps, breadcrumbs, treeviews, or menus that highlight the site's navigation and/or show the user's location in the site. In addition to navigation-related Web controls, the site navigation API provides a bevy of methods for interacting with the website's navigation information&lt;br /&gt;By default the site's navigational information must be encoded in a properly-formatted XML file. This is the data store that the default site navigation is hard-coded to use. However, ASP.NET 2.0's provider model makes it easy for you to use your own data store for site navigation. For example, in a project I'm currently working on a database contains information on what pages exist in the site and what permissions various users have for those pages. Rather than redefining this information in an XML file and having to try to keep two copies of this information up to date, in order to utilize the site navigation in ASP.NET 2.0 I will be able to simply create a provider class that works directly with the database information. Once this class is created and specified in the website's configuration, the navigation Web controls will be working against the application's custom navigation information stored in the database. (Note: as of the time of this writing, this project is still in ASP.NET 1.x. However, this example hopefully illustrates the benefit of the provider model.)&lt;br /&gt;Personally I think that the provider model is one of ASP.NET 2.0's greatest features for migration. ASP.NET 2.0 offers a lot of new features that developers had to custom bake in 1.x. If these new features in 2.0 used rigid implementations, it would dissuade migration from 'living' 1.x applications that used custom solutions since many of the new ASP.NET 2.0 Web controls use these new subsystems. With the provider model in place, however, we can upgrade our 1.x apps to 2.0 and create a provider to have 2.0's new subsystems integrate with our custom baked solutions. That means when moving to 2.0 we can use the new Web controls and have them seamlessly use our existing systems thanks to the provider model.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff6600;"&gt;Source: &lt;/span&gt;&lt;a href="http://aspnet.4guysfromrolla.com/articles/101905-1.aspx"&gt;&lt;span style="color:#ff6600;"&gt;http://aspnet.4guysfromrolla.com/articles/101905-1.aspx&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871774925932891304-839014050794740170?l=balanr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://balanr.blogspot.com/feeds/839014050794740170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7871774925932891304&amp;postID=839014050794740170' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871774925932891304/posts/default/839014050794740170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871774925932891304/posts/default/839014050794740170'/><link rel='alternate' type='text/html' href='http://balanr.blogspot.com/2009/06/look-at-aspnet-20s-provider-model.html' title='A Look at ASP.NET 2.0&apos;s Provider Model'/><author><name>balan</name><uri>http://www.blogger.com/profile/15726184235090633722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://4.bp.blogspot.com/_UDvvdE81WwE/SjnOdXMjDtI/AAAAAAAAAMA/9fbAkJAkVFQ/S220/balan1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_UDvvdE81WwE/SkTR6T-ycdI/AAAAAAAAATI/6P8wkZkGbUY/s72-c/pic1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871774925932891304.post-6606494742591575431</id><published>2009-06-25T23:45:00.000-07:00</published><updated>2009-06-26T00:20:17.280-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dot net 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='roles'/><category scheme='http://www.blogger.com/atom/ns#' term='membership'/><title type='text'>Introduction to ASP.NET 2.0 Roles and Membership</title><content type='html'>&lt;div align="left"&gt;&lt;span style="font-family:arial;color:#000066;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;p align="left"&gt;&lt;span style="font-family:arial;color:#000066;"&gt;Even in the days of ASP.NET 1.0/1.1, as a developer you might have spent a lot of time creating login / authentication modules and pages. You spent a lot of time designing and coding pages for user management. Till the last version you have to write and implement a login framework, authenticate users against a database, written code to react to the currently logged-in user. But with the Inception of ASP.NET 2.0, you will have some great tools available to help implementing such framework.&lt;/span&gt;&lt;/p&gt;&lt;div align="left"&gt;&lt;span style="font-family:arial;color:#000066;"&gt;Even in the days of ASP.NET 1.0/1.1, as a developer you might have spent a lot of time creating login / authentication modules and pages. You spent a lot of time designing and coding pages for user management. Till the last version you have to write and implement a login framework, authenticate users against a database, written code to react to the currently logged-in user. But with the Inception of ASP.NET 2.0, you will have some great tools available to help implementing such framework. Though you still have to write some code, but the initial pain of implementing has been eased with server-side controls provided with ASP.NET 2.0. With the new UI server side controls you can secure your web-site, and manage users. ASP.NET 2.0 has inbuilt site tool to configure and manage users and roles.In this article we will explore this great feature of ASP.NET 2.0. First we need to create a web app. Before that make sure SQL EXPRESS is up and runningFor this web app create one Master Page, one Default.aspx, CreateUser.aspx, ChangePassword.aspx, Login.aspx. The master page design should look like Figure 1. (You can change the same but for the demo using the format as shown in Figure 1)&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;color:#000066;"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 449px; CURSOR: hand; HEIGHT: 337px; TEXT-ALIGN: center" alt="" src="http://www.wwwcoder.com/main/portals/1/in_pas1.jpg" border="0" /&gt; Figure 1 - The Master Page Design&lt;br /&gt;&lt;/span&gt;&lt;p align="left"&gt;&lt;span style="font-family:arial;color:#000066;"&gt;We will start now clicking the ASP.NET Configuration button. The button is placed at the upper right corner of the Solution Explorer (see Figure 2). &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#000066;"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 233px; CURSOR: hand; HEIGHT: 95px; TEXT-ALIGN: center" alt="" src="http://www.wwwcoder.com/main/portals/1/in_pas2.jpg" border="0" /&gt;Figure 2 - Starting the ASP.NET Configuration&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#000066;"&gt;On clicking the button we are taken into the configuration page (see Figure 3), which is opened in the Internet Explorer&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#000066;"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 453px; CURSOR: hand; HEIGHT: 315px; TEXT-ALIGN: center" alt="" src="http://www.wwwcoder.com/main/portals/1/in_pas3.gif" border="0" /&gt;Figure 3 - The ASP.NET 2.0 Site Configuration Page&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#000066;"&gt;Now click the security link. The security configuration page will appear (see Figure 4). We need to do a couple of things as your site is enabled to support only windows authentication.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#000066;"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 453px; CURSOR: hand; HEIGHT: 321px; TEXT-ALIGN: center" alt="" src="http://www.wwwcoder.com/main/portals/1/in_pas4.jpg" border="0" /&gt;Figure 4 - Configuring Security for the ASP.NET Application&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#000066;"&gt;Click Select authentication type link. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#000066;"&gt;Select From Internet option and click the done button (see Figure 5). Now you are back to the earlier page. Here click Enable Roles. As soon as you click the link, you will see that Create or Manage Role link gets activated. Click the link to create couple of roles. One as administrators and another as users. Now click the back button to come to the Home Page.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#000066;"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 459px; CURSOR: hand; HEIGHT: 323px; TEXT-ALIGN: center" alt="" src="http://www.wwwcoder.com/main/portals/1/in_pas5.gif" border="0" /&gt;Figure 5 - Configuring Application Security Access to be from the Internet&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#000066;"&gt;Now let us create some users. Say one user as admin and password …anything of your choice, and put under administrators role. Remember Password length is minimum: 7 and one Non-alphanumeric characters required, i.e. characters like @, $, ! etc…..special characters.&lt;br /&gt;At this point you can close the site and return back to the project. Now refresh the solution explorer. There you will find that one folder named App_Data has been automatically created and contains one SQL Database.&lt;/span&gt;&lt;a class="kLink" oncontextmenu="return false;" id="KonaLink1" onmouseover="adlinkMouseOver(event,this,1);" style="POSITION: static; TEXT-DECORATION: underline! important" onclick="adlinkMouseClick(event,this,1);" onmouseout="adlinkMouseOut(event,this,1);" href="http://www.wwwcoder.com/tabid/68/type/art/parentid/258/site/6297/default.aspx#" target="_top"&gt;&lt;span style="font-family:arial;color:#000066;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;color:#000066;"&gt;. That database contains the user name and password that you have created and will be creating in the future through ASP.NET Configuration tool or through your APP. The password stored in the database are encrypted by one-way Hash algorithm. The Site will be very much secured site and as a developer you don’t have to do much.&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 202px; CURSOR: hand; HEIGHT: 178px; TEXT-ALIGN: center" alt="" src="http://www.wwwcoder.com/main/portals/1/in_pas6.jpg" border="0" /&gt;Figure 6 - The Login Control&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#000066;"&gt;Now lets go back to our project and we will be using some special server controls shown in the LOGIN tab of the toolbox (see Figure 6). Open the default.aspx in the design. Drag and drop the LoginView control in the content place holder and the crate hyperlink of Login.aspx and CreateUser.aspx by simply drag and drop the two pages. The page should look like the Figure 7.&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 463px; CURSOR: hand; HEIGHT: 327px; TEXT-ALIGN: center" alt="" src="http://www.wwwcoder.com/main/portals/1/in_pas7.gif" border="0" /&gt;Figure 7 - A Page Containing the Login Control&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#000066;"&gt;Now click the Smart tag in the control and select LoggedIn Template. Then write: "Welcome and drag and drop the LoginName control."&lt;br /&gt;Now create a hyperlink to ChangePassword.aspx by simply dragging and dropping the control onto the form.&lt;br /&gt;Now open the login.aspx and set up a login form. Drag and drop the login control from the toolbox. At this point you can run the app and see the outcome. Now lets create another page named ForgotPass.aspx. This page will help the user to retrieve the password. Now drag and drop the Password Recovery control from the toolbox. Now go back to the login page and open the property of the login control. Find the property named PasswordRecoveryText and type in “Forgot Password” and then select the PasswordRecoveryURL property and point to the ForgotPass.aspx. We will need to change some property and also need to go back to the ASP.NET Configuration page to make the Password Recovery works later.&lt;br /&gt;Now open up the ChangePassword.aspx page and drag and drop the changePassword control form the toolbox (see Figure 8). That’s it. Your change password component is up and running.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#000066;"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 450px; CURSOR: hand; HEIGHT: 159px; TEXT-ALIGN: center" alt="" src="http://www.wwwcoder.com/main/portals/1/in_pas8.jpg" border="0" /&gt;Figure 8 - ChangePassword Control on a Page&lt;br /&gt;Now let us work on the create user page. Open it and drag and drop CreateUserWizard Control (see Figure 9).&lt;br /&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 450px; CURSOR: hand; HEIGHT: 159px; TEXT-ALIGN: center" alt="" src="http://www.wwwcoder.com/main/portals/1/in_pas9.gif" border="0" /&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#000066;"&gt;Figure 9 - The CreateUserWizard Control&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#000066;"&gt;Now run the app to see that without writing a single line of code how your role and membership of a site is ready.Before we conclude, there are some changes to made in the ASP.NET Configuration page to enable password recovery system to work properly.Open that page again and select Application Tab. There you will see configure e-mail settings. Click that and put in your SMTP server details.&lt;br /&gt;Then close the configuration page and open the Password Recovery Page. In the property of the Password Recovery Control enter in the details as shown in Figure 10. (Change according to your Mail Definition). Now you are up and running.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:#000066;"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 315px; CURSOR: hand; HEIGHT: 411px; TEXT-ALIGN: center" alt="" src="http://www.wwwcoder.com/main/portals/1/in_pas10.jpg" border="0" /&gt; &lt;span style="color:#ff6600;"&gt;Source: &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.wwwcoder.com/tabid/68/type/art/parentid/258/site/6297/default.aspx"&gt;&lt;span style="font-family:arial;color:#ff6600;"&gt;http://www.wwwcoder.com/tabid/68/type/art/parentid/258/site/6297/default.aspx&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871774925932891304-6606494742591575431?l=balanr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://balanr.blogspot.com/feeds/6606494742591575431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7871774925932891304&amp;postID=6606494742591575431' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871774925932891304/posts/default/6606494742591575431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871774925932891304/posts/default/6606494742591575431'/><link rel='alternate' type='text/html' href='http://balanr.blogspot.com/2009/06/introduction-to-aspnet-20-roles-and.html' title='Introduction to ASP.NET 2.0 Roles and Membership'/><author><name>balan</name><uri>http://www.blogger.com/profile/15726184235090633722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://4.bp.blogspot.com/_UDvvdE81WwE/SjnOdXMjDtI/AAAAAAAAAMA/9fbAkJAkVFQ/S220/balan1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871774925932891304.post-8326257336912432408</id><published>2009-06-18T02:26:00.000-07:00</published><updated>2009-06-18T03:15:34.035-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dot net'/><category scheme='http://www.blogger.com/atom/ns#' term='menu navigation'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>Easy way to create customized Menu Navigation using CSS and dot net</title><content type='html'>&lt;div&gt;&lt;span style="color:#000066;"&gt;There are several ways to develop Tab Menu navigation in web applications. One of the easier ways is to use Telerik Menu control, customize it and incorporate it with DNN which can show highlighted on mouse over, show highlighted on selection etc. Obviously, Telerik is a leading vendor of User Interface (UI) components for Microsoft .NET technologies through which we can create customized menu panel to the web application. But, for those who cannot afford to purchase Telerik controls could create a simple CSS based menu navigation through which they can highlight the menu on mouse over, show the selected menu on click using some JavaScript coding or by passing query strings in the URL of the menu which is clicked. And on page load, read the query string value and show the menu as selected.&lt;br /&gt;&lt;br /&gt;This procedure can be slightly fine tuned to use dot net to perform the job using CSS with very less coding.&lt;br /&gt;&lt;br /&gt;STEP 1: Create a dot net user control and place the part of the css code which would display the menu navigation panel. See Fig: 1.1.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000066;"&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5348607101735237074" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 143px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_UDvvdE81WwE/SjoR0iYPddI/AAAAAAAAANM/-1agUP8FZtk/s400/fig1.1.JPG" border="0" /&gt; &lt;p&gt;Fig: 1.1&lt;br /&gt;&lt;br /&gt;In this sample, a div tag is used for the menu panel followed by UL and LI tags. Let’s discuss with the first line item in the example:&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;UniqueID=="ctl00$ContentPlaceHolder1$pri_home"?"tabCurrent":"tabnormal" &lt;/span&gt;&lt;br /&gt;Id: which holds the id name and definition of the list item specified in the css class which would show highlighted or not.&lt;br /&gt;&lt;br /&gt;UniqueID: As we all know that the &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.web.ui.control.uniqueid.aspx"&gt;&lt;span style="color:#000066;"&gt;UniqueID&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#000066;"&gt; property is the page-wide unique identifier of an ASP.NET server control. Its uniqueness is guaranteed by prefixing the ID of a server control with the ID of its NamingContainer. If the NamingContainer is the Page the UniqueID will remain the same as the ID.&lt;br /&gt;&lt;br /&gt;ctl00$ContentPlaceHolder1: the default label created to the user control when it is rendered.&lt;br /&gt;&lt;br /&gt;pri_home: &lt;/span&gt;&lt;span style="color:#000066;"&gt;id given to the user control while registering in the web page which has the user control. We need to create different id as specified in the user control and the same needs to be updated while registering the usercontrol in each page. See fig: 1.2&lt;br /&gt;This web page would be displayed if ‘Home’ link is clicked in the user control. In fig: 1.2, the user control is included in the home page and the ID of the user control is given ‘pri_home’. Once the home link is clicked, the home page would be called and the user control with ‘pri_home’ will be rendered as ctl00$ContentPlaceHolder1$pri_home and the UniqueID will have this value during page load. &lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5348598185107702322" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 130px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_UDvvdE81WwE/SjoJthWkwjI/AAAAAAAAAMs/yxvUTzLY350/s320/fig1_2.JPG" border="0" /&gt; &lt;span style="color:#000066;"&gt;Fig: 1.2&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="color:#000066;"&gt;STEP 2:&lt;br /&gt;We have already creating a condition to set “tabCurrent” as the defnition for LI if the UniqueID is ctl00$ContentPlaceHolder1$pri_home” and “tabnormal” for other menus. “tabCurent” and “tabnormal” are defined in the external css to show the selected menu hightlighted and normal respectivley. See fig: 1.3&lt;br /&gt;&lt;br /&gt;STEP 3:&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5348598541293086850" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 186px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_UDvvdE81WwE/SjoKCQPyaII/AAAAAAAAAM0/iDNJ8y6q_hc/s320/fig1.3.JPG" border="0" /&gt; Fig: 1.3&lt;br /&gt;&lt;br /&gt;This code would not only show the selected menu highlighted, but would show the very first menu in the menu to be shown highlighted by default. The same can be achieved for sub menus in the same page. &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871774925932891304-8326257336912432408?l=balanr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://balanr.blogspot.com/feeds/8326257336912432408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7871774925932891304&amp;postID=8326257336912432408' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871774925932891304/posts/default/8326257336912432408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871774925932891304/posts/default/8326257336912432408'/><link rel='alternate' type='text/html' href='http://balanr.blogspot.com/2009/06/easy-way-to-create-customized-menu.html' title='Easy way to create customized Menu Navigation using CSS and dot net'/><author><name>balan</name><uri>http://www.blogger.com/profile/15726184235090633722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://4.bp.blogspot.com/_UDvvdE81WwE/SjnOdXMjDtI/AAAAAAAAAMA/9fbAkJAkVFQ/S220/balan1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_UDvvdE81WwE/SjoR0iYPddI/AAAAAAAAANM/-1agUP8FZtk/s72-c/fig1.1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871774925932891304.post-4531753281212696015</id><published>2009-06-17T23:13:00.000-07:00</published><updated>2009-06-18T01:00:10.124-07:00</updated><title type='text'>Dot Net - What's New in the .NET Framework Version 3.5 SP1</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000066;"&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="font-size:130%;"&gt;What's New in the .NET Framework Version 3.5 SP1&lt;/span&gt;&lt;br /&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;This topic contains information about new and enhanced features in the .NET Framework version 3.5 Service Pack 1.&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000066;"&gt;&lt;strong&gt;&lt;u&gt;ASP.NET&lt;br /&gt;&lt;/u&gt;&lt;/strong&gt;New ASP.NET features include ASP.NET Dynamic Data, which provides a rich scaffolding framework that allows rapid data driven development without writing code, and an addition to ASP.NET AJAX that provides support for managing browser history (back button support). For more information, see &lt;/span&gt;&lt;/span&gt;&lt;a id="ctl00_MTContentSelector1_mainContentContainer_ctl04" href="http://go.microsoft.com/fwlink/?LinkId=116273"&gt;&lt;span style="font-family:arial;color:#000066;"&gt;What’s New in ASP.NET and Web Development&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;color:#000066;"&gt;.&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Common Language Runtime&lt;br /&gt;&lt;/u&gt;&lt;/strong&gt;Core improvements to the common language runtime include the following:&lt;br /&gt;· Improved application startup and working set performance.&lt;br /&gt;· Better layout of .NET Framework native images.&lt;br /&gt;· Opting out of strong-name verification of fully trusted assemblies.&lt;br /&gt;· Better generated code that improves end-to-end application execution time.&lt;br /&gt;· Detecting approaching full garbage collections with &lt;/span&gt;&lt;a id="ctl00_MTContentSelector1_mainContentContainer_ctl08" href="http://msdn.microsoft.com/en-us/library/cc713687.aspx"&gt;&lt;span style="font-family:arial;color:#000066;"&gt;Garbage Collection Notifications&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;color:#000066;"&gt;.&lt;br /&gt;· Opting for managed code to run in ASLR (Address Space Layout Randomization) if supported by the operating system.&lt;br /&gt;· Managed applications that are opened from network shares have the same behavior as native applications by running with full trust.&lt;br /&gt;&lt;strong&gt;&lt;u&gt;.NET Framework Client Profile&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;The &lt;/span&gt;&lt;a id="ctl00_MTContentSelector1_mainContentContainer_ctl12" href="http://msdn.microsoft.com/en-us/library/cc656912.aspx"&gt;&lt;span style="font-family:arial;color:#000066;"&gt;.NET Framework Client Profile&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;color:#000066;"&gt; is a subset of the full .NET Framework that targets client applications. This improves the installation experience on computers that do not already have the .NET Framework installed.&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Networking&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;Enhancements have been made that affect how integrated Windows authentication is handled by the &lt;/span&gt;&lt;a id="ctl00_MTContentSelector1_mainContentContainer_ctl22" href="http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx"&gt;&lt;span style="font-family:arial;color:#000066;"&gt;HttpWebRequest&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;color:#000066;"&gt;, &lt;/span&gt;&lt;a id="ctl00_MTContentSelector1_mainContentContainer_ctl23" href="http://msdn.microsoft.com/en-us/library/system.net.httplistener.aspx"&gt;&lt;span style="font-family:arial;color:#000066;"&gt;HttpListener&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;color:#000066;"&gt;, &lt;/span&gt;&lt;a id="ctl00_MTContentSelector1_mainContentContainer_ctl24" href="http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.aspx"&gt;&lt;span style="font-family:arial;color:#000066;"&gt;SmtpClient&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;color:#000066;"&gt;, &lt;/span&gt;&lt;a id="ctl00_MTContentSelector1_mainContentContainer_ctl25" href="http://msdn.microsoft.com/en-us/library/system.net.security.sslstream.aspx"&gt;&lt;span style="font-family:arial;color:#000066;"&gt;SslStream&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;color:#000066;"&gt;, &lt;/span&gt;&lt;a id="ctl00_MTContentSelector1_mainContentContainer_ctl26" href="http://msdn.microsoft.com/en-us/library/system.net.security.negotiatestream.aspx"&gt;&lt;span style="font-family:arial;color:#000066;"&gt;NegotiateStream&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;color:#000066;"&gt;, and related classes in the &lt;/span&gt;&lt;a id="ctl00_MTContentSelector1_mainContentContainer_ctl27" href="http://msdn.microsoft.com/en-us/library/system.net.aspx"&gt;&lt;span style="font-family:arial;color:#000066;"&gt;System.Net&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;color:#000066;"&gt; and related namespaces. Support was added for extended protection to enhance security. The changes to support extended protection are available only for applications on Windows 7. The extended protection features are not available on earlier versions of Windows. For more information, see&lt;/span&gt;&lt;a id="ctl00_MTContentSelector1_mainContentContainer_ctl28" href="http://msdn.microsoft.com/en-us/library/dd639324.aspx"&gt;&lt;span style="font-family:arial;color:#000066;"&gt;Integrated Windows Authentication with Extended Protection&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;color:#000066;"&gt;.&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Windows Presentation Foundation&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;Performance improvements have been made to &lt;/span&gt;&lt;a id="ctl00_MTContentSelector1_mainContentContainer_ctl32" href="http://msdn.microsoft.com/en-us/library/ms754130.aspx"&gt;&lt;span style="font-family:arial;color:#000066;"&gt;Windows Presentation Foundation&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;color:#000066;"&gt;, including a faster startup time and improved performance for Bitmap effects. Additional functionality for Windows Presentation Foundation includes better support for line of business applications, native splash screen support, DirectX pixel shader support, and the new WebBrowser control.&lt;br /&gt;&lt;strong&gt;&lt;u&gt;ClickOnce&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;ClickOnce application publishers can decide to opt out of signing and hashing as appropriate for their scenarios, developers can programmatically install ClickOnce applications that display a customized branding, and ClickOnce error dialog boxes support links to application-specific support sites on the Web. For more information about ClickOnce, see &lt;/span&gt;&lt;a id="ctl00_MTContentSelector1_mainContentContainer_ctl36" href="http://msdn.microsoft.com/en-us/library/wh45kb66.aspx"&gt;&lt;span style="font-family:arial;color:#000066;"&gt;ClickOnce Deployment for Windows Forms Applications&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;color:#000066;"&gt;.&lt;br /&gt;Accessing Data with ADO.NET&lt;br /&gt;The .NET Framework Data Provider for SQL Server (&lt;/span&gt;&lt;a id="ctl00_MTContentSelector1_mainContentContainer_ctl42" href="http://msdn.microsoft.com/en-us/library/system.data.sqlclient.aspx"&gt;&lt;span style="font-family:arial;color:#000066;"&gt;System.Data.SqlClient&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;color:#000066;"&gt;) provides full support for all the new features of the SQL Server 2008 Database Engine. For more information about .NET Framework support for SQL Server 2008, see &lt;/span&gt;&lt;a id="ctl00_MTContentSelector1_mainContentContainer_ctl43" href="http://msdn.microsoft.com/en-us/library/bb675218.aspx"&gt;&lt;span style="font-family:arial;color:#000066;"&gt;New Features in SQL Server 2008 (ADO.NET)&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;color:#000066;"&gt;.&lt;br /&gt;The ADO.NET Data Platform is a multi-release strategy to decrease the amount of coding and maintenance required for developers by enabling them to program against conceptual entity data models. This platform includes the ADO.NET Entity Framework, the Entity Data Model (EDM), Object Services, LINQ to Entities, Entity SQL, EntityClient, ADO.NET Data Services and Entity Data Model Tools. For more information, see &lt;/span&gt;&lt;a id="ctl00_MTContentSelector1_mainContentContainer_ctl44" href="http://msdn.microsoft.com/en-us/library/cc716725.aspx"&gt;&lt;span style="font-family:arial;color:#000066;"&gt;ADO.NET Technology Options and Guidelines&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;color:#000066;"&gt;.&lt;br /&gt;Windows Communication Foundation&lt;br /&gt;The &lt;/span&gt;&lt;a id="ctl00_MTContentSelector1_mainContentContainer_ctl48" href="http://msdn.microsoft.com/en-us/library/ms735119.aspx"&gt;&lt;span style="font-family:arial;color:#000066;"&gt;Windows Communication Foundation&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;color:#000066;"&gt; (WCF) now makes the DataContract Serializer easier to use by providing improved interoperability support, enhancing the debugging experience in partial trust scenarios, and extending syndication protocol support for wider usage in Web 2.0 applications.&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Windows Forms Controls&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;The &lt;/span&gt;&lt;a id="ctl00_MTContentSelector1_mainContentContainer_ctl53" href="http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.powerpacks.aspx"&gt;&lt;span style="font-family:arial;color:#000066;"&gt;Microsoft.VisualBasic.PowerPacks&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;color:#000066;"&gt; namespace introduces the new &lt;/span&gt;&lt;a id="ctl00_MTContentSelector1_mainContentContainer_ctl54" href="http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.powerpacks.datarepeater.aspx"&gt;&lt;span style="font-family:arial;color:#000066;"&gt;DataRepeater&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;color:#000066;"&gt; control that displays data in a customizable list format. This namespace also includes new vector shapes.&lt;br /&gt;Source: http://msdn.microsoft.com/en-us/library/cc713697.aspx&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871774925932891304-4531753281212696015?l=balanr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://balanr.blogspot.com/feeds/4531753281212696015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7871774925932891304&amp;postID=4531753281212696015' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871774925932891304/posts/default/4531753281212696015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871774925932891304/posts/default/4531753281212696015'/><link rel='alternate' type='text/html' href='http://balanr.blogspot.com/2009/06/dot-net-whats-new-in-net-framework.html' title='Dot Net - What&apos;s New in the .NET Framework Version 3.5 SP1'/><author><name>balan</name><uri>http://www.blogger.com/profile/15726184235090633722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://4.bp.blogspot.com/_UDvvdE81WwE/SjnOdXMjDtI/AAAAAAAAAMA/9fbAkJAkVFQ/S220/balan1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871774925932891304.post-1916803175457932560</id><published>2008-11-07T00:45:00.000-08:00</published><updated>2009-06-17T22:16:07.616-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='InfoPath'/><title type='text'>infopathemailedform</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_UDvvdE81WwE/SRQAmNFrAjI/AAAAAAAAAA8/xQwATVZGlCs/s1600-h/infopathemail.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5265834520651432498" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 158px" alt="" src="http://2.bp.blogspot.com/_UDvvdE81WwE/SRQAmNFrAjI/AAAAAAAAAA8/xQwATVZGlCs/s320/infopathemail.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871774925932891304-1916803175457932560?l=balanr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://balanr.blogspot.com/feeds/1916803175457932560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7871774925932891304&amp;postID=1916803175457932560' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871774925932891304/posts/default/1916803175457932560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871774925932891304/posts/default/1916803175457932560'/><link rel='alternate' type='text/html' href='http://balanr.blogspot.com/2008/11/infopathemailedform.html' title='infopathemailedform'/><author><name>balan</name><uri>http://www.blogger.com/profile/15726184235090633722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://4.bp.blogspot.com/_UDvvdE81WwE/SjnOdXMjDtI/AAAAAAAAAMA/9fbAkJAkVFQ/S220/balan1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_UDvvdE81WwE/SRQAmNFrAjI/AAAAAAAAAA8/xQwATVZGlCs/s72-c/infopathemail.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871774925932891304.post-8474261216757906542</id><published>2008-11-03T23:32:00.000-08:00</published><updated>2009-06-17T22:15:30.830-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='InfoPath'/><title type='text'>infopath</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_UDvvdE81WwE/SQ_6_yIZJCI/AAAAAAAAAA0/hhJbmgnY6v0/s1600-h/infopath.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5264702463115076642" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 214px" alt="" src="http://2.bp.blogspot.com/_UDvvdE81WwE/SQ_6_yIZJCI/AAAAAAAAAA0/hhJbmgnY6v0/s320/infopath.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871774925932891304-8474261216757906542?l=balanr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://balanr.blogspot.com/feeds/8474261216757906542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7871774925932891304&amp;postID=8474261216757906542' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871774925932891304/posts/default/8474261216757906542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871774925932891304/posts/default/8474261216757906542'/><link rel='alternate' type='text/html' href='http://balanr.blogspot.com/2008/11/infopath.html' title='infopath'/><author><name>balan</name><uri>http://www.blogger.com/profile/15726184235090633722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://4.bp.blogspot.com/_UDvvdE81WwE/SjnOdXMjDtI/AAAAAAAAAMA/9fbAkJAkVFQ/S220/balan1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_UDvvdE81WwE/SQ_6_yIZJCI/AAAAAAAAAA0/hhJbmgnY6v0/s72-c/infopath.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871774925932891304.post-9157276594998596142</id><published>2008-10-08T22:05:00.000-07:00</published><updated>2009-06-17T22:16:43.309-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CorelDraw'/><title type='text'>corel to svg - problem while exporting to svg</title><content type='html'>&lt;ol&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;1) This is how the corel file looks. I've one bitmap background image to the left, one to the right which has a transparent part in the center to display the powerclip and a image inside the powerclip. Here the powerclip is set the order of "To back of the page" so that the border flowers in the background image comes to front.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;a href="http://1.bp.blogspot.com/_UDvvdE81WwE/SO2SDwBSgZI/AAAAAAAAAAU/frzsFidWOuc/s1600-h/coreldesign.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5255016933338808722" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_UDvvdE81WwE/SO2SDwBSgZI/AAAAAAAAAAU/frzsFidWOuc/s320/coreldesign.JPG" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;2) once the corel is exported as an svg, these are the following images getting created.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;img1:this is the image inside the powerclip, which is correct.&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_UDvvdE81WwE/SO2SD1BF7nI/AAAAAAAAAAc/VznAv4KsHwE/s1600-h/DA_DD_621_ImgID1.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5255016934680161906" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_UDvvdE81WwE/SO2SD1BF7nI/AAAAAAAAAAc/VznAv4KsHwE/s320/DA_DD_621_ImgID1.gif" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;img2:this is the background image which has a transparent part in the center to display the powerclip. This should be created without the powerclip image. So, this is not correct. This image should be created without the powerclip image. I'm replacing the powerclip image from my dot net application using javascript. As the background image itself is created as a single image with hpowerclip image , if i replace the powerclip image, i cannot see the image getting changed as the same image is there in the background image also.&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_UDvvdE81WwE/SO2SEAIXSzI/AAAAAAAAAAk/ciVAY49wez4/s1600-h/DA_DD_621_ImgID2.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5255016937663449906" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_UDvvdE81WwE/SO2SEAIXSzI/AAAAAAAAAAk/ciVAY49wez4/s320/DA_DD_621_ImgID2.gif" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;img3: this is the left background image. which is correct.&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_UDvvdE81WwE/SO2SEJQV0CI/AAAAAAAAAAs/bISlhEXxZbo/s1600-h/DA_DD_621_ImgID3.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5255016940112826402" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_UDvvdE81WwE/SO2SEJQV0CI/AAAAAAAAAAs/bISlhEXxZbo/s320/DA_DD_621_ImgID3.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;a href="http://2.bp.blogspot.com/_UDvvdE81WwE/SO2RMMESOKI/AAAAAAAAAAM/CDcb0JtxLqw/s1600-h/coreldesign.JPG"&gt;&lt;/a&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871774925932891304-9157276594998596142?l=balanr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://balanr.blogspot.com/feeds/9157276594998596142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7871774925932891304&amp;postID=9157276594998596142' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871774925932891304/posts/default/9157276594998596142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871774925932891304/posts/default/9157276594998596142'/><link rel='alternate' type='text/html' href='http://balanr.blogspot.com/2008/10/corel-image.html' title='corel to svg - problem while exporting to svg'/><author><name>balan</name><uri>http://www.blogger.com/profile/15726184235090633722</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://4.bp.blogspot.com/_UDvvdE81WwE/SjnOdXMjDtI/AAAAAAAAAMA/9fbAkJAkVFQ/S220/balan1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_UDvvdE81WwE/SO2SDwBSgZI/AAAAAAAAAAU/frzsFidWOuc/s72-c/coreldesign.JPG' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
