Sharepoint学习笔记—习题系列--70-576习题解析 -(Q144-Q146)

时间:2023-03-08 16:01:35

Question  144
 You are planning a feature upgrade for a SharePoint 2010 farm. The original feature with a version number of 1.0.0.0 is activated in numerous scopes within the farm. You have designed a new version of the feature, 2.0.0.0, which has been deployed and activated in many locations but not all. You need to recommend a way to use the object model to determine if the version number of each feature instance is less than the 2.0.0.0 version in all of the locations. Which approach should you recommend?
A. Use the object model to update the Version attribute of the feature in the existing Feature.xml file.
B. Call the Query Features method for each location hosting the feature in the various scopes.
C. Programmatically add an <Upgrade Actions> section to the Feature.xml file that specifies the new version number for the feature.
D. Create a feature receiver that calls the Upgrade method of the SPFeatures class for the feature.

解析:
   你计划升级Sharepoint2010场内的某个功能,此功能的老版本1.0.0.0实例已经在场内的若干层次被激活了,你开发的新版本2.0.0.0 被部署到场内的许多位置,但并没有覆盖所有1.0.0.0实例的位置。因此,你想要使用对象模型来鉴别场内的哪些功能实例其版本号是低于2.0.0.0的。
   本题仍旧涉及Sharepoint的功能升级:
   为了提供功能升级能力,Microsoft SharePoint Foundation 对象模型中已经添加了新的类型和成员。这些类型和成员包括:

  •  FeatureUpgrading 事件
  •  Version 属性
  •  QueryFeatures 方法
  •  Upgrade 方法

1. FeatureUpgrading 事件: 功能接收器 (SPFeatureReceiver) 现在可用于处理 FeatureUpgrading(SPFeatureReceiverProperties, String, IDictionary<String, String>) 事件。您可以实现自己的自定义功能接收器来升级功能实例。
2.Version属性: 现有的 SPFeatureDefinition 类已具有一个 Version 属性,而 SharePoint Foundation 中的 SPFeature 类还提供一个新的 Version。但是,在 Feature.xml 文件中指定的当前功能版本是在 SPFeatureDefinition 类中定义的版本。Version 是唯一在指定作用域中与某个功能实例相关联的版本类,而该作用域与功能定义版本可能并不匹配。如果与某个特定作用域中的对象(例如 SPWebApplication 或 SPSite 对象)关联的一个或多个功能的版本号比与该功能实例关联的 Feature.xml 文件中指定的版本号低,则确定该对象需要升级。【选项A所涉及的思路】,但本题是需要判断哪些功能实例其版本号是低于2.0.0.0的,而不是选项A所作的升级版本号。所以选项A也应该被排除。
  3.QueryFeatures 方法:新的 QueryFeatures 方法允许您通过使用一组筛选条件来查询不同作用域中的功能。SPWebService、SPWebApplication、SPContentDatabase 和 SPSite 类均提供一个 QueryFeatures 方法,其重载允许您指定不同的条件来确定返回哪个功能实例结果集。

  •  SPWebService -- 在服务器场中查找符合筛选条件的已激活的功能实例。
  •  SPWebApplication -- 查找符合指定筛选条件的 Web 应用程序、网站集和网站范围的功能。将针对 Web 应用程序对象中的所有内容数据库运行查询,并按照内容数据库对返回的集合进行排序。
  •  SPContentDatabase -- 在内容数据库中查找范围限定为网站集和网站并符合指定的筛选条件的功能。返回的集合相对于网站层次结构排序。例如,父网站的功能在子网站功能之前表示,层次结构为从上至下。
  •  SPSite -- 查找所有符合特定筛选条件的网站集和网站范围的功能。返回的集合按照网站层次结构排序。父网站的功能显示在子网站功能的前面,并且按照从上至下的方式安排层次结构。新的客户端对象模型中提供了此类  的 QueryFeatures 方法的重载。

