冠军

思胜.NET 高级培训

导航

公告

统计

2010年12月18日 #

SharePoint 与 ASP.NET 的集成

对于 SharePoint 来说,必须确保每一个入站的请求被路由和处理,对于默认的 ASP.NET 来说,仅仅注册后的扩展名才会被处理,例如:aspx 扩展名,asmx 扩展名等等。首先,SharePoint 配置所有的请求都将会被处理,包括 doc 扩展名,docx 扩展名和 pdf 扩展名。

在 ASP.NET 中,每一个请求都将创建一个处理的上下文 HttpContext,并被 HttpApplication 处理,SharePoint 扩展了 HttpApplication ,这个类是 Microsoft.SharePoint.ApplicationRuntime.SPHttpApplication,这个类定义在程序集 Microsoft.SharePoint.dll 中,在网站的 global.asax  中,如下定义了实际的网站应用程序类:

<@Application Inherits="Microsoft.SharePoint.ApplicationRuntime.SPHttpApplication" >

 

 在 SharePoint 中,请求处理的 HttpApplication 关系图如下所示:

除了 HttpApplication 对象,SharePoint 还自定义了 HttpHandler 和 HttpModule,这两个扩展也使用标准的方式在 web.config 中进行了定义。

<configuration>
  
<system.web>
    
<httpHandlers>
      
<remove verb="GET,HEAD,POST" path="*" />
      
<add verb="GET,HEAD,POST" path="*"
           type
="Microsoft.SharePoint.ApplicationRuntime.SPHttpHandler, ..." />
    
</httpHandlers>
    
<httpModules>
      
<clear />
      
<add name="SPRequest"
           type
="Microsoft.SharePoint.ApplicationRuntime.SPRequestModule, ..." />
      
<!-- other standard ASP.NET httpModules added back in -->
    
</httpModules>
  
</system.web>
</configuration>

 

SharePoint 还定义了名为 SPRequestModule  的 Module 来初始化 SharePoint 环境。

SharePoint 使用自定义的配置节扩展标准的 web.config 配置文件。

<configuration>
  
<configSections>
    
<sectionGroup name="SharePoint">
      
<section name="SafeControls" type="..." />
      
<section name="RuntimeFilter" type="..." />
      
<section name="WebPartLimits" type="..." />
      
<section name="WebPartCache" type="..." />
      
<section name="WebPartWorkItem" type="..." />
      
<section name="WebPartControls" type="..." />
      
<section name="SafeMode" type="..." />
      
<section name="MergedActions" type="..." />
      
<section name="PeoplePickerWildcards" type="..." />
    
</sectionGroup>
  
</configSections>

  
<SharePoint>
    
<SafeMode />
    
<WebPartLimits />
    
<WebPartCache />
    
<WebPartControls />
    
<SafeControls />
    
<PeoplePickerWildcards />
    
<MergedActions />
    
<BlobCache />
    
<RuntimeFilter />
  
</SharePoint>
</configuration>

 

对于网站内容来说,SharePoint 通过自定义的 SPVirtualPathProvider 来提供,这一点与经典的 ASP.NET 网站不同,在经典的 ASP.NET 网站中,通过基于文件目录的提供器来取得网站内容,而 SharePoint 通过 SQLServer 来处理。当你创建一个页面,并保存到 SharePoint 的时候,这个页面被实际保存到 SharePoint 的内容数据库中,当访问这个页面的时候,页面从内容数据库中读取出来。

 

对于 SharePoint 网站来说,还创建了许多虚拟目录。像 _layouts、controltemplates 等等。

这些虚拟目录映射到服务器的特定目录下。_layouts  目录中包含了特定类型的页面。

c:\program files\common files\microsoft shared\web server extensions

 

 一些 SharePoint 中的页面支持定制,这种页面称为站点页 Site Pages,支持定义提供了巨大的灵活性,但是也有缺点,为了灵活而又不影响扩展性,SharePoint 必须采取一些措施。

在 SharePoint 中还提供了一种称为 Application Page,这种页面不支持定制,因此,可以规避一些性能和安全方面的问题。

标准的站点设置页面就是 Application Page 的典型例子,可以在任何站点访问它,页面在系统的如下目录中:

c:\program files\common files\microsoft shared\web server extensions\12\TEMPLATE\LAYOUTS

 

下图是 WSS3.0 中的 layouts 中的内容。注意,上文中的 _layouts 将会映射到这个文件夹。

posted @ 2010-12-18 23:42 冠军 阅读(353) 评论(2) 编辑

SharePoint 中的功能 - Feature

对于程序员来说,基于 SharePoint 的开发有着众多的途径,但是,还是应该从功能 - Feature 开始。

MSDN 中的定义如下:

A feature is a package of Windows SharePoint Services elements that can be activated for a specific scope and that helps users accomplish a particular goal or task.
Feature 是包含 SharePoint 中元素的包,可以在特定的范围激活,帮助用户完成特定的目标或人物。

从 WSS3.0 开始,Feature 提供了一种定义站点元素和增加它们到站点或者站点集中的机制,定义在 Feature 中的元素类型包括:菜单命令、链接命令、页模板、页实例、列表定义、列表实例、事件处理器、工作流、WebPart 等。

从物理文件的角度来说, Feature 是通过一个目录来组织的,这个目录定义在 Web Application 的特定位置中,其中包含一个或者多个 CAML (  Collaborative Application Markup Language )  XML 文件,按照惯例,每一个 Feature 目录中包含一个名为 feature.xml 的清单文件,其中描述这个 Feature 的高级属性,例如:ID 和用户友好的标题等。

在这个 feature.xml 文件的后面,一个 Feature 通常包含一个或者多个附加的 XML 文件,例如,elements.xml 文件,其中定义了 Feature 中实际的元素。feature 的目录中也会包含其他类型的文件,像列表的定义或者页的模板,或者图片,js 脚本和 css 样式表文件。

Feature 作为标准的功能集合成为 SharePoint 中的一个部分,每一个 Feature 有独立的目录。一旦 Feature 被安装到 SharePoint 中之后,管理员可以在站点设置的页面中使用管理员面访问这个 Feature 并激活。

自定义的 Feature 允许开发人员创建可以在站点或者站点集中激活的一个或者多个元素,SharePoint 甚至提供开发人员定义特殊的称为  Site Defintions 的能力来提供整个站点的蓝图。Site Defintions 允许开发人员定义站点的每一个方面,包括商标,初始的列表,使用的 Feature 等等。

在 Visual Studio 2010 中,当创建 SharePoint 项目之后,VS 将会帮助我们创建和维护这个 feature.xml 文件。

在项目中将会包含一个名为 Features 的文件夹,如果所示:

其中包含的 Feature 1 就是 Feature 文件。

 

posted @ 2010-12-18 22:06 冠军 阅读(266) 评论(2) 编辑