分享知识、分享快乐

专注于企业业务流程管理平台;构建企业级协作和流程管理平台
目前博客已经迁往畅想网:
http://blog.vsharing.com/sharepoint
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

异构系统如何与Sharepoint互相访问

Posted on 2007-05-19 23:55  kevinocean  阅读(993)  评论(0编辑  收藏  举报

 

Microsoft SharePoint 仅仅是众多 Microsoft 产品中的其中之一。现在存在两种风格的 SharePoint 产品:

  • Microsoft Windows SharePoint Services
    该核心产品提供了 SharePoint 的基本功能以及用于构建站点的各种模板。从 Windows Server 2003 开始,它可以作为标准组件使用。它是以 Microsoft .NET Framework 为基础的。
  • Microsoft Office SharePoint Portal Server
    该服务器提供了分组并组织单个的站点和列表,以及跨多站点进行搜索的功能。它以 Windows SharePoint Services 为核心,添加了更广泛的功能。

这两个版本的 SharePoint 都使用 Microsoft SQL Server 作为后端数据存储。

而微软最新第三個版本則是最近推出的 Windows SharePoint Services 3.0(WSS v3)和 Microsoft Office SharePoint Server 2007(產品名稱的 Portal 不見了,慣用的產品簡稱也改成 MOSS,不過還是有人以舊名 SPS 稱呼)。第三版是功能大躍進的版本,MOSS 2007 不只包含了 SPS 2003 的功能,也納入了 Microsoft Content Management Server 2002 的功能,以及 Infopath Form Services 和 Excel Calculation Server 的功能。

 

Sharepoint如何集成其他的异构系统

这一点无庸置疑,基于HTTP的应用系统本身就很好做继承。由于企业极的应用中很多使用Lotus Notes的先例。这里列举IBM官方的文章描述如何让Sharepoint和Notes进行交互:集成IBM Lotus Domino 数据和Microsoft SharePoint Services

 

其他异构系统如何集成Sharepoint

这个才是重点^_^

虽然Sharepoint中的内容是存放在Sql Server中的,但是你去Sharepoint的数据库看看就知道。你看到的List在后台数据库根本就不是一张象List一样整整齐齐的表。其实Sharepoint后台的数据存储是按照一定的层次划分,和具体的List结构没有直接的关系。其核心表结构有如下四个:

Sites ; Webs ; AllLists ;AllUserData

而AllLists就记录了改站点下面共有多少个List,及其ID和名称。而所有List中存放的数据都堆积在AllUserData表中。而通过ListID和AllLists表关联。老实说,一看这样的设计,我还真的挺担心这样的List能够存储多少容量的数据呢?具体数字我不知道,感觉应该不会很大。

好了,说了sharepoint存储的结构。是否都认为没有希望访问Sharepoint里面的数据了?非也非也。sharepoint还是提供了很好的方法让我们通过其他系统来访问的。这里提供两种方法来访问Sharepoint中的资源:

1 Sharepoint 对象模型<Object Model>

sharepoint大多数对象模型,如常用的Site;List;ListItem等都存在于Microsoft.SharePoint.dll文件中,只要我们引用了此dll文件。就可以在我们的.NET程序中自由的使用Sharepoint中的对象。

 

2 Web Service

sharepoint最让人惊奇的就是,其很多的简单操作(比如上传一个附件)都是通过调用sharepoint自身的WS来实现的,这充分说明了sharepoint真正是给予SOA的架构来实现整个产品的。

那么sharepoint到底提供了哪些WS出来呢?请参考:Talk to SharePoint Through its Web Services

为了更加有实际效果。我们做一个Console测试一下:(添加到WS的引用)

 

然后只要添加两行简单的代码即可访问SharePoint3(刚好是一个讨论坂,准备向这个讨论坂中添加一条新的讨论):讨论坂连接

 

using System;
using System.Collections.Generic;
using System.Text;

namespace WSSTest
{
class Program
{
static void Main(string[] args)
{
spList.Lists alist = new WSSTest.spList.Lists();

Console.WriteLine(alist.GetList("SharePoint3").Value);
}
}
}

不过其程序毕竟还是没有能够如此简单的让我做这种没有任何安全验证的事情,运行到第二句的时候出现了如下的错误提示:

 

虽然最后没有成功,但是已经连接上了这个Sharepoint站点。至于如何更加详细的使用Sharepoint自带的WS来操作Sharepoint中的内容。最好的方法莫过于WSS的SDK了:

 

WSS SDK: http://www.microsoft.com/downloads/details.aspx?FamilyID=1C64AF62-C2E9-4CA3-A2A0-7D4319980011

SPS SDK: http://www.microsoft.com/downloads/details.aspx?familyid=aa3e7fe5-daee-4d10-980f-789b827967b0