博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于SharePoint 2010体系架构的几个话题
阅读量:5172 次
发布时间:2019-06-13

本文共 3073 字,大约阅读时间需要 10 分钟。

转:

最近给一个客户讲解SharePoint体系架构、管理维护这方面的内容。有几个主要问题整理出来给大家参考参考。陆续会有几篇文章

 

1.SharePoint到底是怎么工作的?

这个问题要从“SharePoint是什么”说起。SharePoint其实说到底是一个基于ASP.NET的应用平台。它的主体部分是通过一个用户所熟知的网站提供服务的,此为其一。

接下来,我们就要问了,作为一个网站而言,SharePoint的网站与一般的网站是否有什么不一样呢?答案是,有。SharePoint的网站虽然在IIS里面看起来与一般的网站并不什么两样(如下图),但是其实内部有很大的区别。

SharePoint的网站,注册了一些特殊的HttpModule和HttpHandler,熟悉ASP.NET开发的朋友们都知道,这是ASP.NET中高级定制的两个重要手段。简单来说,SharePoint通过这些自定义的Module(模块)接管了用户的请求,从根本上实现了动态网页处理的功能。(下一个话题还会介绍一下动态网页的概念)

这些Module或者Handler的定义,默认如下(你可以在网站的web.config)找到它们

需要注意的是,SharePoint 2010是基于IIS 7的,默认情况下,它采用的管道模型是“集成(integratedMode)”,所以这些Module和Handler是注册在system.webServer下面的。

关于IIS 7的管道模型,如果你有兴趣,可以参考

 

2. SharePoint的网页在磁盘上有没有?

接下来一个话题就是,SharePoint的网页到底在哪里?是在磁盘中,还是在数据库中?

这个问题的答案是:有的是在磁盘上,有的是在数据库里面。有时候在磁盘上,有时候在数据库里面。

听起来有点玄,对吧,其实也不难理解的,且听我解释

首先讲,有的是在磁盘上,有的是在数据库里面。

我想大部分人开始了解SharePoint的时候,都知道它是一个网站,我们一般会通过如下的地址去访问它,假设当前这个webapplication就是在我的本地服务器,而且是在80端口的

在sharepoint 2010中,默认情况下,这个地址会被重定向到

这是自动的行为,我们先来看一下它到底是怎么样的

这是我们熟悉的一个页面。很多朋友就好奇了,那么这个Home.aspx是在哪里的呢?这个页面(本质上是一个wiki页面),是在数据库里面的。为什么呢?它其实是定义在一个文档库中的

这个页面是由当前这个Site Template自动提供的,SharePoint 2010 默认情况下会使用wiki页面作为首页。wiki页面的好处编辑很方便。这是我们都是知道的。

如果我们需要添加其他页面,你有两种选择:wiki页面和web part页面(之前的SharePoint 2007的默认页面结构)。需要注意的是,这两个页面都是放在数据库里面的。

同时,SharePoint允许我们将其中任何一个页面设置为主页

所以,总结一下,这一类页面,属于是用户定制出来的,自然是要放在数据库里面的。

那么,那些页面是不放在数据库里面的呢?

下面这个页面,default.aspx,默认就不放在数据库里面,而是会读取到本地磁盘上,网站模板中的文件

这个文件,默认是由网站模板提供的,如下图

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\SiteTemplates\sts

同时,默认情况下,所有列表的新建,编辑,显示页面,都是读取本地磁盘的文件,而不读取数据库。

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\SiteTemplates\SPSSITES\LISTS\SITESLST

这是第二大类页面,他们属于网站默认就应该有的,默认情况下,这些文件无需读取数据库,直接使用本地模板就可以了。【请注意,我说的是默认情况下,不需要读取数据库】

 

还有第三类页面,例如网站配置页面

这种页面永远读取本地文件,而且这种页面,我们有个专业术语,叫做Application Page。

这个页面对应的文件位置在

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS

有时候,我们也会为SharePoint定制一些解决方案,也许也会用到一些页面,那么这些页面其实也是要部署到这个目录里面来。也就是说,Application Page永远都是使用本地文件的。

所以,总结起来,SharePoint中有三种页面,他们分别对应的位置如下

 

页面类型 位置
wiki页面,和webpart页面(有时候称为内容页) 数据库
default.aspx或者列表所用的页面 默认在磁盘,可能在数据库(下面会解释这个问题)
应用程序页面 磁盘

 

 

那么,为什么说default.aspx或者列表所用的页面有时候在磁盘上,有时候在数据库里面呢?

这些页面,默认读取磁盘的用意很明显,就是说尽量减少对数据库的读写。大家可以试想一下,假设你有100个网站,里面有N个列表,如果为每个列表都产生上面所提到的11个页面,放在数据库里面,那将是多少页面。如果列表页面不需要特别定制,为什么不可以使用一个页面,而且就使用本地这个文件呢?

所以,如果说这些页面,不需要经过定制的话,读取磁盘上的文件是最佳的做法。

但是,如果这些页面,需要经过定制,形成当前网站的独特设计,再读取磁盘上的文件就不合适了,此时该文件就会被复制一份,放在该网站所对应的内容数据库里面去。而SharePoint的引擎,要处理某个页面请求的时候,会先检查数据库中是否有该页面,如果没有,则尝试读取本地磁盘。

有意思的是,为了以示区分,经过定制的页面,在SharePoint Designer中看到的效果有点特殊。页面前面会有一个图标

在微软官方文档中,这些没有定制过的页面,有一个叫法为“ghosting page”,而经过定制的页面,叫为“unghosted page”

 

这一篇先谈这两个话题吧,希望大家可以对sharepoint的体系结构有更加深入的理解

 

转载于:https://www.cnblogs.com/jackljf/p/4768662.html

你可能感兴趣的文章
原型设计工具
查看>>
windows下的C++ socket服务器(4)
查看>>
css3 2d转换3d转换以及动画的知识点汇总
查看>>
计算机改名导致数据库链接的诡异问题
查看>>
Java8内存模型—永久代(PermGen)和元空间(Metaspace)(转)
查看>>
centos 引导盘
查看>>
Notes of Daily Scrum Meeting(12.8)
查看>>
Apriori算法
查看>>
onlevelwasloaded的调用时机
查看>>
lr_start_transaction/lr_end_transaction事物组合
查看>>
CodeIgniter学习笔记(四)——CI超级对象中的load装载器
查看>>
.NET CLR基本术语
查看>>
ubuntu的home目录下,Desktop等目录消失不见
查看>>
建立,查询二叉树 hdu 5444
查看>>
[Spring框架]Spring 事务管理基础入门总结.
查看>>
2017.3.24上午
查看>>
Python-常用模块及简单的案列
查看>>
LeetCode 159. Longest Substring with At Most Two Distinct Characters
查看>>
基本算法概论
查看>>
jquery动态移除/增加onclick属性详解
查看>>