SharePoint Pages(1)之SharePoint页面体系架构

[开篇]最近一段时间在研究SharePoint技术,在内网建设了一个门户的原型,做一些尝试。由于一些需求要新建一些功能页。开始使用SharePoint制作页面,搞了半天才明白原来内容页不支持内联代码,在Visual Studio里面捣鼓了半夜,也是不得要领,遂决定要翻书学习。《SharePoint 2010 Development for Visual Studio 2010》是一本很不错的书,怎奈我是英文太烂,努力阅读,逐字查看,想想也是累的慌,尤其大概得其意,不如直接转化,以飨网友,同时也是一个交流,如果有什么翻的有歧义的地方,请指正,谢谢。水平有限,自认比翻译软件稍强点儿,各位将就,多多指点。

由于,当前只是关注SharePoint Pages部分,所以只是翻译了这一章,因为开发任务也比较繁多,其他章节以后放出,整个章节原书大概有42页左右,所以会分成几个部分放出,大多是原文逐句翻译,见谅。

SharePoint Pages 简介

SharePoint是在ASP.NET的基础上构建而成的,因此SharePoint用户界面完全就是ASP.NET页面。如果有ASP.NET开发经验的人员可以很方便的定制和开发SharePoint界面,虽然SharePoint也提供了强大的用户界面框架,但是也不会超出ASP.NET的功能规则。例如:假如用户不喜欢默认的导航结构的WebPart页,可以定制不同的模板;或者用户希望将现有的ASP.NET应用集成到SharePoint网站中。这些应用场景都是需要在ASP.NET中进行开发的,本章我们将会讨论关于在ASP.NET中定制和开发SharePoint页面。

SharePoint 架构

    在学习如果和自定义和创建SharePoint页面之前我们先来看看SharePoint体系结构。当目前为止我们已经学会了在SharePoint的Web应用程序中使用网站集功能,但是什么事Web应用程序呢?在SharePoint中每个Web应用程序都有一个自己独立的IIS应用程序池。应用程序池是由IIS启动的工作进程,运行时,返回SharePoint页面,处理收到的IIS请求。

    在安装过程中,SharePoint创建两个IIS Web应用程序。一个是默认网站集,另一个是SharePoint管理中心网站。由于两个Web应用程序不能通过共享同一端口访问,SharePoint管理中心网站通常是通过网站http://yourserverurl:portnumber访问,另一个Web应用程序的默认站点则是通过默认端口访问的,网址为http://yourserverurl。SharePoint
Central Administration的web 站点端口去取决于机器的可用端口,如果想创建其他的网站集,则需要告诉SharePoint宿主Web应用程序,或者你需要创建一个新的Web应用程序来承载新的网站集。

    现在你可能像知道为什么需要创建多个Web应用程序,而不是仅仅在一个Web应用程序中创建所有站点的集合,创建一个新的Web应用程序的关键原因是站点的内容是独立的。每创建一个新的Web应用程序SharePoint就会创建一个新的内容数据库,所有的数据在相关网站与Web应用程序的所有数据都存储在这个内容数据库。如果网站集内容增长过快,或由于内容数据库的存储有限制,管理员可以将网站集存储到另外一个新的内容数据库中,而同时继续使用相同的Web应用程序。这就是所谓的分割内容数据库。

     创建一个新的Web应用程序第二个重要原因就是安全性。所有与Web有关的网站集执行都在应用程序池中发生的,如果你想确保一些代码决不允许从同一进程中的其他网站集上运行,则可以使用不同的Web应用程序创建第二个网站集,这将确保不同的应用程序池执行而两个网站集。

     网站集,顾名思义,是一个SharePoint网站和网页的集合。对于每一个网站集,你可以让不同的人进行管理,权限可以针对单独的用户或组进行设置,让他们单独管理备份网站集,管理工作流程,网站模版,列表模版,内容类型或网站列表。想想一个公司需要在SharePoint上构建一个工程部门网站和营销部门网站,它们不仅每个部门内容有所不同,工程网站的用户和营销网站的用户使用也会有不同。对于这种情况,您将创建一个分别创建一个工程网站和市场营销网站。通过不同的权限设置可以限制或禁止营销人员访问工程部门的工程网站。

    网站集SPSite对象代表服务器端对象模型或在网站的客户端对象模型。就像前面所说一个网站集包含多个网站和网页。

    因此,网站集和网站之间的区别是什么?网站集和网站从最终用户角度来看,似乎是相似的,因为网站集始终有一个关联的默认站点。创建子网站从父网站继承权限和导航结构。有时候,可能不知道什么时候应该创建新的子网站,什么时候创建一个新的网站集。如果您想了解更多这方面的主题,你可以通过以下链接阅读MSDN上的文章:
http://technet.microsoft.com/en-us/library/cc742548.aspx

    SPWeb对象代表一个SharePoint网站在服务器端的对象模型,以及客户端对象模型的Web对象。如果图10-1所示,一个Web应用程序有两个网站集对象的网站架构。这两个网站集都创建了一个默认网站。当然在你创建多个子站点时只有一个默认网站。

                         

 

    SharePoint体系中最后一个对象是网站或网站集的页面。在SharePoint开发环境中有三种页面类型:母版页、网站页面和应用程序页。

    母版页为SharePoint页面提供视觉和感观的定义,例如母版页定义的ribbon工具栏,Ajax脚本对象管理器和站点导航。每页都会使用到的相同的页面布局。 使用母版页的页面就是所谓的内容页。每个内容页的外观都是由母版页提供的。开发人员可以通过扩展母版页的可替换的占位符添加不同的内容。图10-2所示,母版页与内容页之间的关系。在左边的母版页v4.master为Home.aspx和MyWebPartpage.aspx提供了共有的常见功能。

 

                     

 

     SharePoint是构建于ASP.NET之上的,因此母版页也是继承自ASP.NET母版页,SharePoint使用的母版页扩展名也是.master。

     第二种页面类型是网站页。是通过SharePoint的操作界面或设计工具,比如SharePoint Designer定制网页。最重要的,要了解所有的自定义网站页都是存储与SharePoint的内容数据库中的,所有网站页都是由SharePoint Designer创建和定制的。为什么这么重要呢?想想如果一个SharePoint场景中有数千个页面,如果每个页面都经过定制,然后所有网页都从内容数据库中检索并加载到内存中。这会对性能和负载产生一定的影响。尽管如此,网站页定制为用户和管理员提供了极大的帮助,一个很好的例子就是网站的顶级页面home.aspx。

                     

 

    最后,是应用程序页。和网站页一样,你可以在应用程序页上使用SharePoint用户界面和功能以及内容。应用程序页和网站页之间最大的区别在于应用程序页面可以自定义并部署到Web服务器的文件系统(而不是内容数据库)。所有的应用程序页都存储在SharePoint配置存储的位置{SharePoint}\TEMPLATE\LAYOUTS。从网站访问场中任何站点的应用程序页都在其中。如图10-3所示Settings.aspx,这是每个站点授权用户或网站集管理员都可以从SharePoint网站上访问到的修改SharePoint配置的页面。

    有了对这些SharePoint体系架构的了解,在下一节中我们开始创建和定制SharePoint页面。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439291.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

逆序数问题,用归并排序而非树状数组求解

逆序数,结合归并排序。 之前一直用树状数组写的,今天发现归并排序也很好写。 https://www.nowcoder.com/practice/96bd6684e04a44eb80e6a68efc0ec6c5?tabanswerKey class Solution { public:int a[200005] {0}, tmp[200005] {0};int sort(int left…

SharePoint安全 - SharePoint网站常用页面URL索引

一. 主要网站内容 首页 /default.aspx /Pages/default.aspx 网站设置 /_layouts/settings.aspx 所有网站内容 /_layouts/viewlsts.aspx 移动端所有网站内容 /_layouts/mobile/mbllists.aspx 共享文档 /shared documents/forms/allitems.aspx 管理网站内容结构 /_l…

docker安装与学习

安装Docker 系统环境:macOS Catalina 10.15.7 通过brew安装docker brew install --cask --appdir/Applications docker 直接brew install docker装上的好像不是,好像是当成了formula了。如下图 brew cask install docker直接提示命令不对&#xff0c…

集群、分布式、负载均衡区别与联系

1、Linux集群主要分成三大类( 高可用集群, 负载均衡集群,科学计算集群) 集群是一个统称,他分为好几种,如:高性能科学群集、负载均衡群集、高可用性群集等。 科学群集 、高性能集群(High performance clus…

Mac下使用brew的常用步骤

以docker为例: 第一步: 先 brew search 软件名 然后发现在Formulae和Casks中都有docker包。 第二步: 分别查看info brew info dockerbrew info homebrew/cask/docker 从详情中可以看出,cask下的才是Docker Desktop for Mac&a…

End User 访问SharePoint URL获取数据流程

当一个User用一个独立的URL请求一个Page页的时候,Client端要创建一个Http请求数据包。然后,Client通过解析DNS去获取HostName来确定IP地址:比如Intranet.contoso.com 客户端在数据包的HostHeader Field添加HostName —>客户端然后通过默…

【MOSS】快速调试Sharepoint站点

1、打开网站根目录下的web.config 1.将<SafeMode ... CallStack"false" ...... AllowPageLevelTrace"false">中的CallStack和AllowPageLevelTrace的属性设置为“true”。 2、 将<customErrors mode"On" />的mode改为"Off&quo…

【机器学习】 - keras中的模型可视化plot_model模块(含依赖包pydot和graphviz的详细安装过程与注意事项)

运行环境&#xff1a; win10 anaconda3-spyder python3.7.4 tensorflow2.0.0 首先需要安装两个包pydot和graphviz&#xff0c;不然会报错&#xff1a; Failed to import pydot. You must install pydot and graphviz for pydotprint to work. 然后去anaconda prompt 里去…

Sharepoint域账户,运行Power Shell报错

以其他域账户登陆Sharepoint 2013 服务器&#xff0c;并以管理员权限运行SharePoint 2013 Management Shell时&#xff0c;出现如下错误&#xff1a; The local farm is not accessible. Cmdlets with FeatureDependencyId are not registered. 同时&#xff0c;所有SharePoin…

【Linux学习】常用指令-sortunique

假设当前文件叫file.txt sort将文件的每一行作为一个单位&#xff0c;相互比较&#xff0c;比较原则是从首字符向后&#xff0c;依次按ASCII码值进行比较&#xff0c;最后将他们按升序输出。 sort的-u选项 它的作用很简单&#xff0c;就是在输出行中去除重复行。 sort的-r选项…

【Linux学习】强大的文本分析工具AWK

之所以叫 AWK 是因为其取了三位创始人 Alfred Aho&#xff0c;Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。 调用AWK&#xff1a; 1.命令行方式&#xff08;常用&#xff09; awk [-F field-separator] commands input-file(s) 其中&#xff0c;comman…

【Knockout】二、监控属性Observables

MVVM和viewModel Knockout是建立在以下三大核心功能之上的&#xff1a; 监控属性和依赖跟踪&#xff08;Observables and dependency tracking&#xff09;声明式绑定&#xff08;Declarative bindings&#xff09;模板&#xff08;Templating&#xff09; 首先让我们先来了解…

【C++学习】对私有构造析构函数的思考:new一个类对象vs直接创建类对象

前置知识&#xff1a; new的类对象需要手动delete。且使用堆空间。且只能用指针接收。 直接创建的类对象创建在栈中&#xff08;或说堆栈&#xff09;。不需要手动delete&#xff0c;随着生存周期的结束&#xff08;如所在的函数return了&#xff09;而释放&#xff0c;和堆栈…

applyBinding Observables

一般的数据绑定有三种:One-Time&#xff0c;One-Way&#xff0c;Two-way。 One-Time绑定模式的意思即为从viewModel绑定至UI这一层只进行一次绑定&#xff0c;程序不会继续追踪数据的在两者中任何一方的变化&#xff0c;这种绑定方式很使用于报表数据&#xff0c;数据仅仅会加…

【git学习】统计git项目某user的代码量

查看自己的代码量&#xff1a;&#xff08;直接awk编程&#xff09; git log --author"username" --prettytformat: --numstat | awk { add $1; subs $2; loc $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, …

一步步编写操作系统 79 在c代码中内联汇编

基本内联汇编是最简单的内联形式&#xff0c;其格式为&#xff1a; asm [volatile] (“assembly code”) 各关键字之间可以用空格或制表符分隔也可以紧凑挨在一起不分隔&#xff0c;各部分意义如下&#xff1a; 关键字asm用于声明内联汇编表达式&#xff0c;这是内联汇编固定…

LeetCode 237. 删除链表中的节点(思维)

请编写一个函数&#xff0c;用于 删除单链表中某个特定节点 。在设计函数时需要注意&#xff0c;你无法访问链表的头节点 head &#xff0c;只能直接访问 要被删除的节点 。 题目数据保证需要删除的节点 不是末尾节点 。 https://leetcode-cn.com/problems/delete-node-in-a-…

一步步编写操作系统80 扩展内联汇编1

由于基本内联汇编功能太薄弱了&#xff0c;所以才对它进行了扩展以使其功能强大。不过&#xff0c;易用性往往与功能强弱是成正比的&#xff0c;如您所料&#xff0c;扩展内联汇编确实有点难&#xff0c;但在求知欲的驱使下&#xff0c;就让咱们痛并快乐着吧。 gcc本身是个c编…

LeetCode 397. 整数替换

题目大意&#xff1a; 给定一个正整数 n &#xff0c;你可以做如下操作&#xff1a; 如果 n 是偶数&#xff0c;则用 n / 2替换 n 。 如果 n 是奇数&#xff0c;则可以用 n 1或n - 1替换 n 。 n 变为 1 所需的最小替换次数是多少&#xff1f; 链接&#xff1a;https://leet…

一步步编写操作系统81 att内嵌汇编语法

内联汇编的格式也变得让人生畏了&#xff0c;感觉既不像C语言&#xff0c;也不像汇编语言&#xff0c;似乎是一种中间产物&#xff0c;不信您看&#xff1a; asm [volatile] (“assembly code” : output : input : clobber/modify) 和前面的基本内联汇编相比&#xff0c;扩展…