在升级期间,QueryFeatures 方法在它发现某个实例版本号低于当前 Feature.xml 定义版本号时,确定某个功能实例是否过期。根据 Feature.xml 文件中的 UpgradeActions 指令,将为每一个需要升级的功能实例调用升级。在成功升级某个功能实例之后,其版本号将会更新以匹配 Feature.xml 文件定义版本号。
  从以上描述可以判断,QueryFeatures 方法正是我们在本题需要用到的方法,所以选项B是本题的正解。
  4. Upgrade 方法:SPFeature 类现在提供一个 Upgrade(Boolean) 方法来为所有作用域中的某个功能实例执行升级:Farm、WebApplication、Site 和 Web。在对一个从属功能实例调用 QueryFeatures 方法时,该方法首先升级相关层次结构中*别的功能实例,然后升级依赖该功能的所有功能实例。这种按层次结构升级的过程可确保所有从属功能实例与其所依赖的功能实例保持同步。【选项D所采用的思路】,但由于本题是要使用对象模型来鉴别场内的哪些功能实例其版本号是低于2.0.0.0的,所以与此方法无关。
   至于选项C. <UpgradeActions>节,Feature.xml 文件中新增的 <UpgradeActions> 节指定可应用于指定功能的升级操作。可以将 <UpgradeActions> 节放置在 Feature.xml 文件的开头或末尾,使其位于 <Feature> 元素的内容中。通过该节,您可以为不同的升级范围指定升级操作,并且可以包含应用于指定范围的升级操作列表。升级定义始终将功能升级到 <Feature> 元素中声明的版本。所以很显然,选项C并不是本题想要的解决办法。

因此本题答案应该选 B

参考 
http://msdn.microsoft.com/zh-cn/library/ee535708(v=office.14).aspx
http://msdn.microsoft.com/zh-cn/library/ee537575(v=office.14).aspx

Question  145
 You are designing a custom application to automate the deployment of SharePoint 2010 solutions. You need to ensure that the application uses Windows Power Shell cmdlets. Which cmdlet sequence should your application use?
A. Add-SPSolution, then Install-SPSolution.
B. Add-SPUserSolution, then Install-SPUserSolution.
C. Install-SPSolution, then Add-SPSolution.
D. Install-SPUserSolution, then Add-SPUserSolution.

解析:
  你开发了一个应用来完成自动部署Sharepoint2010解决方案的任务,你需要保证此应用使用Power Shell命令。你应该选择哪个选项呢?
  本题关于Sharepoint解决方案包的部署安装,Sharepoint解决方案包 是一个分发包,可将您的 SharePoint Server 2010 自定义开发工作分发到您的服务器场中的 Web 服务器或应用程序服务器。解决方案可用于打包和部署自定义功能、网站定义、模板、布局页、Web 部件、级联样式表和程序集。
  您可以使用解决方案包部署新解决方案,以及升级服务器场中的现有解决方案。您可以将所有 SharePoint Server 实体打包为一个文件,将该文件添加到解决方案存储区,以及将其部署到服务器场中的前端 Web 服务器。解决方案包可用于同步前端 Web 服务器,以使其状态与服务器场中其他 Web 服务器的状态一致。
  在本地部署中,仅对从中启动部署操作的计算机部署解决方案文件。仅在将解决方案文件部署到服务器场中的所有可用服务器之后,才会在配置数据库中将该解决方案标记为“已部署”。然后会安装解决方案功能,并将架构和定义文件提交到配置存储区。
  添加解决方案包:必须将解决方案包添加到 SharePoint Server 服务器场的解决方案数据库中,然后才能部署该解决方案包。
  部署解决方案包:您可以使用管理中心网站或 Windows PowerShell 来部署导入的解决方案。在使用 Windows PowerShellAdd-SPSolution cmdlet 将某解决方案添加到解决方案存储区后,必须将该解决方案部署到网站,然后才能对其进行访问。
  上面描述说明,要先”添加”,再”安装部署”,所以可以直接排除选项C.D,因为它们的操作顺序反了。
  选项A.B主要区别是两个PowerShell命令的区别:
   Add-SPUserSolution: 向解决方案库上载新的沙盒解决方案。此 cmdlet 不会激活上载的沙盒解决方案;若要在网站集中激活此解决方案,请使用 Install-SPUserSolution cmdlet。
   Add-SPSolution: 向服务器场上载 SharePoint 解决方案程序包。此 cmdlet 不会部署上载的 SharePoint 解决方案。使用 Install-SPSolution cmdlet 可以在服务器场中部署 SharePoint 解决方案。
   由于本题是” 完成自动部署Sharepoint2010解决方案的任务”,所以应该选A。而选项B使用Add-SPUserSolution命令仅是针对的是沙盒解决方案,且仅是上载解决方案到Solution Gallery,然后用Install-SPUserSolution激活。

因此本题答案应该选 A

参考 
http://technet.microsoft.com/en-us/library/cc262995(v=office.14).aspx
http://technet.microsoft.com/zh-cn/library/ff607715.aspx
http://technet.microsoft.com/zh-cn/library/ff607552.aspx
http://msdn.microsoft.com/zh-cn/library/vstudio/ee231544.aspx
http://msdn.microsoft.com/zh-cn/magazine/cc507633.aspx

Question  146
 You are designing a SharePoint 2010 application. You have a requirement to deploy content between servers that experience frequent interruptions in connectivity. You need to design a strategy for exporting the content to a package and transporting the package to meet the requirements. Which approach should you recommend?
