SharePoint Site Pages & Application Pages
转:http://www.wcode.net/plus/view.php?aid=1582071
|
SharePoint一个很重要的概念就是Site Pages和Application Pages。接触SharePoint是在SharePoint 2007,当时就有这个概念。如有误解之处,请大家多多指教。 Site Pages是可以通过SharePoint Designer来编辑的页面,它的增加、删除、修改并不能在物理文件系统中跟踪到,而是在Content DB中。 Site Pages 两个重要的概念:
Note: WFE is short for Web Front End 即 WEB 前端 Application Pages 是存储在WFE文件系统特殊位置的文件。
Figure: Layouts 目录在WEB前端。 说到Site Pages和Application Pages,Virtual File System in site不得不了解 Virtual File System in SharePoint Site. 虚拟文件系统。
Figure: 页面被定制了从数据库中取回,页面没定制从WFE文件系统中返回页面。
Figure: ASP.NET 运行时,得到Virtual Provider提供的信息。 NOTE: Virtual Path Provider 的概念是从.NET 2.0开始有的,SharePoint 开发团队实现了自己的 SPVirtualPathProvider。(具体参见http://bit.ly/cetGHN 搜索SPVirtualPathProvider 关键字) 简单的讲就是 File System 和 Content DB 之间进行了映射关系,这种关系由Virtual Path Provider来维护。 如果页面进行定制,这个时候整个页面会存储到数据库当中,当你再次访问这个被定制的页面的时候就会额外增加一个页面的实例,这也是Unghosted Page不足之处,影响性能。 如果页面没有进行定制,所有对该页面的请求,实际上是有存储在WFE文件系统的模板来进行处理。 例如:用BLANK TEMPLATE 来创建SITE的时候,在这个SITE中很容易发现一个DEFAULT.ASPX页面,这个页面实际上是站点模板在创建的过程中来通过WFE的物理文件系统的模板来创建。 所以看到所有的DEFAULT.ASPX内容都相同。但是同样可以对其进行编辑,定制。默认的DEFAULT.ASPX实际上就是Ghosted Page, 而被定制的被称为UnGhosted Page。一旦被定制内容将存储在数据库当中。 项目情景: 当部署站点的时候很多时候有些PageLayout怎么也不部署不上,更新不了,多次检查发现WSP中的PAGELAYOUT确实已经是最新的版本,原来在部署新的文件之前原有的文件都被定制了, 当你访问此页面的时候ASP.NET RUNTIME 得当Virtual Path Provider 的信息来源还是指向数据库并非文件系统。 这个时候通常是在部署新的SOLUTION之后把原有的PAGE LAYOUT 通过SharePoint Designer 给Reset to Site Definition. 或者写一个小工具来对页面Re-Ghost,这个操作是让Virtual Path Provider 知道现在指向的页面信息是从WFE物理文件系统中页面模板取得。 Tip: SPFile 类中有一个CustomizedPageStatus属性,这个属性是基于 SPCustomizedPageStatus, 其中有Uncustomized, Customized 和 None,这三个值。Sitepage 在ghosted的状态就是UnCustomized, 当sitepage 被定制后变成 customized。 注意的是NONE值, 这表示如果页面是动态不依赖页面模板创建的时候,这个时候页面的状态就是NONE了。如用代码,或者SPD创建的页面。 潜在问题:另外有一个很值得关注的问题就是 SitePages 中能够加入C# Code 吗? 答案是否定的, 为了安全SitePages是不能够加入代码, 假设能够加入代码来操作数据库,这样对整个FARM,不仅仅是当前的应用程序产生影响。 因此SitePages 是跑在Safe Mode下的, 所以页面引用的控件必须在WEB.CONFIG中注册为SafeControl. 这样职能能也进一步分离,网站集的管理员是可以更改SITEPAGES,但是要在站点中部署一个控件的时候就不得不让FARM 管理员知道要部署这样一个Control 到WEB.CONFIG中。还是FARM管理员权利大 而 SiteCollection Admin 却不能做部署。 转折点: SharePoint 2010 推荐使用SANDBOXED Solution http://bit.ly/a0Qxzi, 这个时候SiteCollection Admin 就可以部署Sandboxed solution. 另外就是Sandboxed Visual Web Part的到来http://bit.ly/azq882 。 这方面有待后面章节进一步分析SP2010 OOTB Project。 以上是SitePage 的说明, 对于Application Page.
当然Application Page 只能够通过Farm Solution 部署。 最佳实践: 部署产品环境的时候,多用Ghosted Site Page, 少用 Application Page, 避免在PROD 环境用SPD 定制。 |
SharePoint Site Pages & Application Pages的更多相关文章
- SharePoint2007 开发部署Application Pages
介绍:SharePoint应用程序页,也就是_layouts路径下的aspx页面,服务器C:\Program Files\Common Files\Microsoft Shared\web serve ...
- 在SharePoint2010中用out-of-box的方式自定制Application Pages(AccessDenied,Confirmation,Error,Login,RequestAccess,Signout,WebDeleted)
在实际项目中需要对SharePoint2010中的AccessDenied页面进行自定制,于是乎上网搜索相关内容,经实际操作此方法可行,便以此文记录. 在SharePoint2010中,由于secur ...
- SharePoint自动化系列——通过PowerShell创建SharePoint Site Collection
通过PowerShell创建SharePoint Site Collection,代码如下: Add-PSSnapin microsoft.sharepoint.powershell function ...
- Q: Why can't I access the Site Settings of my SharePoint site? 'File Not Found'
Q: I am trying to access the Site Settings of my SharePoint site, but I get a File Not Found error, ...
- SharePoint创建web application出现“The password supplied with the username was not correct”错误的解决方法
平台环境 Windows Server 2012 R2 Standard, SharePoint Server 2010, Microsoft SQL Server 2012 (SP1) 问题描述 在 ...
- SharePoint JavaScript API in application pages
前言 最近,在SharePoint 应用程序页中写JavaScript API,进行一些数据交互.其实,很简单的事情却遇到了问题,记录一下,希望能对遇到类似问题的人以帮助. 引用JavaScript ...
- SharePoint Site "Regional Settings"功能与CSOM的对应
博客地址:http://blog.csdn.net/FoxDave SharePoint网站中的区域设置:"Regional Settings",可以用CSOM通过Site的一些 ...
- SharePoint Site "Language Settings"功能与CSOM的对应
博客地址:http://blog.csdn.net/FoxDave SharePoint网站中的语言设置:"Language Settings",可以用CSOM通过Site的一些 ...
- SharePoint API测试系列——Manage SharePoint Site Policy & Expiration Email with CSOM API
转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 对CSOM(Not SSOM) Site Policy & Expiration Emai ...
随机推荐
- Eclipse配置CAS client
1.新建一个Maven项目 2.Next,选择 3.输入group id 和 artifact id --> Finish 4.项目创建完成的目录结构 编辑pom.xml文件,写上依赖 注意把 ...
- Mysql多实例 安装以及配置
MySQL多实例 1.什么是MySQL多实例 简单地说,Mysql多实例就是在一台服务器上同时开启多个不同的服务端口(3306.3307),同时运行多个Mysql服务进程,这些服务进程通过不同的soc ...
- 排序算法FIVE:插入排序InsertSort
/** *插入排序思路:O(n^2) * 最外层一个循环,从第二个数到最后一个,变量为i * 每个数存储在key变量中 * 变量j,是左边已经排好序的数组的上限 * 判断key与前面每一个数比较 1, ...
- xps文档打印后winform界面文字丢失
最近做的xps文档打印功能,绝对的一波三折,一开始开发的时候,始终用的是xps writer 虚拟打印机,测试的时候也是,一直没有发现问题,但是真正到用户使用的时候,接上正式打印机,打印时候没有问题, ...
- Cassandra1.2文档学习(10)—— 插入和更新数据
参考数据:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_about_ ...
- mysql更改默认存储引擎
在mysql的官网上看到在mysql5.5以上的版本中已经更改了默认的存储引擎,在5.5版本以前是Myisam以后是Innodb. InnoDB as the Default MySQL Storag ...
- How to open .ccproj in VS2010?
Q: How to open .ccproj projects types in VS2010, ccproj file type is a Cloud project i suppose. Plea ...
- MVC+EF 随笔小计————Html Helpers
理论基础 -- Html Helpers 主要分成输入类和显示类. 输入类: TextArea, TextBox Password Hidden DropDownList ListBox (与Drop ...
- Python学习_Python 3.X版本导入httplib模块报ImportError解决方案
之前用Python 2.7版本的httplib做接口测试时,运行代码都是正常的, 最近开始用Python 3.3之后,再去看以前的代码,发现import httplib出现错误:Unresolved ...
- ssh中使用set的地方及ref
22:30 2014/5/2 1.层与层间的set: xml方式:在action中曾有service的set方法,service层要有dao的service的set方法,dao曾要有hibernat ...


