(三)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的开发效率。

【转】1.2SharePoint服务器端对象模型 之 对象模型概述(Part 2)相关推荐

  1. COM(Componet Object Model_组件对象模型)技术概述

    COM(Componet Object Model_组件对象模型)技术概述 转载FDCFDMin 最后发布于2018-09-07 20:33:55 阅读数 2065 收藏 https://blog.c ...

  2. 【转】1.SharePoint服务器端对象模型 之 对象模型概述(Part 1)

    在一个传统的ASP.NET开发过程中,我们往往会把开发分为界面展现层.逻辑业务层和数据访问层这三个层面.作为一个应用开发平台,SharePoint是微软在直观的开发能力和自由的扩展能力之间,取到的一个 ...

  3. 【转】4.2SharePoint服务器端对象模型 之 使用CAML进行数据查询(Part 2)

    (三)使用SPQuery进行列表查询 1.概述 列表查询主要是指在一个指定的列表(或文档库)中按照某些筛选.排序条件进行查询.列表查询主要使用SPQuery对象,以及SPList的GetItems方法 ...

  4. 【转】3.2SharePoint服务器端对象模型 之 访问文件和文件夹(Part 2)

    4.添加文件夹 文件夹的创建方法在文档库和普通列表中稍有不同. 在文档库中,与一般的集合操作相同,直接使用SPFolderCollection的Add(string name)方法即可添加文件夹,例如 ...

  5. JavaScript文档对象模型DOM节点概述(1)

  6. C++对象模型-在对象模型的尖端 第七章笔记

    读完C++对象模型书后,做一个笔记整理 第一章-关于对象 第二章-构造函数语义学 第三章-Data语义学 第四章-Function语义学 第五章-构造拷贝解析语义学 第六章-执行期语义学 第七章-在对 ...

  7. python对象模型 ruby_使用JRuby/Jython实现Ruby/Python的互操作性?

    不,那不行.至少不是你想的那样.在 Jython和JRuby之间的互操作性与CPython和YARV之间的工作方式相同:它们都运行在同一个平台上,因此可以使用该平台彼此通信.在 在CPython和YA ...

  8. 深度探索C++ 对象模型(1)-三种对象模型的设计

    1.类的成员 数据成员 . Static . Nonstatic 成员函数 . Static . Nonstatic . virtual Questions: C++封装带来的布局成本是多大? 由空类 ...

  9. [Sharepoint2007对象模型]第一回:服务器场(SPFarm)

    Sharepoint是微软一个很重要的服务器产品,它可以方便的创建和维护一个网站,在Sharepoint的管理中心提供了很强大的管理工具.同时为了更加灵活的后期定制和开发,Sharepoint提供了完 ...

最新文章

  1. 大叔手记(16):分析URL Routing和URL Rewriting两者之间的不同
  2. 2018中国互联网企业100强揭晓!阿里巴巴名列榜首
  3. python中for循环语句格式_Python基础-10循环语句
  4. IDC 2019Q1云市场报告重磅出炉;英特尔与百度签署3年新协议;谷歌收购云存储公司 Elastifile,增强自家……...
  5. java ie下载文件名乱码问题_php中强制下载文件的代码(解决了IE下中文文件名乱码问题)...
  6. 1.7 编程基础之字符串 14 大小写字母互换 python
  7. 按量收费云盘_如何自动同步财务系统数据至云盘分享?
  8. mysql 日志文件 自动_教你自动恢复MySQL数据库的日志文件
  9. ie的window.open 未指明的错误_错误还是违法——离开的原因之一
  10. oracle下载地址
  11. CATIA软件有限元分析功能详解及使用教程
  12. XP环境下查看psd文件缩略图显示补…
  13. 维度表创建规范_数据仓库维度建模-维度表设计
  14. 编写一个方法,将一段文本中的各个单词的字母顺序翻转题
  15. 苏州微软面试--机器学习自然语言处理
  16. 快速批量把jpg转换成pdf的方法
  17. python汉语词典_Python 字典(Dictionary)
  18. ubuntu 手机连接不到电脑,配置
  19. 上海宽泛计算机招聘,2022上海市公务员考试职位表
  20. 计算机常见故障与维修方法

热门文章

  1. .Net AppDomain详解(一)
  2. 如何提高生产力(二)、软件的开发与采购
  3. orcale 基本查询(1)
  4. 线程间通信 GET POST
  5. Android成长日记-Android布局优化
  6. poj 3009 Curling 2.0 (dfs的应用)
  7. vs2005新建类,自定义模板信息(转载)
  8. [Leedcode][JAVA][面试题 16.18][模式匹配][字符串][枚举]
  9. [剑指offer][JAVA]面试题第[29]题[顺时针打印矩阵][数组]
  10. qstring去掉特定字符_如何花式、批量且操作简单地处理字符?