Sharepoint学习笔记—习题系列--70-576习题解析 -(Q81-Q83)
Question 81
You are designing a custom administrative timer job for a SharePoint 2010 farm. You need to design a storage plan for the program configuration data that meets the following requirements:
.The configuration data in the storage location must control the program logic for the timer job.
.The storage location must allow the configuration information to be saved and modified as the timer job parameters change.
.The storage location must require administrative access to modify the program logic.
.The storage method must support farm-scoped timer jobs.
Which object class should you use to create the storage location?
A. The Configuration Section class in the web.config file
B. The SPWebConfigModification class in in the web.config file
C. The SPPersistedObject class in the hierarchical object store
D. The SPWeb class in the site collection property bag
解析:
你为Sharepoint2010场设计了一个用户定义的用于实现管理的Timer Job,你需要为此Timer Job考虑如何存取配置信息,要求如下:
要求1. 保存在存储位置的配置信息可被用来影响Timer Job的程序执行逻辑
要求2. 配置信息可以随着Timer Job参数的改变而被保存或修改
要求3. 支持在管理层面上存取配置信息并影响程序执行逻辑
要求4. 必须支持场范围的Timer Jobs
你需要使用哪种对象来创建你的存储位置?
首先,本题的配置信息影响的层次是Sharepoint场,所以可以排除Web.config相关选项,即选项A.B,因为Web.config主要用于处理Web Application级别的配置信息。至于选项D,使用SPWeb类的属性包,这个我们在前面已经多次提到过Sharepoint对SPFarm,SPWebApplication,SPSite,SPWeb和SPList这几个层次的对象均提供了属性包,这里使用的SPWeb即针对网站的类对象属性包,作用不到场级别,所以也被排除。
再来看选项D, 使用SPPersistedObject,前面我们也提到过,实例化 SPPersistedObject 的对象保留在 SharePoint 2010 配置数据库中。而我们知道Sharepoint使用配置数据库来存储服务器场中服务器的配置和网站映射信息。每个服务器场只能有一个配置数据库。很显然,它是服务器场级别用来保存配置信息的选项。
因此本题答案应该选 C
参考
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebconfigmodification.aspx
http://msdn.microsoft.com/zh-cn/library/bb861909(v=office.14).aspx
http://msdn.microsoft.com/zh-cn/library/microsoft.web.management.server.propertybag(v=vs.90).aspx
Question 82
You are planning to store some custom configuration settings in a SharePoint 2010 farm. A set of key-value pairs must be saved and retrieved for several sub sites within a web application. You need to ensure that the key-value settings are stored for each sub site. Which approach should you recommend?
A. Declaratively store the values in the web.config file for the web application.
B. Declaratively store the values in a custom list in the site collection that contains the sub sites.
C. Programmatically store the values in the property bag of the SPFile object.
D. Programmatically store the values in the property bag of the SPWeb object.
解析:
你计划保存Sharepoint场的用户配置信息, 涉及到Web Application下的子网站的键值对数据组的存取。你需要保证这些键值对数据必须根据不同的子网站进行保存,你应该采用哪种方式实现呢?
首先,提到配置信息的保存形式是键-值对,所以可以直接排除选项A.B,因为选项A使用Web.config,选项B使用用户列表,这两种方式保存配置信息的形式均不是键-值对方式。
其次,提到键-值对方式的配置信息,我们通常应该想到属性包,在备选项中只有选项C.D提到了属性包,而选项C是SPFile对象的属性包,选项D是SPWeb对象的属性包,根据题干要求:你需要保证这些键值对数据必须根据不同的子网站进行保存,很明显是针对SPWeb层次的操作。
因此本题答案应该选 D
参考
http://msdn.microsoft.com/zh-cn/library/gg491706(v=office.14).aspx
http://msdn.microsoft.com/zh-cn/library/ms460914(v=office.14).aspx
Question 83
You are designing a SharePoint 2010 Internet site for e-commerce. The site shows pricing information retrieved from a Microsoft SQL Server database for the deals featured each day on the home page. You need to cache the pricing data for each featured deal on the server and refresh the data with a minimum amount of network traffic.
Which approach should you recommend?
A. Use LINQ to SharePoint from a query of the database server for the pricing data.
B. Use AJAX code on the client from the database server.
C. Use the server session state to cache the data.
D. Cache the data and use a lock to control the refresh of the cache data.
解析:
你负责基于Sharepoint2010设计一个电子商务内部网站, 此网站的主页上显示了每天的交易价格,这些数据是保存在SQL数据库中的,你需要在服务器上为各个功能缓存交易价格信息并且占用尽可能少的网络流量来刷新这些数据。你应该采用哪种方式来实现呢?
很明显,这是一道关于Sharepiont缓存技术的题,先让我们来大致了解一下Sharepoint的缓存相关知识点。
可使用 Microsoft SharePoint Server 2010 缓存选项来优化网站性能。SharePoint Server 2010 使用 ASP.NET 缓存选项和 Office 团队专为 SharePoint Server 2010 设计的缓存功能。下面就是它可用的缓存类型及实施每类缓存的位置。
1.输出缓存和缓存配置文件,实施位置是:单页级别,它适用于无需频繁显示新内容的访问量大的网站。
2.对象缓存,实施位置是:单个 Web 部件控件、字段控件和内容级别,包括跨列表查询缓存和导航缓存
3.二进制大型对象 (BLOB) 的基于磁盘的缓存,实施位置是:单个 BLOB 级别, 此类缓存可控制对二进制大型对象 (BLOB)(如图像、声音、视频文件和代码片段)的缓存。使用基于磁盘的缓存可减少访问 BLOB 时所需的数据库往返行程次数。从数据库检索 BLOB 之后,BLOB 将会存储在 Web 服务器上。后续的请求都从基于磁盘的缓存提供,并根据安全性对这些请求进行修整。
我们可通过以下方式大大提高 SharePoint Server 2010 部署的性能:
构建缓存感知控件。
按照适合您的网站部署的方式扩展缓存。
构建始终使用对象缓存的导航提供程序。
创建使用内容查询缓存的内容查询。
为母版页和页面布局创建用于最大程度减少数据库往返的服务器控件。
下面我们来分析各选项:
选项A.使用LINQ to Sharepoint技术来查询数据,我们知道LINQ to SharePoint 提供程序是在 Microsoft.SharePoint.Linq 命名空间中定义的。它将 LINQ 查询转换为协作应用程序标记语言 (CAML) 查询。开发人员无需再了解如何编写 CAML 查询。它为程序开发人员提供了更人性化的开发表达方式,但它不是用来解决查询数据的缓存问题的。所以排除。
选项B.采用AJAX技术,这个技术是用来完成页面的局部刷新的,通过局部刷新来增强网站用户的使用体验,它也不是用来解决查询数据的缓存问题的。所以排除。
选项C.采用服务器会话状态来缓存数据。要在一个SharePoint 2010程序中使用Session,开发人员会面临一些潜在的问题。SharePoint 2010系统很可能被部署为一个服务器场的模式,它可能包含有多台Web前端服务器,用户的Http请求会被NLB机制分发到多台Web前端服务器的任意一台上。这就要求开发人员应该尽可能的编写出“无状态”的代码,也就是说,代码不能依赖于某一台具体的服务器,因为开发人员没有办法确定自己的代码会始终运行在一个服务器上。有可能一个用户浏览一个页面时,它的请求被分配到Web服务器A,然后当用户刷新一下页面,这次请求则被分配到了Web服务器B。
即便如此,Sharepoint2010还是提供了对Session的支持,SharePoint 2010 提供了两种与Session State相关的服务。
1.ASP.NET session state用于SharePoint 2010页面.此服务默认是禁止的,一旦开启,你就可以在服务程序管理页面找到 “SharePoint Server ASP.NET Session State Service.”条目。
2. State Service service application则仅针对InfoPath Forms Services and Visio Services.等Office应用程序。它与ASP.NET session state无关。你可以在服务程序管理页面找到 “State Service.”条目。
选项C应该指的是第1种Session服务,此类Session都是保存在服务器场的配置数据库中,并且对整个服务器场都有效,由于本题是一个e-commerce网站,对数据安全必须存在一定的安全性要求,所以,这种对整服务器场开放的方式就显得不太安全了。再者,由于缓存数据是保存在配置数据库中的,它并不存在于你的WFE服务器上,所以相关数据的获取与交互还是要通过NetWork来进行,这样就起不到题目要求的占用尽可能少的网络流量来刷新这些数据的要求。再进一步,对此类Session的有效期控制也比较生硬,你只能在web application的web.config中配置TimeOut时间,一旦设置就很难再修改,且影响范围内是此Web Application中的所有Web Site Collections,而不仅仅这个Web Site。所以,选项C的通过Session的方式不太适合本题要求。
选项D,通过Microsoft SharePoint Server 2010 缓存技术来实现,根据前面的描述,我们知道这是本题的正解。
因此本题答案应该选 D
参考
http://msdn.microsoft.com/en-us/library/ff647588.aspx
http://msdn.microsoft.com/zh-cn/library/aa589700(v=office.14).aspx
http://msdn.microsoft.com/zh-cn/library/ee535491(v=office.14).aspx