WSS3SDK之:服务器和站点架构:对象模型概览
源出处:http://www.cnblogs.com/Sunmoonfire/archive/2011/01/18/1937884.html
Windows SharePoint Services提供了一整套高度结构化的服务器端对象模型,使得我们可以方便的访问SharePoint站点中的各种对象。在您的代码中,通过一层层的对象结构可以从上向下获取,直到找到您需要的对象和成员。
何处入手
这依赖于您创建的自定义应用程序或解决方案的类型,您可能会通过不同的入口来获取合适的对象。比如,如果您正在开发一个自定义管理和配置工具,那么您可以使用静态属性ContentService来返回当前的Web服务对象和Web应用程序的集合。如果要在管理Web应用程序中修改设置,那么你要用AdministrationService属性。该集合的类继承自Microsoft.SharePoint.Administration.SPPeristedObjectCollection类,该类包含一个GetValue方法用于从集合中返回一个特定的对象。
注意:如果您创建一个Web部件,或自定义Web服务,或Web应用程序用于网站集,特定站点或列表,您可以使用Microsoft.SharePoint.SPContext类中的方法来获取当前网站集,站点或列表。当我们在/_layouts虚拟目录中创建了一个Web应用程序时,其功能将在Web服务器的所有站点中可用。在HTTP上下文环境以外,需要使用SPSite类的构造器来获取一个特定的网站集,进而访问集合中的各种对象。
服务器端架构
下图展示了Windows SharePoint Services服务器端架构中集合间的关系以及Microsoft.SharePoint.Administration命名空间中的一些对象。
SPFarm对象位于WSS对象模型层次的最高层。其Servers属性可以获取一个SharePoint部署中所有服务器的集合;其Services属性可以获取所有的服务的集合。
每个SPServer对象代表一个物理上的服务器计算机。其ServiceInstances属性提供了对运行于特定服务器上的特定的服务实例的集合的访问。
每个SPService对象代表了一个装在服务器场中的逻辑上的服务或应用程序。服务对象提供对服务器场范围负载均衡服务设置的访问,在这里只表现为一个现有的服务实例。继承自SPService类所包含的类型,比如,Windows services的对象,如计时器服务(timer service),搜索,Microsoft SQL Server,数据库服务等等。还有就是Web服务对象,如Windows SharePoint Services或Microsoft Office system中的一些服务。
一个SPWebService对象提供了对某个特定的逻辑服务或应用程序配置信息的访问。其WebApplications属性可以返回一个运行某服务的应用程序的集合。
一个SPDatabaseServiceInstance对象代表一个运行与服务器机器上的数据库服务的一个单独的实例。SPDatabaseServiceInstance类继承自SPServiceInstance类,因此继承了Service属性。该属性提供了对服务或应用程序实例的访问。Databases属性可以获取一个服务所使用的内容数据库的集合。
每个SPWebApplication对象代表一个基于Internet Information Services (IIS)的负载均衡的Web应用程序。SPWebApplication对象提供对凭据和其他服务器场级应用程序设置的访问。Sites属性可以获取在Web应用程序中所有的网站集的集合;ContentDatabases属性返回Web应用程序中内容数据库的集合。SPWebApplication类替代了已废弃的SPVirtualServer类;但是我们还是可以把SPWebApplication对象想象成一个虚拟服务器,两者等效;也就是说,一系列的一台或多台物理上的服务器在这里作为一个单独的服务器展现个用户。
SPContentDatabase对象继承自SPDatabase类。代表一个包含用户数据的SharePoint Web应用程序的数据库。Sites属性可以获取一个该内容数据库存储数据的网站集的集合;WebApplication属性可以获取父级Web应用程序。
SPSiteCollection对象代表Web应用程序中网站集的集合。Item属性或索引器可以获取集合中一个特定的站点集,使用Add方法可以在集合中创建一个网站集。
站点架构
下图展示了Windows SharePoint Services站点的架构以及N.Microsoft.SharePoint命名空间中对象和集合间的关系。
每个SPSite对象,不仅是一个标志性名称,还代表了一系列逻辑上相关的SPWeb对象。这一整个系列通常被称为“网站集”,但是SPSite 并不是一个标准的Microsoft .NET集合类,这一点与SPWebCollection对象不同。然而,它具有成员可以用于管理网站集。AllWebs属性提供对SPWebCollection对象的访问,其代表了网站集内所有网站的集合,包括顶级站点。SPSite类的Microsoft.SharePoint.SPSite.OpenWeb方法可以返回一个特定的网站。
每个网站集包括若干个SPWeb对象,每个对象都具有很多用于管理该站点成员,包括该站点的模板和主题,以及站点中的文件和文件夹等等。Webs属性会返回一个SPWebCollection对象,用于代表该站点下所有的子站点;Lists属性返回一个SPListCollecion对象,用于代表该站点中所有的列表。
每个SPList对象具有许多成员,用于管理列表和访问其中的列表项。GetItems方法可用于执行一个特定的查询,并返回某些特定的列表项。Fields属性返回一个SPFieldCollection对象,用于代表列表中所有的字段,或者叫栏;Items属性返回一个SPListItemCollection对象,代表了列表中所有的列表项,或者叫做行。
每个SPField对象包含的成员用于操作字段相关的设置。
每个SPListItem对象代表了列表中的一行。
WSS3SDK之:服务器和站点架构:对象模型概览的更多相关文章
- 5、web站点架构模式简介及Nginx
LB Cluster: 提升系统容量的方式: scale up:向上扩展 scale out:向外扩展 LVS工作在内核中,本身的数量不受套接字数量限制,利用LVS做调度器,优化得当的话,并发数量可以 ...
- 从腾讯QQgame高性能服务器集群架构看“分而治之”与“自治”等分布式架构设计原则
转载:http://space.itpub.net/17007506/viewspace-616852 腾讯QQGame游戏同时在线的玩家数量极其庞大,为了方便组织玩家组队游戏,腾讯设置了大量游戏室( ...
- 千万PV级别WEB站点架构设计
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog.51cto.com/353572/1369762 高性能与多 ...
- .Net站点架构设计(八)測试
.Net站点架构时间(八)測试 一般而言.总体測试策略是:先针对部分系统进行性能及压力測试,得到各部分的峰值处理性能:再模拟总体流程測试,此时倒不用依照峰值跑,重点測试总体业务流程及业务预期负荷. 在 ...
- 初探Nginx服务器的整体架构
高度模块化的设计是 Nginx 的架构基础.Nginx 服务器被分解为多个模块,每个模块就是一个功能模块,只负责自身的功能,模块之间严格遵循“高内聚,低耦合”的原则. 核心模块 核心模块是 Nginx ...
- 大并发server架构 && 大型站点架构演变
server的三条要求: 高性能:对于大量请求,及时高速的响应 高可用:7*24 不间断,出现问题自己主动转移.这叫fail over(故障转移) 伸缩性:使用跨机器的通信(TCP) 另外不论什么网络 ...
- 从100PV到1亿级PV站点架构演变
假设你对项目管理.系统架构有兴趣,请加微信订阅号"softjg".增加这个PM.架构师的大家庭 一个站点就像一个人,存在一个从小到大的过程. 养一个站点和养一个人一样.不同一时候期 ...
- window服务器开站点(不通用)
此文章为记录自己的配置流程,其他人不通用 网站服务器:Windows server 2008 R2 (IIS6.1) + Asp.net 数据库服务器:Windows server 2008 R2 + ...
- Apache web服务器(LAMP架构)
1.apache介绍 1).世界上使用率最高的网站服务器,最高时可达70%:官方网站:apache.org 2).http 超文本协议 HTML 超文本标记语言 3).URL 统一资源定位符 http ...
随机推荐
- MySQL隐式转换测试
Preface There're various data type in MySQL such as number,string,date,time,lob,etc.The data ...
- Wordpress 后台文章编辑区添加模板选择功能
功能:后台编辑文章时,可以选择文章使用的模板,效果如下图: 操作步骤: <?php /** * Template Name: kbsingle full * Add by Ryan 3/18/2 ...
- STL之deque使用简介
deque函数列表 函数 c.assign(beg,end)c.assign(n,elem) c.at(idx) c.back() c.begin() c.clear() deque<Elem& ...
- [muku][1 初始restful api] chorme安装jsonview 插件
https://github.com/gildas-lormeau/JSONView-for-Chrome https://www.cnblogs.com/androidstudy/p
- gulp-API介绍
使用gulp,一般只需要用4个API:gulp.src(),gulp.dest(),gulp.task(),gulp.watch(). 1. gulp.src() 用来获取流的,但是要注意的是这个流里 ...
- 【bzoj1195】[HNOI2006]最短母串 AC自动机+状态压缩+BFS最短路
原文地址:http://www.cnblogs.com/GXZlegend/p/6825226.html 题目描述 给定n个字符串(S1,S2,„,Sn),要求找到一个最短的字符串T,使得这n个字符串 ...
- Android M中 JNI的入门学习
今年谷歌推出了Android 6.0,作为安卓开发人员,对其学习掌握肯定是必不可少的,今天小编和大家分享的就是Android 6.0中的 JNI相关知识,这是在一个安卓教程网上看到的内容,感觉很不错, ...
- 在Linux内核中添加系统调用,并编译内核
1 环境准备 运行系统:vmware下安装的ubuntu10.10 32bit桌面版. 编译内核版本: linux-2.6.32.63 内核目录: /home/wanchouchou/linuxKer ...
- shell,perl,python的区别
shell+sed+awk严格的讲, shell不是一种编程语言, 但是shell有自己的控制流结构(判断,循环,选择),运算以及函数等编程语言特性, 加上shell命令组织在一起构成脚本, 能够完成 ...
- 杭电oj2072
因为一直不能ac先发这里,希望有看到的大佬能指点一二. 先讲一下我的基本思路,首先将一整行数据保存在数组中,接着遍历数组,根据空格将每个单词存入二维数组中,最后遍历二维数组,找出其中不同的单词并计数. ...