快捷搜索:

【Sharepoint教程—架构】3、Sharepoint的处理(Proces

上文我们懂得了一个外部Http Request进入IIS 事情进程(W3WP)的处置惩罚与履行相信模型,这个阶段是Sharepoint的四种履行模型都必须颠末的处置惩罚阶段,此中Sharepoint场办理规划与任何 ASP.NET 利用法度榜样一样便是在 IIS 事情进程(w3wp)中运行的,以是上文也就包孕了场办理规划的处置惩罚与履行相信模型。

这里继承我们的话题,便是看看Sharepoint的沙盒办理规划在这方面是什么环境。

沙盒办理规划是 SharePoint 2010 的新功能。沙盒办理规划是直接支配到网站集根网站中(The top Website of the Site Collection)的指定库的资本聚拢。此库称为"办理规划库(Solution Gallery)"。我们可以像场办理规整洁样,将沙盒办理规划打包为 SharePoint 办理规划包 (WSP)。不过,可以经由过程 Web 用户界面 (UI) 直接上传 WSP 来支配沙盒办理规划,而不必物理造访办事器文件系统,也不必 IT 团队介入。相反,网站集治理员确定谁有权限向其网站集添加沙盒办理规划。以是,沙盒办理规划对开拓和治理团队是很有诱惑力的。

一、IIS事情进程(w3wp)交权给履行治理器(Execution Manager)

假如用户的Http 哀求(Http Request)中包孕有对沙盒办理规划的处置惩罚模型,Http哀求到了IIS事情进程(w3wp), IIS事情进程(w3wp)就会发明,这个哀求里涉及到沙盒处置惩罚模型,这时,IIS事情进程(w3wp)就会调用它里面运行的履行治理器(Execution Manager),由履行治理器(Execution Manager)来接收下一步的处置惩罚权移交。如下图:

上图中的SPUCHostService.exe、SPUCWorkerProcess.exe 和 SPUCWorkerProcessProxy.exe 文件位于

%ProgramFiles%Common FilesMicrosoft Sharedweb server extensions14UserCode。

二、履行治理器(Execution Manager)交权给沙盒事情进程(SPUCWorkerProcess)

IIS 事情进程中运行的 SharePoint履行治理器(Execution Manager)认真查找沙盒办理规划的代码将在此中运行的沙盒事情进程(SPUCWorkerProcess)(假如未运行任何沙盒事情进程,则认真启动一个沙盒事情进程)。

请留意,履行治理器(Execution Manager)启动或定位的沙盒事情进程(SPUCWorkerProcess)并不必然是在同一办事器上,这可以从上面的示意图中看出。

2.1沙盒事情进程(SPUCWorkerProcess) 宿主机的要求

一样平常而言,履行治理器(Execution Manager)会在Sharepoint办事器场中任何运行 SharePoint Foundation 沙盒代码办事 (SPUCHostService: Sharepoint User Code Host Service) 的办事器上启动此沙盒事情进程(SPUCWorkerProcess)。

在 Windows"办事"对话框中,它称作"SharePoint 2010 用户代码主机"办事,如下图:

SharePoint Foundation 沙盒代码办事(SPUCHostService)在办事器场帐户下运行,此帐户与利用法度榜样池帐户(Application Pool Account)拥有一样的权限,此帐户归属于沙盒代码办事所运行的宿主理事器上的WSS_WPG、WSS_ADMIN_WPG、IIS_USERS这三个组。

2.2运行Microsoft SharePoint Foundation沙盒代码办事(SPUCHostService)物理办事器的定位模式

运行 SharePoint Foundation 沙盒代码办事的办事器可所以(但并不必然是)运行 IIS 事情进程的前端 Web 办事器。可在治理中间利用法度榜样内设置设置设备摆设摆设要应用的办事器,这种设置设置设备摆设摆设有两种选项。

I、"本地模式(local mode)":这意味着将在运行 IIS 事情进程(W3WP)的同一前端 Web 办事器上处置惩罚对沙盒办理规划的每个哀求,即本地处置惩罚。

II、"远程模式(remote mode)"(无意偶尔称作"相似性模式[affinity mode]"):在此模式中启动每个沙盒进程,履行治理器将查找运行 SharePoint Foundation 沙盒代码办事的办事器,该办事器已在其 SPUCWorkerProcess进程内为相同的沙盒办理规划创建了一个利用法度榜样域(application domain)。(假如其他网站集的另一个用户之前已哀求该相同的沙盒办理规划,则将呈现此环境)。假如存在一个匹配的利用法度榜样域,则会将哀求发送到相同的利用法度榜样域以进行处置惩罚。假如运行 SharePoint Foundation 沙盒代码办事的任何办事器都不具有沙盒办理规划的利用法度榜样域,则履行治理器会将哀求分配给这些办事器中最闲的办事器。之后,该办事器将创建所需的利用法度榜样域并处置惩罚对沙盒办理规划的哀求。

不管应用的是"本地模式"照样"相似性模式",沙盒事情进程中的利用法度榜样域(application domain)都将在处置惩罚完哀求后维持活动状态,且假如存在对相同沙盒办理规划的其他哀求,则将重用该利用法度榜样域。

默认环境下,由给定办事器处置惩罚的所有沙盒办理规划都在相同的沙盒事情进程中运行,但这种设置设置设备摆设摆设是可以经由过程object Model进行改动的。每个沙盒办理规划会在老例进程(common process)中获取其自己的利用法度榜样域(application domain),而这种设置设置设备摆设摆设也是可以经由过程object Model进行改动的

2.3 运行"Microsoft SharePoint Foundation沙盒代码办事"物理办事器的分配措施

假如你的办事器场包孕了多少台办事器,那么你既可以在所有物理办事器上启动"Microsoft SharePoint Foundation沙盒代码办事",也可以只选择在某几台利用办事器上启动"Microsoft SharePoint Foundation沙盒代码办事"。

当然你也可以筹备一台设置设置设备摆设摆设对照高的办事器加入到办事器场中专门用于运行"Microsoft SharePoint Foundation沙盒代码办事"。这样,无论办事器场中的哪一台前端办事器必要运行沙盒办理规划中的自定义代码,这些哀求都邑被发送到这台强大年夜的物理办事器长进行处置惩罚。

三、沙盒事情进程(SPUCWorkerProcess) 内的代码履行和安然模型

前面我们提到,沙盒规划着实便是一种"受限"规划,正由于受限,以是才安然。以是,在沙盒事情进程(SPUCWorkerProcess)中运行的所有代码会受到履行和造访约束的限定。

这种约束有两个体系:

3.1、第一个体系称作"办事器端工具模型约束"

此约束体系仅适用于沙盒办理规划中的代码对主 SharePoint Foundation 法度榜样集(即 Microsoft.SharePoint.dll)的调用,其调用只感化于Microsoft.SharePoint.dll中的部分object model。这种约束不仅仅是指从用户创建的Sharepoint Solution中调用Microsoft.SharePoint.dll,而且还包括从Sharepoint的其它法度榜样集(eg: Microsoft.Sharepoint.Linq.dll)来调用Microsoft.SharePoint.dll法度榜样集。

3.1.1办事器端工具模型约束体系中的主要限定是:

只能从沙盒办理规划调用 Microsoft.SharePoint.dll 法度榜样集中的部分 API。调用任何禁止的 API 会激发非常(将捕获该非常,并将其作为差错申报给用户)。

以下是可造访的 SharePoint 工具模型的一些限定:

SPWebApplication 类弗成用。此外,这意味着,沙盒办理规划无法造访其托管网站集外部的任何内容。

Microsoft.SharePoint.WebControls 命名空间中的所有类险些都弗成用,这意味着,您只能应用沙盒办理规划中的 ASP.NET 控件。

3.1.2办事器端工具模型约束经由过程以下机制来施加:

此限定由一对位于%ProgramFiles%Common FilesMicrosoft Sharedweb server extensions14UserCodeassemblies 中的分外受限版本的 Microsoft.SharePoint.dll 法度榜样集(称作添补法度榜样 法度榜样集)实现。这两个版本与标准 Microsoft.SharePoint.dll 法度榜样集的主要差异是,它们仅包孕标准版本中的部分类和成员。

这两个添补法度榜样法度榜样集之一由沙盒事情进程(SPUCWorkerProcess)加载,另一个添补法度榜样法度榜样集在完全信模式下运行的特殊代理进程 (SPUCWorkerProcessProxy) 中加载,并由 SharePoint Foundation沙盒代码办事(SPUCHostService)治理。

此外,标准 Microsoft.SharePoint.dll 法度榜样集也在此代理进程中加载。

这两个添补法度榜样法度榜样集的主要事情是:

I、筛选出禁止的 SharePoint 类和成员

在从沙盒事情进程中的任何代码调用 Microsoft.SharePoint.dll 时,它将重定向到法度榜样集的添补法度榜样版本。假如要调用的 API 未在添补法度榜样法度榜样集中,则将激发非常(将捕获该非常,并将其作为差错申报给用户)。

当沙盒办理规划调用添补法度榜样法度榜样集中包孕的已赞许的 API 时,第一个添补法度榜样法度榜样聚会会议(它由沙盒事情进程SPUCWorkerProcess加载)在完全相信代理进程中将此 API 通报给第二个添补法度榜样法度榜样集(它由特殊代理进程(SPUCWorkerProcessProxy)加载),而第二个添补法度榜样法度榜样聚会会议将此 API 通报给标准 Microsoft.SharePoint.dll。任何返回的结果将通报回原始调用代码。可经由过程 .NET 远程来实现此跨进程交互。

沙盒事情进程和完全相信代理进程老是一路启动并成对呈现。假云云中一个进程崩溃,则另一个进程也会竣事。

II、对通报给Sharepoint API的参数进行特殊限定

该限定也由添补法度榜样法度榜样集强制实施。我们可似从沙盒办理规划中调用某些 SharePoint API,但只会将针对参数的特殊限定通报给这些 API。这些输入限定由添补法度榜样法度榜样集强制实施,并确保在发生冲突时激发非常。在 SharePoint Foundation 2010 中,仅 SPSite(String) 和 SPSite(Guid) 构造函数属于此利用环境。虽然它们对沙盒办理规划可用,但只能将引用安装了沙盒办理规划的网站集的 URL 或 GUID 通报给它们。

由于第二个添补法度榜样法度榜样集和标准 Microsoft.SharePoint.dll 在完全相信的进程中运行,以是上述限定就不 适用于对 Microsoft.SharePoint.dll 法度榜样集中的 API 的调用,更进一步说便是经由过程这些API就可以完成某些在沙盒规划中被禁止的操作。比如: 对 GetLocalizedString 措施的调用可从文件系统中的资本文件读取,而对 SPList 工具的调用可读取并写入到内容数据库中,无论其所在的办事器若何。(然则,不能将文件支配到沙盒办理规划中的磁盘,是以,必须将 .resx 作为场办理规划零丁安装。)

3.2、第二个体系称作"一样平常约束"

此约束体系适用于所有其他 调用,包括对所有其他 SharePoint 法度榜样集和 .NET Framework 法度榜样集的调用,只要不是对主 SharePoint Foundation 法度榜样集(即 Microsoft.SharePoint.dll)的调用就行。

上面这两个体系是互斥的:一样平常约束不 适用于对 Microsoft.SharePoint.dll 法度榜样集的调用,你只能二选 一。此外,还有一些由沙盒办理规划中应用的分页出现系统孕育发生的杂项约束。

"一样平常约束"经由过程两种机制来施加:

I、第一种机制

是经由过程在wss_usercode.config 文件所定义的高度限定的 CAS 策略来大年夜大年夜限定沙盒事情进程中可履行的代码,此文件在%ProgramFiles%Common FilesMicrosoft Sharedweb server extensions14CONFIG 中定义,并在 %ProgramFiles%Common FilesMicrosoft Sharedweb server extensions14UserCode 下的 web.config 文件中引用了该策略。(微软不支持变动此文件。)由 CAS 策略施加的限定如下:

沙盒中的代码不能调用非托管代码。

沙盒中的代码不能调用 Microsoft .NET Framework 3.5 反射 API。

沙盒中的代码只能调器具有 AllowPartiallyTrustedCallersAttribute 属性的 .NET Framework 3.5 法度榜样集。这将阻拦对约三分之二的 .NET Framework 3.5 API(例如,包括 System.Printing)的造访。此外,一些 SharePoint 法度榜样集不具有此属性。

CAS 策略将强名称 Microsoft Office 法度榜样集视作例外。这些法度榜样集赋予了完全相信。

II、第二种机制

是经由过程安然令牌来实施,即给沙盒事情进程付与一个低权限的安然令牌。

该令牌回绝进程对文件系统进行读取或写入的权限。

该令牌回绝进程对收集进行调用的权限。是以,只能造访运行沙盒事情进程的办事器上可用的资本。例如,无法造访外部数据库。

该令牌回绝进程对注册表进行写入的权限。

该令牌回绝对未在老例法度榜样集缓存(GAC)中的任何法度榜样集进行调用的权限,纵然它具有 AllowPartiallyTrustedCallersAttribute 属性也是如斯,否则它将相符从沙盒事情进程进行调用的资格。

沙盒办理规划自身的支配阶段在沙盒事情进程中运行,并受相同履行约束的限定。例如,在支配沙盒办理规划时,无法将文件支配到磁盘。这是用户控件(ASCX 文件)不能位于沙盒办理规划中的主要缘故原由。

四、关于沙盒规划资本应用的限定

沙盒规划既然把必然的权力下放,但由此却带来潜在的问题,那便是对Sharepoint资本的分配。设想假如不加节制,那么某个用户就可能把特定的资本耗损殆尽。以是,Sharepoint也就自然引入了针对资本的应用限定,详细有如下三条限定规则

每个哀求(哀求遭到处罚):对付完成沙盒办理规划所需的光阴有一个硬性限定。默认环境下,此光阴限定为 30 秒。假如沙盒办理规划越过了该限定,则将终止哀求(而非沙盒事情进程)。(此限定是可设置设置设备摆设摆设的,但只能经由过程针对工具模型的自定义代码进行此操作。工具模型的相关部分对沙盒办理规划弗成用,是以,任何沙盒办理规划都无法变动此限定。)

每个哀求(进程遭到处罚):有一组适用于哀求的附加资本限定(共 15 条)。假如哀求越过某个限定,则将终止进程(以及进程中运行的所有 沙盒办理规划)。

天天/每个网站集(网站集遭到处罚):每个网站集均受可设置设置设备摆设摆设的逐日"资本点"最大年夜数的限定。这些点基于某种算法进行累计,该算法会斟酌网站集中安装的沙盒办理规划对 15 类资本的应用。当网站集越过其容许的最大年夜点数时,该网站集中的所有沙盒办理规划将终止,且在残剩光阴内再也无法运行。

五、沙盒的分页出现

当客户端谋略机哀求包孕沙盒办理规划中的组件(例如,沙盒办理规划中支配的 Web 部件)的 SharePoint 页时,SharePoint 会出现多个页工具。此中一个页工具在 Microsoft ASP.NET 事情进程 (w3wp.exe) 中出现,而其他页工具在沙盒事情进程中出现。所有非沙盒组件会在 ASP.NET 事情进程中的页上出现,而第一个沙盒组件会在沙盒事情进程中的一个页工具上出现。在完全出现沙盒事情进程中的该页时,会将该页并入 ASP.NET 进程中的页工具。假如用户哀求的页上有多个沙盒组件,则将在这些组件在沙盒事情进程中所对应的页工具上零丁出现它们。反过来,每个此类页工具将并入 ASP.NET 进程中的页工具。

六、开脱沙盒限定

沙盒办理规划可经由过程两大年夜要领开脱老例限定。

1.应用客户端代码造访无法从沙盒办理规划中的办事器端代码造访的资本。

例如,沙盒办理规划可包孕带 JavaScript 的自定义网页,JavaScript 可调用 SharePoint 的 JavaScript 客户端工具模型。此外,沙盒办理规划可包孕承载 Microsoft Silverlight 利用法度榜样的 Web 部件。后面的利用法度榜样可调用 SharePoint 的 Silverlight 客户端工具模型。沙盒办理规划上的任何限定都不适用于客户端代码。不存在以下限定:代码履行限定、资本造访限定和资本应用率限定。

2.经由过程完全相信代理。

即开拓一个办事器场办理规划,它包括派生自 SPProxyOperation 的一个或多个类,此中的每个类均定义一个将在完全相信下运行的操作,并且可经由过程 ExecuteRegisteredProxyOperation 措施从沙盒办理规划中调用这些类。详细而言,将在运行标准 Microsoft.SharePoint.dll 法度榜样集的相同代理进程 (SPUCWorkerProcessProxy.exe) 中履行这些完全相信代理操作。代理操作可将数据返回到沙盒办理规划。

七、Sharepoint履行的其它环境

并不是所有的Sharepoint 实施都依附于IIS事情进程(IIS worker process),沙盒事情进程(sandboxed worker process)或其代理进程(proxy process)。下面便是一些例子:

Sharepoint的Timer Service,用于履行预设的功课,它可以影响其它办事,它以Farm帐户运行在owstimer进程下。

SharePoint的Tracing Service ,以本地的办事帐户(local service account)运行在wsstracing进程下。

SharePoint Administration Service 以本地系统帐户(local system account)运行在wssadmin进程下。

转自:http://www.cnblogs.com/wsdj-ITtech/archive/2012/11/08/2544198.html

您可能还会对下面的文章感兴趣: