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