Products make money, not frameworks. It’s SharePoint time 🙂 . I have worked with SharePoint on POCs but they never got materialized due to license issues. So what’s this beast all about? Keep reading for an overview, with a disclaimer that this information is gathered from numerous resources over a period of time. Hence if there are missing links, omissions or inaccuracies I welcome you to correct them. Also my writing is more from a developer’s perspective.
What’s SharePoint? – A Product built on top of ASP.NET. If you are aware of Master Pages, HttpModules, HttpHandlers, WebParts, Ajax, HttpApplication, Localization, Virtual Directories, ASMX Web Services, HTML, CSS, etc. it’s great, as you would need all of them here.
Why SharePoint? – This is where I was initially stuck and in fact I am still stuck there. At its heart, SharePoint is a site provisioning engine. You can create rich functional personalizable portals / sites using SharePoint within few seconds. These SharePoint portals / sites have a lot of out of box support in terms of templates, lists, features, web services, web parts, etc. Building this out of box support with vanilla ASP.NET can hurt from all aspects. Other usage of SharePoint is in terms of collaboration through Content Management or Business Intelligence. Content Management (primarily around MS-Office) along with Enterprise Search was part of the POC I worked on. SharePoint has support for workflows (read Workflow Foundation) that help automating business processes again with many out-of-box workflows. SharePoint also provides easily scalable and deployable solutions from an administration perspective.
WSS (Windows SharePoint Services) vs. MOSS (Microsoft Office SharePoint Server) – I struggled with this one initially. The closest I got was WSS is the soul of MOSS. Infact MOSS builds on top of WSS providing enterprise features like Search, Excel Services, BDC, etc. But from a development perspective WSS gives a thorough experience which holds good for MOSS too. Also as WSS is bundled with Windows Server license this in a sense makes it free and easy to get started. If you want to get started with SharePoint as a developer WSS should suffice. Latest Version of WSS is called SharePoint Foundation and is available for download from here. Microsoft supports installing Foundation version on Windows 7 / Vista SP2 for development purposes.
Installing WSS – I have been working on TFS / VSTS and installed SharePoint many a times as part of pre-requisites. You can access the document from here. I will proceed ahead with assuming installed WSS 3.0 SP1 on Windows Server 2008.
Drilling into WSS Directory Structures – Once you are done you will see your Default Web Site has a new ‘wss’ directory and a IIS Site ‘SharePoint Central Administration v3’. Below is a snapshot after creating a new Web Application through Administration Site. N.B. each SharePoint Web Application has its own web.config wherein the extensions like ASP.NET modules and handlers are specified. I strongly encourage you to have a look at it.
As you see in the above snapshot, I have created a SharePoint Web Application (IIS terms it means Web Site with dedicated AppPool) listening on port 9999. You see that this WebApplication in-turn contains 11 folders. Out this 11 folders the 7 ones (which are not underlined) are present inside ‘wss – 9999’ directory of Default Web Site. As you would have guess these 7 folders map to “D:\inetpub\wwwroot\wss\VirtualDirectories” folder. If you add a new Web Application there would be an addition of a new folder which is the port number where that Web Application is listening. Coming to remaining 4 folders they appear to be shared across all Web Applications including Central Administration Site. These folders are located in 12 Hive folder “D:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12”. Let me elaborate on purpose of last 4 folders:
_controltemplates – Contains ASP.NET user controls (*.ascx)
_layouts – Contains non customizable .ASPX & .MASTER pages
_vti_bin – Contains ASMX Web Services & standard DLLs like Microsoft.SharePoint.
_wpresources – primarily used to store resources of WebParts.
In SharePoint terminology pages located in above directories are called ‘Application pages’ residing on physical file system. Apart from these shared folders remaining content for Web Application is maintained inside a SQL SERVER DB. In fact for every Web Application you will create SharePoint will also create a content database for you. Pages stored in content database are called ‘Content pages’ or ‘Site pages’. Along with content database there is also a configuration database for the farm as shown below.
What are developer opportunities with SharePoint? – Plenty. Creating features, templates, custom lists, document libraries, event receivers, workflows, web parts, application pages, solution packages, etc. There are couple of additional APIs namely WSS Object Model & CAML (Collaborative application markup language) which developers need to learn for being more effective. To edit site pages one can take help of SharePoint Designer & also there are developer extensions available to VS.NET 2008 to boost productivity for Sharepoint development.
These might look like random thoughts, but these are the ones I was looking for to getting started with SharePoint. I hope to share more with you in coming days.