A. Create a job to export the content to a package, and then create a job to transport the package.
B. Create a path to export the content to a package, and then create a job to transport the package.
C. Use the Content Migration API to export the content to a package, and then create a path to transport the package.
D. Use the Content Migration API to export the content to a package, and then manually transport the package.

解析:
  你开发了Sharepoint2010应用程序来完成向若干个服务器中部署某个内容,这些服务器处于频繁的相互交互状态。因此,你需要想出一个办法来完成把你想部署的内容打进一个包,然后再传送到对应的位置。你该如何操作呢?
  本题涉及到Sharepoint的内容迁移,SharePoint Foundation 可提供一组支持将内容和依赖关系迁移到 SharePoint Foundation网站的高度灵活的应用程序编程接口 (API)。此内容可源自另一个 SharePoint 网站,也可以来自外部源。SharePoint 内容迁移的设计基于导出/导入模型。也就是说,您首先需要将网站数据、依赖关系和网站结构导出到累计加入内容迁移数据包(或多个数据包)的数据文件。然后,在目标位置导入该内容迁移数据包,并在迁移目标上重建数据包中的解压缩内容以及数据、依赖关系和结构。
  内容迁移 API 可提供简单而灵活的解决方案,用于在 SharePoint Foundation 网站之间迁移内容。可将与 Windows SharePoint Services 网站有关的内容连同任何依赖项(例如:安全性、角色、版本控制、工作流和其他元数据)一起导出到称作内容迁移数据包 的一个或多个 XML 格式的文件中。在导入到目标网站的过程中,将提取并解释打包的数据。也可以在迁移到其他服务器之前将这些数据包保存到文件服务器。
  使用内容迁移 API 的方法
可以通过以下三种方法调用内容迁移 API。
• Windows PowerShell
利用 Windows PowerShell,可以使用导入和导出操作来迁移数据。但是,只能在网站范围内执行此操作。此外,无法选择保留在某些情况下可能是必需的 GUID。
• SOAP
可以使用在 Sites Web 服务中实现的 ImportWeb(String, String, String, Boolean, Boolean, Boolean, Int32) 和 ImportWeb(String, String, [], String, Boolean) 方法迁移远程服务器上的数据。但是,在使用 Stsadm.exe 时,只能在网站范围内执行操作。此外,无法保留在某些情况下可能是必需的 GUID。
• Content Migration object model
对象模型可控制多数数据迁移方案。通过使用对象模型,可以将网站中的任何内容迁移到列表中的项或库中的单个文档。可以选择是否包含有关适用于要迁移的对象的安全性、版本控制、用户角色和其他元数据的信息。内容迁移对象模型
 在本题的备选项中只有选项C.D使用到了Content Migration API,它们的区别在导入操作上。
由于内容迁移是一个分两步完成的过程。首先,将源中的内容导出到迁移包,然后将迁移包导入目标。表面上,导入内容只是导出的反向操作。但是,在导入操作中会有更复杂的流程和更多的决策点,这种复杂性并不仅仅是像选项C那样设置一个Path那么简单,它涉及到许多属性的设置:当指定导入设置 (SPImportSettings) 时,请确保与相应的导出设置 (SPExportSettings) 相匹配。例如,如果 SPExportSettings 对象上的 FileCompression 属性设置为 true,则 SPImportSettings 对象的相应 FileCompression 属性也必须设置为 true。处理流程会提供一些需进行流程分支的决策点。第一个决策点为是否要保留对象标识。此属性设置确定是通过对象 GUID(如果保留对象标识)还是通过 URL 来定位导入对象。(有关对象标识和其他迁移概念的详细信息,请参阅选择性迁移中的关键概念。)下一个决策点与重新分配父对象有关。如果对象为层次结构中的*对象且您未保留对象标识,则必须重新分配父对象。另一方面,如果对象不是*对象且您未保留对象标识,则无需重新分配父对象。所以在导入过程中需要采用选项D所使用的人为介入的方式。
  Sharepoint内容迁移是一个复杂的过程,不是靠job所能完成的(比如迁移内容来自于外部源时,靠Job显然作用不到外部源),我们应该依赖于Sharepoint所提供的Content Migration API来作这种工作,这也是排除选项A.B的原因。
 
因此本题答案应该选  D

参考 
http://msdn.microsoft.com/zh-cn/library/bb249963(v=office.14).aspx
http://msdn.microsoft.com/zh-cn/library/ms453426(v=office.14).aspx
http://msdn.microsoft.com/zh-cn/library/cc768611(v=office.14).aspx