在第(1)篇文章中,回顾了一下SharePoint 2007中的Shared Services Provider(SSP)架构。从这篇开始,将开始讲述SharePoint 2010中的服务应用程序架构。
在SharePoint 2010中,微软重新设计了共享服务提供程序架构,将其改进成了服务应用程序架构。相比共享服务提供程序架构,服务应用程序架构有更好的灵活性。如果一个SharePoint 2010服务实现了服务应用程序框架,那么管理员就可以根据需要,在服务器场中创建一个相应的服务应用程序,来提供此服务。当然,管理员也可以为一个SharePoint 2010服务,创建多个服务应用程序。每个服务应用程序可以有不同的设置,甚至可以有不同的数据库,用来存放服务应用程序单独的数据。这也就是一个服务应用程序也被称为服务的一个可配置服务器场实例(Configured Farm-Scoped Instantiation)的原因。
服务应用程序运行在服务器场中的应用服务器上,它们通常需要被运行在前端服务器上的组件,例如Web部件,来调用。前端服务器上的组件是透过一种叫做服务应用程序代理的中间组件,来调用服务应用程序的。所以,如果服务应用程序需要能够被调用,它就需要有一个配套的服务应用程序代理。在默认的设置中,所有服务应用程序代理都托管在一个名为“SharePoint Web Services”的IIS Web网站中。打开SharePoint 2010应用服务器上的IIS管理器,就能看到这个IIS Web网站。下图展示了“SharePoint Web Services”IIS Web网站,它的每一个虚拟目录,都代表了一个发布出来的服务应用程序代理。
管理员在SharePoint 2010管理中心网站,打开“管理服务应用程序”页面,就能看到当前服务器场中所有的服务应用程序。
我们用实际的例子来进一步解释服务应用程序架构的概念。SharePoint 2010中内置了一个名为“Managed Metadata Service”的服务,它可以存储和管理一组公用的元数据,在SharePoint网站中的列表项可以使用这些元数据,来对列表项进行标识。“Managed Metadata Service”服务实现了服务应用程序框架。管理员可以在服务器场中,新建一个类型为“Managed Metadata Service”的服务应用程序,并将其命名为“企业全局元数据”。下图展示了管理员新建这个服务应用程序的界面。
在下图中可以看到已经创建完成的“企业全局元数据”服务应用程序。在这个服务应用程序下方,同时还有一个同样名为“企业全局元数据”的条目,它就是在管理员创建“企业全局元数据”服务应用程序的同时,自动被创建出来的服务应用程序代理。前端服务器上的组件,就是通过这个代理,来调用到“企业全局元数据”服务应用程序所提供的功能的。
如果要让一个SharePoint网站能使用由服务应用程序提供的服务,需要将SharePoint网站所属的Web应用程序,与服务应用程序的代理进行关联。由于服务器场中可能存在许多的服务应用程序代理,为了方便管理,SharePoint 2010将服务应用程序代理按照分组的方式进行来管理。然后,一个Web应用程序可以选择关联到一个服务应用程序代理组,这样就一次性的同时关联到了这个组所包含的所有服务应用程序。
SharePoint 2010默认包含了一个名称为“默认”的服务应用程序代理组,服务器场中所有的服务应用程序代理,默认都位于这个代理组里面,同时所有Web应用程序都与“默认”代理组关联了起来。如果没有特殊的需求,这个默认配置已经可以满足企业的需求了。
下图显示了一个典型的服务应用程序逻辑架构。可以看到,服务器场中所有的服务应用程序代理(包括“企业全局元数据”),都包含在“默认”代理组中,服务器场中也只有这一个代理组。服务器场中的三个Web应用程序,都与“默认”代理组进行关联,所以,它们都能访问到“默认”代理组所对应的服务应用程序所提供的服务。如果“企业全局元数据”服务应用程序中存储了企业中的所有重要元数据,那么三个Web应用程序所包含的所有SharePoint网站,就都可以使用这些由“企业全局元数据”所存储的元数据了。
如果这个时候,企业中的财务部门提出了一个新的需求,要求对于一组特定的财务元数据,进行更严格的安全性保护,除了财务部门的SharePoint网站之外,其他网站都严禁访问到这些财务元数据。为了保证足够高的安全性,管理员可以选择再创建一个类型为“Managed Metadata Service”的服务应用程序,取名为“企业财务元数据”,然后使用这个单独的服务应用程序来存储和管理财务元数据。
下图显示了管理员创建了“企业财务元数据”服务应用程序之后,在SharePoint 2010管理中心的“管理服务应用程序”页面中,可以看到这两个用来提供托管元数据服务的服务应用程序,以及它们各自的服务应用程序代理。
下图显示了更新后的服务器场服务应用程序逻辑架构图。从图上可以看出,服务器中新增了一个名为“企业财务元数据”的服务应用程序,而且它运行在一个单独的应用程序池中,以实现更高的安全性。除了原本的“默认”服务应用程序代理组之外,服务器场中还添加了一个“财务”代理组,这两个代理组所包含的服务应用程序实际上大部分都是重合的,不同的仅仅是一个包含了“企业全局元数据”服务应用程序,而另一个则包含了“企业财务元数据”服务应用程序。服务器场中包含了三个Web应用程序,其中前两个与“默认”代理组进行了关联,而第三个Web应用程序则是和“财务”代理组进行了关联。这样,只有包含在第三个Web应用程序中的SharePoint网站,才可能访问和使用由“企业财务元数据”服务应用程序所存储的财务元数据,而其他SharePoint网站则只能使用由“企业全局元数据”服务应用程序所存储的元数据。