SharePoint服务器端对象模型 之 对象模型概述(Part 2)
(三)Url
作为一个B/S体系,在SharePoint的属性、方法参数和返回值中,大量的涉及到了Url,总的来说,涉及到的Url可以分为如下四类:
绝对路径:完整的Url,包含了协议头(http或https)、端口号、主机名等等,例如:http://myserver/subweb/documents/myfolder/myfile.doc。在SharePoint中,必须要使用绝对路径的机会并不是很多。一些网站级别对象的属性为绝对路径,例如spWeb.Url和spSite.Url。
相对服务器路径:以“/”开头的相对于服务器的路径,不包含协议头、端口号和主机名称,例如:/subweb/documents/myfolder/myfile.doc。在SharePoint中,使用相对服务器路径的机会比较多,一些对象都包含了名为ServerRelativeUrl的属性,用来描述其相对服务器的路径,例如SPFile和SPFolder都有这样的属性。
相对网站的路径:不是以“/”开头的相对于其所在网站地址的相对路径,不包含网站本身的路径,例如:documents/myfolder/myfile.doc。在SharePoint中,这类路径也比较常见,很多对象都包含了名为Url的属性,大都指的是相对网站的路径(SPWeb和SPSite是例外)。
相对路径:相对于某个特定路径的相对路径,例如:myfolder/myfile.doc(相对于documents路径)。
在SharePoint的各种对象的属性、方法参数和返回值中,只要涉及到Url,必定会在SDK中明确指明这个Url是以上哪一种Url。在方法的参数中,很多时候可以使用多种Url,SharePoint的API会在内部进行相应的转换。
(四)如何尝试使用和了解SharePoint对象模型
在实际的开发过程中,我们所使用的Visual Studio 2010中内置的SharePoint项目模板已经帮我们做好了相关程序集和命名空间的引用,无需我们再去操心。但是如果我们只是想尝试一些对象的使用,或者确定某个具体功能是否如我们想象中正常运行,并且希望能够立刻获得结果的话,我们可以创建一个专门用来测试各种对象模型使用的控制台程序。
1、创建一个使用SharePoint对象模型的控制台程序
(1)启动Visual Studio 2010,选择新建项目(New Project);
(2)在新建项目的对话框中选择控制台程序(Console Application),并注意选择使用.NET Framework 3.5作为运行时环境(SharePoint 2010不是使用.NET 4.0的内核运行的);
(3)解决方案浏览器(Solution Explorer)中右键点击项目,选择属性(Properties),在生成“生成(Build)”标签页中,将“目标平台(Platform Target)修改为Any CPU或x64(默认为x86,但是SharePoint 2010不能运行在32位环境下);
(4)在项目(Project)菜单中选择添加引用(Add Reference),在.NET标签页中找到“Microsoft.SharePoint”,点击确定。绝大多数常用的服务器端对象模型都包含在这一程序集当中。该程序集的位置在SharePoint Root目录(C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14)中的ISAPI目录中,如果Visual Studio没有安装在服务器上,也可以将服务器目录中的Microsoft.SharePoint.dll文件手动复制出来并添加引用,并不影响程序的编写和编译(但是不能运行)。
【注】如果是SharePoint 2013的话,对应的目录是“15”
(5)在代码中添加命名空间。绝大多数常用的SharePoint对象模型都包含在Microsoft.SharePoint命名空间中,也有一些和服务器管理相关的对象模型包含在Microsoft.SharePoint.Administration命名空间中。
至此,我们就可以去试验我们的程序片段了。
2、为什么使用控制台程序
与其他类型的SharePoint项目模板相比,控制台程序包含如下优点:(1)环境简单:控制台程序运行在独立的进程中,而其他的运行在网站中的代码则运行在IIS进程或相应的用户代码进程中,使用控制台程序不容易受其他环境的影响。(2)快速看到结果:直接按下F5或者Ctrl+F5就可以看到运行结果,无需任何部署(虽然Visual Studio 2010已经将SharePoint项目模板的部署简化到了极致),也不需要经过IIS中的动态更新和加载过程,运行较快。(3)只关注数据操作的功能和逻辑,无需考虑界面层。
但是这并不意味着控制台程序没有缺点,其局限之一在于SharePoint服务器端对象模型——即本章介绍的所有内容——只能运行在SharePoint服务器上(在本书第五章会专门介绍客户端访问的对象模型),这也就意味着为了能够方便地编写和调试,我们必须把SharePoint和Visual Studio安装在同一台机器(或者虚拟机)上。局限之二在于控制台程序不太容易切换用户身份,在试验不同用户对代码的运行结果时,并不如在浏览器中切换用户方便(尽管对象模型中也提供了以特定用户身份执行操作的方式)。
不过总的来说,当我们不太确定某个对象的某种方法或属性的使用,需要写一些简短的程序片段进行试验的时候,使用控制台程序不失为一种很好的选择。控制台程序也可以作为一些简单模块的单元测试工具。实际上,在笔者编写实际项目代码的过程中,也经常使用控制台程序来测试某些不熟悉的对象模型的使用,或者测试某些代码片段的运行结果。
因此,本章中所有的代码片段都通过上述过程创建出的控制台程序进行演示。
3、如何快速查看网站中的常用对象及其属性
在Visual Studio 2010之前,我们在开发一些SharePoint项目或应用的时候,最麻烦的事情往往是需要频繁地从Visual Studio中切换到浏览器中,去查看网站的层次结构、列表的名称、字段的种种属性等,更让人头疼的是,有一些在开发过程中需要了解属性在页面中是很难发现的(比如字段的内部名称)。而如今,通过使用Visual Studio 2010种新增加的“SharePoint连接(SharePoint Connections)”功能,我们就可以直接在Visual Studio中迅速了解到网站、列表的结构,甚至这些常用对象的具体属性。
在Visual Studio中的服务器资源管理器(Server Explorer)窗口中,我们会看到一个“SharePoint连接(SharePoint Connections)”结点,我们可以在该结点上点击右键,选择添加连接(Add Connection),添加我们所需要的SharePoint站点。之后,通过这个结点,我们就可以看到网站中所有的子网站、列表、列表栏、内容类型、工作流模板等常用对象,并且在选中一个对象后,可以在Visual Studio的属性(Properties)窗口中,立即看到关于选中对象的所有属性。有了这个内置工具的支持,极大地提高了SharePoint的开发效率。
SharePoint服务器端对象模型 之 对象模型概述(Part 2)的更多相关文章
- SharePoint服务器端对象模型 之 使用CAML进展数据查询
SharePoint服务器端对象模型 之 使用CAML进行数据查询 一.概述 在SharePoint的开发应用中,查询是非常常用的一种手段,根据某些筛选.排序条件,获得某个列表或者某一些列表中相应的列 ...
- SharePoint服务器端对象模型 之 序言
对于刚刚开始接触SharePoint的开发人员,即使之前有较为丰富的ASP.NET开发经验,在面对SharePoint时候可能也很难找到入手的方向.对于任何一种开发平台而言,学习开发的过程大致会包括: ...
- SharePoint服务器端对象模型 之 访问网站和列表数据(Part 1)
本节将会介绍SharePoint中最为常用的一些对象模型,以及如何使用这些对象模型来访问和操作网站中的数据.几乎所有的SharePoint服务器端开发都会涉及到这些内容,因此应着重掌握本节中所介绍的基 ...
- 开启貌似已经过时很久的新坑:SharePoint服务器端对象模型
5年前(嗯,是5年前),SharePoint 2010刚发布的时候,曾经和kaneboy试图一起写一本关于SharePoint 2010开发的书,名字叫<SharePoint 2010 应用开发 ...
- SharePoint服务器端对象模型 之 对象模型概述(Part 1)
在一个传统的ASP.NET开发过程中,我们往往会把开发分为界面展现层.逻辑业务层和数据访问层这三个层面.作为一个应用开发平台,SharePoint是微软在直观的开发能力和自由的扩展能力之间,取到的一个 ...
- SharePoint服务器端对象模型 完结
整个系列已完结,大概看了一眼,平均阅读量不到200.估计也没什么人看了,而且服务器端对象模型除了在某些企业开发中会用到,从2013时代开始其实已经不是SharePoint开发的最佳选择了.不过既然已经 ...
- SharePoint服务器端对象模型 之 访问用户、用户组和权限(Part 1)
(一)概述 SharePoint权限系统是整个SharePoint体系中一个比较重要的部分,权限系统主要分成两大部分:认证和授权. 认证主要解决的问题是判断登陆者是否合法,以及他究竟是哪一个用户,Sh ...
- SharePoint服务器端对象模型 之 使用CAML进行数据查询
(一)概述 在SharePoint的开发应用中,查询是非常常用的一种手段,根据某些筛选.排序条件,获得某个列表或者某一些列表中相应的列表条目的集合. 除去列表上的查询之外,在SharePoint中还大 ...
- SharePoint 服务器端对象模型 之 使用LINQ进行数据访问操作(Part 2)
(四)使用LINQ进行列表查询 在生成实体类之后,就可以利用LINQ的强大查询能力进行SharePoint列表数据的查询了.在传统SharePoint对象模型编程中,需要首先获取网站对象,再进行其他操 ...
随机推荐
- Android Exception 16(Error in ADT 23 Update)
http://stackoverflow.com/questions/24445367/error-in-adt-23-update http://stackoverflow.com/question ...
- hiredis学习整理
hiredis安装 http://blog.csdn.net/aizquan/article/details/20777453 http://blog.csdn.net/zhwei_87/articl ...
- Hive 正则匹配函数
正则匹配字符解释: ^ 表示开头 $ 表示结尾 . 表示任意字符 * 表示任意多个 regexp_extract函数 语法: regexp_extract(string subject, st ...
- PHP 命名空间namespace 和 use
慕课网教程: http://www.imooc.com/video/7834 PHP 中命名空间的概念和高级语言(如C#.JAVA)有很大的差异,一度让我混淆甚至怀疑它存在的意义和目的. 今天找时间学 ...
- webpack 通用环境快速搭建
能用babel编译es2015 . 能热编译.能加载静态资源(js/css/font/image).是一个很通用的开发环境,虽然不智能.但很好扩展 npm 安装列表: # webpack 核心 npm ...
- 自己动手开发更好用的markdown编辑器-07(扩展语法)
这里文章都是从个人的github博客直接复制过来的,排版可能有点乱. 原始地址 http://benq.im/2015/05/19/hexomd-07/ 文章目录 1. 准备工作 2. 目录语法 ...
- 一次httpserver优化的经验和教训(silverlight游戏 - 金庸群侠传X0.5上线记)
金X因为被推荐到ACFUN游戏排行第一名.并同一时候在17YY.7K7K.U77.17173等各大小游戏站点上线.迎来了在线用户数量的爆炸式增长.眼下各大站点使用外链方式.也就是实际链接到金X官网的s ...
- Atitit.java相比c#.net的优点 优缺点 v2 q330
Atitit.java相比c#.net的优点 优缺点 v2 q330 1. 跨平台可在LINUX上,mac跑以外.主要如下: 1 2. IDE ECLIPSE(500m)是绿色的,换机器不用安装,C ...
- atitit.跨语言实现备份mysql数据库 为sql文件特性 api 兼容性java c#.net php js
atitit.跨语言实现备份mysql数据库 为sql文件特性 api 兼容性java c#.net php js 1. 两个方法:: bat vs mysqldump(推荐) vs lang ...
- python使用hbase
#coding:utf-8 __author__ = 'similarface' from multiprocessing import Process import happybase import ...