none
WSS对IIS的扩展 RRS feed

  • 常规讨论

  • WSS基于标准的asp.net 2.0开发 ,这是WSS开发中要始终记住的一点. 要精通WSS开发,一定要精通asp.net

             每次新建一个WSS站点,IIS中会同样新建一个网站,我们称这个网站是被WSS扩展后的网站。那么扩展后,发生了什么呢?

             首先,IIS站点的所有文件的处理都被影射为需要asp.net运行引擎处理,而标准的IIS站点只有asp.net本身的文件(如aspxasmx等)才需要运行引擎处理的,其他文件由IIS直接输出到客户端。

             查看一下站点下的web.config文件,我们看到有这么一项配置:

    <httpHandlers>

          <removeverb="GET,HEAD,POST"path="*" />

          <addverb="GET,HEAD,POST"path="*"type="Microsoft.SharePoint.ApplicationRuntime.SPHttpHandler, Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />

          <addverb="OPTIONS,PROPFIND,PUT,LOCK,UNLOCK,MOVE,COPY,GETLIB,PROPPATCH,MKCOL,DELETE,(GETSOURCE),(HEADSOURCE),(POSTSOURCE)"path="*"type="Microsoft.SharePoint.ApplicationRuntime.SPHttpHandler, Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />

        </httpHandlers>

    HttpHandlerasp.net的一个扩展机制,通过实现一个HttpHandler,可以来直接针对较低层的RequestResponse编程,WSS通过实现自己的HttpHandler实现对客户端所有请求文件的处理,并且,通过扩展Http请求(扩展OPTIONS,PROPFIND,PUT,LOCK,UNLOCK,MOVE,COPY等动作),实现文档的在线编辑,在线编辑的实现原理可参考这篇文章:http://www.cnblogs.com/jianyi0115/archive/2007/07/15/818566.html

             注意httpModules节点下的这项配置:

    <addname="SPRequest"type="Microsoft.SharePoint.ApplicationRuntime.SPRequestModule, Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />

             HttpModule也是asp.net的扩展机制,通过实现一个HttpModule,可以切入Http请求的某个阶段做出相应的处理,如身份校验,初始化一些通用模块等。

             WSS通过实现SPRequestModule,切入Http请求,进行一些需要的处理。最重要的是,WSS通过SPRequestModule引入了SPVirtualPathProviderSPRequestModuleOnInit方法中有这个关键的一句:

        SPVirtualPathProvider provider2 = new SPVirtualPathProvider();

    HostingEnvironment.RegisterVirtualPathProvider(provider2);

    VirtualPathProvider也是asp.net的扩展机制,通过实现VirtualPathProvider可以控制asp.net页面的提供机制,默认的VirtualPathProvider的实现直接访问服务器硬盘上的文件。WSS通过SPVirtualPathProvider实现了自己的页面Provider机制—WSS站点的页面是由文件系统和数据库联合存储的。

    新建一个WSS站点后,它的所有的文件都是放在硬盘上,我们通过SharePonit Designer打开一个WSS站点,可以看到完整的目录结构,这些文件实际上全部都影射到文件系统上的某个文件,这个功能叫做ghost。当我们通过SPD修改了某个文件之后,WSS会把这个修改的文件保存到数据库,这个文件跟原始的文件系统上的文件就脱离关联了,这叫做unghost.通过ghost,WSS做到了是不同的站点可以共享相同的文件,通过unghost,WSS又实现了一个站点对页面的修改不会影响到其他站点.

    2009年5月31日 9:26