Windows SharePoint Services 3.0与Office SharePoint Server 2007技术概览14:28:10:2009-05-14
Windows SharePoint Services是Office SharePoint Server的基础,Windows SharePoint Services提供了最基本的功能,包括SharePoint站点、列表、文档库、文档协作,等等。Office SharePoint Server在Windows SharePoint Services的基础上,对其进行了进一步的包装和扩充,并提供了更多的功能,比如更强大的搜索、Business Data Catalog、Web内容管理等组件和功能。
对于Windows SharePoint Services与Office SharePoint Server的关系,您还可以参考微软网站上的《Windows SharePoint Services和SharePoint Portal Server 2003》(http://www.microsoft.com/ china/office/sharepoint/prodinfo/relationship.mspx)一文。虽然这篇文章是针对上一个版本(Windows SharePoint Services 2.0与SharePoint Portal Server 2003)而言的,但是对于说明两者间的关系,仍然有很好的参考价值。
要了解和学习Office SharePoint Server 2007,就必须首先了解Windows SharePoint Services 3.0。相比SharePoint Portal Server 2003与Windows SharePoint Services 2.0,Office SharePoint Server 2007与Windows SharePoint Services 3.0的关系要更加“密切”一些。也就是说,Office SharePoint Server 2007更多地使用了Windows SharePoint Services 3.0内置的功能,并与其进行了更紧密的绑定。
实际上,在真正使用Office SharePoint Server 2007或者在针对它进行开发的过程中,我们并不需要很清晰地划分清楚,哪些是Windows SharePoint Services 3.0提供的功能,哪些是Office SharePoint Server 2007扩展的功能。因为Windows SharePoint Services 3.0已经被完整地融入了Office SharePoint Server 2007中,在安装Office SharePoint Server 2007时,安装程序会自动将Windows SharePoint Services 3.0安装在系统中。
1.1 Windows SharePoint Services 2.0架构回顾
在开始介绍Windows SharePoint Services 3.0之前,我们将首先对Windows SharePoint Services 2.0的架构进行简略的回顾。实际上,了解Windows SharePoint Services 2.0的运行机制,对迅速理解Windows SharePoint Services 3.0有很大的帮助。
我们在这里并不会详细解释Windows SharePoint Services 2.0是什么,以及它有哪些功能。我们假设您已经使用过Windows SharePoint Services 2.0,并对它有了一定的了解。我们将直接打开Windows SharePoint Services 2.0的盖子,来看看它是如何运作的。
Windows SharePoint Services 2.0是基于ASP.NET 1.1构建的,它大量使用了ASP.NET 1.1的内置功能,但同时也使用了其他的一些技术,来进行必要的补充。
Windows SharePoint Services 2.0使用“虚拟服务器”这个术语,来描述Windows Server 2003上的IIS虚拟站点。当管理员在SharePoint管理中心里面创建一个门户,或者进行一个扩展虚拟服务器的操作时,Windows SharePoint Services 2.0就对一个虚拟服务器进行了扩展。
在图1-1中,我们可以看到,在服务器上有两个虚拟服务器,其中“默认网站”这个虚拟服务器已经被Windows SharePoint Services 2.0扩展了,而另外一个虚拟服务器则没有被Windows SharePoint Services 2.0扩展。
如果一个虚拟服务器被Windows SharePoint Services 2.0进行了扩展,那么会发生什么事情呢?
在图1-2中,我们打开了IIS管理器,查看一个被Windows SharePoint Services 2.0扩展了的虚拟服务器所对应的虚拟网站。
图1-1
图1-2
我们可以看到,Windows SharePoint Services 2.0在这个虚拟网站上创建了几个虚拟目录,并拷贝了一些文件到这个虚拟网站对应的磁盘目录下。如果Windows SharePoint Services 2.0仅仅是对这个虚拟网站作了这些更改的话,那么这还只是一个普通的ASP.NET 1.1 Web应用程序。Windows SharePoint Services 2.0实际上作了更多的设置,以实现某些ASP.NET 1.1不能实现的功能。
打开这个虚拟服务器的属性窗口,查看属性窗口中的ISAPI筛选器列表(见图1-3)。这时我们可以看到,这个虚拟服务器上被添加了一个名为“stsfltr”的ISAPI筛选器。这个筛选器就是Windows SharePoint Services 2.0实现自己特殊功能的一个关键组件。
图1-3
图1-4是Windows SharePoint Services 2.0的整体架构图,它说明了Windows SharePoint Services 2.0是如何对普通的ASP.NET 1.1应用进行扩展的。
图1-4
在图1-4的左方,是一个标准的ASP.NET 1.1运行机制的示意图。当IIS接收到HTTP请求之后,它会将扩展名是.aspx/.asmx等ASP.NET相关扩展名的页面请求直接转发给ASP.NET引擎,然后由ASP.NET引擎处理相应的请求,比如解析.aspx页面、编译代码等工作。ASP.NET引擎将请求处理完成之后,再将返回的数据(比如HTML文本)返回给IIS,最后由IIS返回给发出请求的客户端。
但是如果一个虚拟服务器被Windows SharePoint Services 2.0扩展之后,当IIS接收到HTTP请求时,该请求会被传送给“stsfltr”这个ISAPI过滤器。“stsfltr”过滤器会检测当前请求的页面路径是不是一个SharePoint包含的路径,如果是,那么这个请求将不会直接传递给ASP.NET引擎,而是交给Windows SharePoint Services 2.0进行处理。
Windows SharePoint Services 2.0得到这个HTTP请求后,会根据配置数据库中的信息,从某个合适的地方(磁盘上的模板文件或者数据库中保存的页面文件)将页面载入,然后才会再将页面交给ASP.NET引擎进行处理。
从上面的描述中,我们就可以理解,对于一个SharePoint站点发出的页面浏览请求,如果根据这个页面的URL,到其虚拟网站对应的磁盘目录中寻找该页面文件是找不到的。这个页面文件的物理位置可能在SharePoint模板文件目录中,或者在数据库中,它会由Windows SharePoint Services在运行时自动从正确的地方载入到内存中,然后再将这个物理文件传递给ASP.NET引擎。
比如,我们可以查看一个SharePoint Portal Server 2003的门户首页,如图1-5所示,它的路径是根目录下的default.aspx页面。
图1-5
但是,如果我们到这个虚拟服务器对应的磁盘目录中去寻找(见图1-6),是找不到这个对应的default.aspx文件的。
图1-6
我们之所以能够在IE中浏览这个站点根目录下的default.aspx页面,就好像在站点磁盘根目录下真的存在一个default.aspx物理文件一样,都是由于有了“stsfltr”这个ISAPI过滤器的额外处理。
对于一个被Windows SharePoint Services 2.0扩展了的虚拟服务器,除了几个特定的路径之外,对其他路径的访问请求,都会被SharePoint的ISAPI扩展接管过去。这几个特定的路径被称为排除的路径。如果用户通过浏览器访问这几个排除的路径下的页面,那么将直接访问到磁盘相应目录的物理文件。管理员是可以通过SharePoint管理中心,自己定义SharePoint包含的路径和排除的路径的。如图1-7所示。
图1-7
虽然Windows SharePoint Services 2.0虚拟服务器扩展之后,进行了很多额外的设置,但是,对页面的处理,使用的仍然是标准的ASP.NET 1.1引擎。也就是说,Windows SharePoint Services 2.0对页面的处理是利用了ASP.NET 1.1丰富的功能,来实现动态网页的。
Windows SharePoint Services 2.0中一个最富有特色的功能,就是Web Parts。Web Parts使Windows SharePoint Services 2.0页面具备了非常强的定制能力。Windows SharePoint Services 2.0中的Web Parts同样使用了ASP.NET 1.1中内置的Web服务器控件的功能。
图1-8展示了Windows SharePoint Services 2.0中的Web Part类继承关系图。
图1-8
ASP.NET 1.1中的System.Web.UI.Control是所有服务器控件的公共基类,包括ASP.NET 1.1自带的Web控件、HTML控件、开发人员制作的用户控件、自定义控件等,都继承自这个类。System.Web.UI.Control中实现了ASP.NET 1.1的服务器控件大部分的功能,比如ViewState、子控件集合(Child Controls)、回发(Postback)事件处理,等等。Windows SharePoint Services 2.0中的所有Web Part的基类Microsoft.SharePoint.WebPartPages.WebPart,同样继承自System.Web.UI.Con- trol类。这样,Windows SharePoint Services 2.0中的Web Part天然就具备了System.Web.UI.Control类中已经实现的众多功能。