Service Object Model

下图展示了SharePoint 2010的Service Application框架里主要的类之间的关系。实箭头从parent类型指向child类型, 这里的child类型被保存在parent类型的一个集合型属性中。点箭头意思是SPServiceInstance类型代表着一个运行着的进程,该进程属于场范围内的由SPService类代表的服务。

image

SPFarm代表着一个服务器场。它是配置等级结构的顶级。

SPServer代表着一个物理机器。SPServer的ServiceInstances属性保存有该机器上运行着的所有的Windws Services和Web Services.

Service Objects, 也被认为是后端系统对象(back-end system objects),它们包括:

  • SPService:代表着一个在服务器场内安装的或可用的服务。每个SPService对象都有一个Instances属性。任何一台服务器上能运行任意一种服务的仅一个Instance,但某些service可以有多个instances,每个运行在一台单独的机器上。每个instance都由SPServiceInstance代表。
  • SPServiceInstance:代表着场内某个运行在某一台机器上的服务。该对象的Provision方法可以用来启动这个service instance。
  • SPServiceApplication:Service Instance寄存着Service Application。 没有Service Instance, Service Application也用不了。Service Application包含有应用程序自己的数据和配置,并且对管理员提供配置服务的接口。service application之间是完全独立的。
  • SPIisWebServiceApplication:该类型实现了ISharedServiceApplication接口,并且使得一个Service Application可以通过topology service给publish出去。

Client Objects。client application与back-end服务进行通讯。client是发起通讯的应用程序。 Service是等待client来与之通讯并相应该通讯请求的应用程序。 client service objects包括下面两种:

  • SPServiceProxy: 代表着服务器场内安装的一个service client。SPServiceProxy对象是SPServiceApplicationProxy对象的parent,就跟在服务器端,SPService对象是SPServiceApplication对象的parent一样。这里的parent对象也可以被认为是child对象的类工厂(class factory)。
  • SPServiceApplicationProxy:代表着一个向一个service application的连接(connection)。提供了一个对service application访问的接口。SPServiceApplicationProxy支持连接remote farm, 使得客户端代码使用remote farm的service application成为可能。SPServiceApplicationProxy是在创建Service application时自动创建出来的。 至少, service proxy会把请求forward到remote service application上。

上面的文章出自MSDN,看了是不是也感觉似懂非懂?

实践出真知,让我们用PowerShell来对这些概念进行一些挖掘,以加深理解。

SPServiceApplication

image

SPServiceInstance

image

SPService

image

SPService与SPServiceInstance

image

SPService与SPServiceApplication

image

SPServiceApplicationProxy

image

SPServiceProxy

image

SPServiceProxy与SPServiceApplicationProxy

image

反向寻找

image

SPFarm与SPServiceProxy

image

SPServiceApplication与SPServiceApplicationProxy

image

因为一个web application只能对应一个proxy group,一个proxy group里一种service application 的proxy只有一个。

通过proxy group就找到了对应的application proxy。

image

通过以上的命令, 我们已经将所有的这些对象都串联起来了。

是不是明白的更多一些了?

参考资料

=====================

Service Object Model

http://msdn.microsoft.com/en-us/library/ee537799.aspx

原文地址:https://www.cnblogs.com/awpatp/p/2329411.html