这个优化区域内置了最常见的几个精简项目,包括类型(搜索结果是何种类型)、来源(搜索结果来自于哪个网站)、作者、修改日期等。如果在文档管理系统中使用了SharePoint 2010新的托管元数据服务中的术语来定义了企业关键字,那么这些关键字也会自动出现在优化区域中。 除了内置的这些精简项目,管理员可以添加更多的额外精简项目。不过如果希望某个属性能作为一个精简项目,管理员需要首先将它定义为搜索服务中的托管属性。 比如,在文档系统中,我们定义了一个专门的字段,“技术等级”,来描述所有技术文档的难度。这个字段的内部名称是“TechLevel”。
首先,在SharePoint 2010搜索管理中对所有内容进行一次完全爬网。如果爬网引擎发现了爬网内容有一个额外的字段,它会将这个字段作为已爬网属性存储到搜索数据库中。 接下来,我们需要将这个已爬网属性定义为托管属性。从SharePoint 2010管理中心里面,通过“管理服务应用程序 - Search Service Application - 元数据属性”,就打开了元数据属性管理界面。点击“新建托管属性”。 为新托管属性取名为“TechLevel”,然后,我们需要将它与已经存在的那个已爬网属性关联起来。点击“添加映射”按钮,然后搜索“TechLevel”(因为这是那个字段的内部名称),找到这个已爬网属性。将它与新托管属性建立起映射。
最后这个新托管属性的定义如下。
要在一个SharePoint 2010程序中使用Session,开发人员会面临一些潜在的问题。SharePoint 2010系统很可能被部署为一个服务器场的模式,它可能包含有多台Web前端服务器,用户的Http请求会被NLB机制分发到多台Web前端服务器的任意一台上。这就要求开发人员应该尽可能的编写出“无状态”的代码,也就是说,代码不能依赖于某一台具体的服务器,因为开发人员没有办法确定自己的代码会始终运行在一个服务器上。有可能一个用户浏览一个页面时,它的请求被分配到Web服务器A,然后当用户刷新一下页面,这次请求则被分配到了Web服务器B。 在这样的服务器场模型中,代码在服务器的内存里面保存的任何数据,都会随着下次用户刷新后,处理用户请求的服务器转移,而变得没有意义。这也是编写大规模分布应用代码的一个很典型的挑战。 当编写有可能运行在服务器场中的分布式应用时,通常都会引入一个专门的分布式数据存储或分布式缓存方案。比如说,有名的Memcached就是专门干这事儿的。 好吧,稍微扯远了一点。无论如何,SharePoint 2010由于某种原因,默认禁止在代码中使用Session。禁止的理由很可能是为了预防开发人员写出过于依赖Session的“有状态”代码,因为ASP.NET的Session默认是保存在服务器的内存中。一旦这些代码被部署到分布式服务器场环境中,它们就很可能由于依赖仅仅存储在某一台服务器内存中的Session数据而出错。 “你就别忽悠了,不要以为我们不知道ASP.NET的Session除了默认的InProc模式,还支持StateServer和SQLServer模式!”嗯,是的,ASP.NET的Session其实是可以配置成StateServer和SQLServer模式。StateServer模式是使用一台特定服务器上的一个Session State服务,来为服务器场中的所有服务器提供状态保存服务,SQLServer模式则是将所有状态信息保存到SQL Server数据库中。这两个模式都是能够很好的支持分布式服务器场模型的。 所以,对于喜欢在代码中使用Session的同学而言,我们可以大胆的通过修改Web应用程序的web.config文件,手工启用Session。不过,稍等,SharePoint 2010其实已经内置了一个PowerShell指令,让我们轻松的在服务器场里面启用Session。这个指令就是Enable-SPSessionStateService。
这个自动添加的条目,指明了Session将使用SQLServer模式以及存放Session的数据库连接字符串。打开SQL Server Management Studio,就能找到这个由Enable-SPSessionStateService自动创建的数据库,它仅包含2个Table。
这两个下拉菜单为用户提供了一些快捷链接,包括访问IT的Support网站、查看当前网站的信息,以及从系统中申请一个新的SharePoint网站等。
就像上面的截图所显示的,在浏览器弹出的对话框上,只能让用户保存(Save)的选项,而没有一个打开(Open)的选项。但可能有人会记得,以前SharePoint 2007的时候,并不是这样的。用户直接点击一个存放在SharePoint 2007文档库里面的PDF文件时,浏览器会提示用户,可以直接打开它,然后本地安装的PDF Reader就会直接打开这个PDF文件,开始阅读。 先说解决这个问题的方法。打开SharePoint 2010管理中心,管理Web应用程序,选择一个Web应用程序,点击Ribbon区域的“常规设置”,然后在弹出的设置对话框中,将“浏览器文件处理程序”这个设置项从默认的“严格”,修改为“许可”。
搞定!你会发现修改了这个设置之后,浏览器会重新显示出“打开”选项,让用户可以直接打开PDF文件。 好了,如果你只是想解决这个问题,可以不用继续往下阅读了。 嗯,想知道为什么?好吧,这就是原因。重新将Web应用程序常规设置中的“浏览器文件处理程序”设置项改回默认的“严格”。打开文档库,这次在点击PDF文件链接之前,打开浏览器的Developer Tools(在IE浏览器中是通过F12打开它,下面将使用IE浏览器做例子,FireFox和Chrome也有各自的类似工具可以使用)。在“Network”选项卡中点击“Start capturing”按钮,它会捕获当前浏览器窗口与服务器之间的所有网络通信。然后,点击那个PDF文件链接。
在“Network”选项卡里面,找到用户点击PDF链接时所产生的网络请求,双击它,就可以看到这次请求的所有详细的Request和Response信息。点击“Response headers”选项卡,就可以看到从SharePoint 2010服务器所返回的HTTP头信息。嗯,如下图所示,你会看到一个有趣的头信息,“X-Download-Options = noopen”。
SharePoint Server 2010内置的搜索功能也支持搜索范围。SharePoint 2010已经内置定义好了两个搜索范围:“所有网站”和“人员”。前者包括所有内容源中的所有内容,后者则只包含了所有用户(来自于用户配置文件)。如果需要,管理员也可以添加额外的搜索范围,帮助用户更方便的搜索到希望的内容。 要创建一个自定义搜索范围,并使其显示在SharePoint 2010搜索中心,需要进行一些额外的设置。本文将演示为SharePoint 2010系统添加一个“Word文档”搜索范围,并使用户可以通过搜索中心,方便的使用这个搜索范围来进行Word文档的搜索。 (一) 在搜索服务应用程序中添加搜索范围 打开SharePoint 2010管理中心,通过“管理服务应用程序 - Search Service Application”打开搜索管理界面。点击搜索管理页面左侧的“范围”链接,然后点击“新建范围”。
为新范围取名为“Word文档”,然后在目标结果页面中输入“WordResults.aspx”这个页面。别担心,稍后我们会在搜索中心网站中,把这个页面创建出来。这个页面将用来显示“Word文档”搜索范围的搜索结果。 接下来,为“Word文档”范围添加规则。规则定义了哪些搜索结果是属于某个搜索范围的。规则有多种类型,既可以使用URL匹配(比如某个路径下的内容属于某个范围),也可以使用属性(比如凡是作者等于kaneboy的内容属于某个范围),或内容源(比如凡是来自某个BCS外部数据内容源的内容属于某个范围)来定义规则。
由于只希望扩展名为“.doc”和“.docx”的文件出现在“Word文档”搜索范围中,所以需要定义一个属性查询类别的规则,并添加一个“FileExtension = docx”的属性查询条件。在规则行为中,选择“包含”。如法炮制,为“Word文档”范围再添加一个“FileExtension = doc”的规则。定义好这两个规则的搜索范围设置界面如下图。
但是无论使用哪种路径合适,这个新网站集的主机头仍然需要使用“http://sp2010”,这个主机头是在创建Web应用程序时,指定给Web应用程序的。 实际上,SharePoint是允许我们创建自定义主机头的网站集的。比如,在“http://sp2010”Web应用程序里面,我们完全可以创建一个访问路径为“http://itg.contoso.com”的网站集。 当然,如果你要使用一个自定义的主机头,首先需要确保DNS系统能够正确的将这个主机头的域名解析到正确的IP地址上。比如,如果需要使用“itg.contoso.com”作为新网站集的主机头,可能就需要在DNS服务器上添加对这个域名的解析记录。
要创建自定义主机头的网站集,不能通过Web UI界面完成,而必须使用PowerShell指令。打开SharePoint服务器上的SharePoint 2010 Management Shell,然后使用下面这行指令来创建自定义主机头的网站集: New-SPSite http://itg.contoso.com -Name "Contoso IT Group" -OwnerAlias contoso\administrator - HostHeaderWebApplication http://sp2010 New-SPSite的4个参数分别指定了新网站集的路径、名称、所有者和所属的Web应用程序。
在管理中心,查看Web应用程序中的网站集时,就会看到这个拥有自定义主机头的网站集。
然后用户就可以随时使用页面右上角的用户菜单,将当前网站的显示UI,在多个语言之间进行切换。
如果你尝试一下这个功能,就会发现一个有趣的现象。对于SharePoint 2010的内置列表和文档库,它们的名称,以及所有字段的名称,都会根据当前的UI语言,显示成不同的语言文字。比如,这是“共享文档”在中文UI语言下所显示的样子:
如果这时将UI切换成英文,那么它就会变成:
SharePoint 2010已经包含了一组内置的服务应用程序,它们为SharePoint 2010网站提供了诸多后端服务,是组成SharePoint 2010的重要组成部分。下面的表格列出了主要的SharePoint 2010内置服务应用程序,以及它们的简要说明。 服务应用程序 描述 是否存储数据 是否可发布 SharePoint Foundation 2010 SharePoint Server 2010 标准版 SharePoint Server 2010 企业版 Access Services 在浏览器中查看与编辑Microsoft Access 2010数据库。 仅缓存数据 否 不包含 不包含 包含 业务数据连接 访问和修改后端业务系统的数据。 使用数据库存储 是 包含 包含 包含 Excel Services 在浏览器中查看Excel文件。 仅缓存数据 否 不包含 不包含 包含 Managed Metadata Service 提供了对企业级托管元数据的存储和管理,同时可以在网站集之间共享内容类型。 使用数据库存储 是 不包含 包含 包含 PerformancePoint 提供了PerformancePoint Services所包含的BI报表功能。 仅缓存数据 否 不包含 不包含 包含 PowerPoint 在浏览器中查看、编辑和广播PowerPoint幻灯片。 仅缓存数据 否 不包含 不包含 包含 搜索 提供了SharePoint 2010的企业级搜索功能。 使用数据库存储 是 不包含 包含 包含 安全存储服务 用来存储访问其他应用系统的用户凭证信息,这些凭证信息可用于SSO单点登录场景。 使用数据库存储 是 不包含 包含 包含 状态服务 暂时存储用户的会话(Session)数据。 使用数据库存储 否 不包含 包含 包含 使用率和运行状况数据集 收集用户使用率和运行状况数据,提供相关的数据报表。 使用数据库存储 否 包含 包含 包含 User Profile 为“我的网站”、配置文件页面、社会化标签和其他社会化功能提供支持。 使用数据库存储 是 不包含 包含 包含 Visio Graphics Service 在浏览器中查看Microsoft Visio图形。 仅缓存数据 否 不包含 不包含 包含 Web分析 提供Web Service接口。 不存储 是 不包含 不包含 不包含 Word Automation Services 进行批量自动化文档转换操作。 仅缓存数据 否 不包含 不包含 包含 在上个版本的SharePoint中,只有Office SharePoint Server 2007才具有共享服务提供程序架构,而Windows SharePoint Services 3.0是没有使用共享服务提供程序架构的。但是对于SharePoint 2010,无论是SharePoint Foundation 2010,还是SharePoint Server 2010,都使用了统一的服务应用程序架构。但SharePoint Foundation 2010、SharePoint Server 2010标准版和SharePoint Server 2010企业版所内置的服务应用程序数量是不同的。 除了上面的表格所列出的服务应用程序之外,在为SharePoint 2010系统安装了额外的Office Web Applications和Project Server组件时,它们都会向服务器场中注册更多的服务应用程序。 从上面对SharePoint 2010服务应用程序架构的讨论中,我们可以了解到,服务应用程序架构比上个版本的共享服务提供程序提供了更好的灵活性,并构建起一个强大的后端服务架构。通过服务与服务应用程序,SharePoint 2010将前端的网站与后端的服务有效的进行了分离。 最后需要提醒的是,并非所有SharePoint 2010服务都是基于服务应用程序架构来构建。例如, “Microsoft SharePoint Foundation 沙盒代码服务”服务就并非基于服务应用程序架构,实际上,它使用了一个名为“SPUserCodeV4”的Windows服务来实现自己的功能。[/img]..