Sharepoint Foundation中的首要数据结构就是列表(List), 每个List属于某种List Type,与此类似,每个列表中的列(Column)属于某种FieldType,而每一条列表记录(List Item)属于某种Content Type.至于外部数据(External Data),即来自于Sharepoint Content Database数据库之外的数据,也能够在Sharepoint中显示和管理。

    一、列表(List)

Sharepoint Foundation保存数据记录的方式类似于关系型数据库中的表(Table),只不过Sharepoint的术语称它们为列表(List),事实上这些数据记录被保存在Sharepoint内容数据库(Content Database)中,并以List的方式呈现给Sharepoint使用者。当然,Sharepoint的数据库不仅存放这些用户直接使用的数据,它还存放有Sharepoint的系统数据 : 如 Sharepoint场的配置数据(Configuration Data)、支持Sharepoint与外部数据源交互的BDC数据(用于支持BCS: Business Connectivity Services工作)。

可能有人就会问,为什么不直接使用数据库数据呢? 为什么非要在Sharepoint中以List方式绕一圈来表达?

这是因为Sharepoint Foundation的List与关系型数据库的数据表(Table)有以下方面的不同:

    1、访问支持

Sharepoint的数据访问不支持SQL,事实上,Sharepoint的数据是通过服务器端代码(server-side Code)如LINQ或CAML来访问的,你可以通过编程使用Server Object Model或者 LINQ来写入数据到List。

在客户端,你可以使用Client Object Model或WCF Data Services(即以前的ADO.NET Data Service)来访问List数据。

你不能使用SQL 查询语句或者存储过程(Store Procedure)来直接访问Sharepoint的后台数据

    2、关联字段

与数据表(Table)类似,列表(List)由字段(Column)组成,Column中的值既可以来自Column的值定义也可能来自其它List,对于后一种情况,Sharepoint就叫它查阅字段。

查阅字段是Sharepoint配置为从其他列表中的字段获取其值的字段。将查阅字段添加到列表会在该列表和提供数据的列表之间建立一种关系。这也类似于关系数据库中的关系型数据表之间的关系,但不同的是为查阅字段提供数据的List中的字段并不要求必须是外键字段(Foreign Key)。

当然,所有的Sharepoint Foundation定义的Lists都有一个ID字段,这个ID字段事实上就是建立查阅关系时要用到的外键字段(Foreign Key),没有这样的字段,你也不可能建立起查阅关系。

        3、表联接 :    

        Lists 可以像关系数据表一样建立联接(Join),但建立联接的两List之间必须有查阅关系(Lookup Relation),否则这种Join就无法建立。也即:创建列表联接时要记住一些要求。您不能只是联接任何两个列表而不考虑类型。如果可以联接两个列表,就不仅仅是任何主字段和外字段可用作字段的联接对。主列表中的字段必须是 Lookup 类型的字段,它必须查找外列表中的字段。 出于此原因,所有联接都镜像列表之间的现有查阅关系。

4、附加信息:

    Sharepoint Foundation的文档库(document library)是一种特殊的List,因为它的List记录可能会包括有文档附件(Attached Document)以及与此文档相关的描述字段(eg: 作者,创建时间,主题,最后修改者…….)。图片库也与此类似,只不过它的附件是以图片文件的方式提供。

从上面的大致比较我们就可以知道,由于Sharepoint的特殊要求,我们不可以照搬关系型数据库那一套,我们只有按照Sharepoint特殊要求来建立数据的组织与使用。

在Sharepoint中每个List都属于某个List Type,SharePoint Foundation包含有许多内置的List Type,比如: Announcements, Tasks, and Calendar等,用户可以直接拿来建立自己的List实例。

当然,开发人员也可以根据用户的特定要求创建用户自定义的List Type。

二、内容类型与字段类型(Content Types and Field Types)

   1、内容类型(Content Types)

List中的记录条即List Item也是属于某种类型(Content Type)的,所谓Content Type就是内容类型,它是 Microsoft SharePoint Foundation 2010 列表或文档库中一类项目或文档的元数据(列)、工作流、行为以及其他设置的可重用集合。借助于内容类型,可以采用集中的可重用方式来管理一类信息的设置。

例如,假定这样一种业务情形:您具有三种不同类型的文档,分别为费用报表、采购订单和发票。所有这三种类型的文档都具有一些共同的特征;首先它们都是财务文档,并且包含的数据具有以货币表示的值。但是,每种类型的文档都具有各自的数据要求、各自的文档模板和各自的工作流。此业务问题的一种解决方案是创建四种内容类型(Content Type)。第一种内容类型"Financial Document"可以封装组织中所有财务文档共有的数据要求。其余三种内容类型("Expense Report"、"Purchase Order"和"Invoice")可以从"Financial Document"继承共有元素。此外,它们还可以定义每种类型特有的特征,如特定元数据集(meta data)、用于创建新项目的文档模板和用于处理项目的特定工作流。

使用Content Type的最简单的方式就是使用Sharepoint Foundation内置的Content Type。Sharepoint Foundation有许多内置的Content Type,如: Event 和 Announcement。开发人员也可以根据用户需要开发用户自定义的Content Type.

  2、字段类型(Field Types)

列表中的字段(Field)也属于某种类型(Field Type字段类型),这种类型是不同于存储在此字段中的值(Value)的数据类型(Data Type 如:整型、字符串、日期等等)的。SharePoint Foundation 的字段类型的定义不仅包括基础数据类型(如:整型、字符串、日期等等),而且还包括这些数值是如何格式化,如何呈现的(如:创建、显示、编辑这个字段所呈现给用户的表单界面)。SharePoint Foundation有许多内置的字段类型,如:Modified By, Due Date等等。开发人员也可以开发用户自定义字段类型(Field Type)。

三、外部数据列表与BCS (External Lists and the Business Connectivity Service)

Sharepoint提供了强大的与外部数据源交互的能力,我们可以把诸如SAP,Oracle这样的外部数据库的数据资源呈现到Sharepoint界面上来。使用Sharepoint的Business Connectivity Services (BCS)不仅可以读取外部数据,而且支持写入。

下图显示了BCS中的主要组成部分及其它们之间的关系

Business Data Connectivity (BDC) Service 是新版本的业务数据目录,它之前是在 Microsoft Office SharePoint Server 2007 中提供的,现在在 Microsoft SharePoint Foundation 2010 中提供。

设计 BDC 的主要目的是,使您能够通过执行极少的编码工作,以声明方式从各种外部系统公开业务数据。

为实现此目标,BDC 通过元数据模型(该模型提供了一致的简化客户端对象模型)来提供对基础数据源的同类访问。

利用 BDC 服务,您能以声明方式对外部系统进行建模,以便您能公开 SharePoint Server 2010 中的外部数据(对于具有企业版客户端访问许可证的 Microsoft SharePoint Server 2010,也可在 Microsoft Office 2010 应用程序中执行此操作)。

BDC 填补了 SharePoint 网站和业务应用程序之间的间隙,使您能够将各种外部系统中的关键数据引入 SharePoint 列表(通过新的外部列表功能和外部数据列)、Web 部件、搜索、用户配置文件和自定义应用程序。

BDC 的核心功能是提供与各种外部系统的连接,并且它内部支持连接到以下类型的数据源:数据库、Windows Communication Foundation (WCF) 和 Web 服务、Microsoft .NET Framework 程序集、自定义数据源;

BDC 元数据模型(BDC 模型)是 BDC 的核心。类似于 Entity(外部内容类型)和用于提取有关外部系统的复杂详细信息的 Method 的数据结构统称为 MetadataObjects,并包含 BDC 模型。

外部系统的 BDC 模型实际上是一个 XML 文件,它是当您在 SharePoint Designer 中创建外部内容类型时自动生成的。在创建一个模型并将该模型上载到运行 SharePoint Server 的服务器上的 BDC 元数据存储之后,可随时在 SharePoint Server 中和 Microsoft Office 应用程序(例如,Microsoft Outlook、Microsoft SharePoint Workspace 和 Microsoft Word)中使用该模型中定义的外部内容类型,以使用 Business Connectivity Services 的演示功能和自定义解决方案根据上下文显示外部数据。我们可使用 SharePoint Server 管理中心内的"BDC 应用程序服务"页中的"导出"选项,或使用 SharePoint Designer 中的外部内容类型的"导出"选项随时查看 BDC 模型。

BDC 模型存储在关系数据库(此数据库不同于Content Database与Configuration Database)中,它在Sharepoint叫metadata store,在 BDC 运行时可以解释这些模型之前,需要将这些BDC 模型加载或具体化到内存中。数据库表和用于保留、读取和修改 BDC 模型的存储过程的集合构成了 BDC 元数据存储组件。只有在 Business Connectivity Services 的服务器部署上,此组件才会存在。

在BDC 模型存储到关系数据库Metadata Store之后,用户就可以通过多种途径使用它,比如:用户可以创建一个基于外部内容类型(External Content Type)的数据列表(List)。也可以基于已经存在的List向其添加一个来自于外部内容类型的新字段。SharePoint Server 2010在BCS方面有许多加强,它包含一些内置的Webpart来使用External Data,包括搜索外部数据。此外,SharePoint Workspace与Microsoft Office的客户端应用程序也能做到直接获取外部数据。在SharePoint Server 2010中,用户还能做到索引与搜索外部数据源(External data sources)

当某个Sharepoint的客户端应用程序请求外部数据时,运行在前端Web服务器上的BDC运行时(BDC Runtime)会向本地的缓存(Locally Cache)请求BDC 模型数据,这些BDC 模型数据是从BDC metadata store中复制到缓存以提高运行效率的。BDC运行时在得到此模型数据后就可以向客户端应用程序提供针对外部数据的相关操作了。与此类似,在客户端也缓存得有BDC 模型数据,BDC的客户端运行时(BDC Client Runtime)会基于此BDC 模型数据提请外部数据访问请求。当然,申请到的外部数据会保留在客户端以支持客户端的离线操作。

在BDC 服务启动起来并且所需的BDC模型数据也成功注册后,最终用户就可以使用外部数据了。他们既可以使用无代码方式(non-code)使用外部数据,也可以采取比较复杂的编程方式来使用外部数据。BDC运行时提供了一整套API来支持开发人员通过开发WebPart或其它解决方案与外部数据源交互。

由于BDC模型数据提供了一个类似于中间层的机制,当通过代码访问和操作外部数据源数据时,即使是针对不同的数据源对象,Sharepoint也能使用相同的代码作相关访问,BDC模型数据会自动把这个操作转化为针对不同数据源的具体的对应操作,这样就保证了在Sharepoint端访问数据的一致性表达,也就是说你可以使用同一套BDC运行时提供的API来访问外部数据,而无需根据外部数据源的不同使用不同的API。

需要注意的的BDC解决方案是在场级别进行打包和部署的,你不可以在沙盒方案中创建和部署与BDC。

Sharepoin学习笔记—架构系列--08 Sharepoint的数据模型(DataModel)、数据管理(Data Management)与查询(Query System)相关推荐

  1. Sharepoin学习笔记—架构系列—06 Sharepoint服务(Services)与服务应用程序框架(Service Application Framework) 1

    Sharepoint服务是Sharepoint的重要组成,可以说Sharepoint的许多网站功能都是基于这些服务构架起来的.这里把Sharepoint服务的相关要点总结一下. 1.什么是 Share ...

  2. Sharepoin学习笔记—架构系列--05 Sharepoint的四种执行模型 2

    上一篇我们看了场解决方案与沙盒方案两种执行模型,其中场解决方案包括有完全信任方式与Bin/CAS方式两种,这里让我们继续来看看最后一个执行模型,即混合模型(或混合模式). 三.混合模式(hybrid ...

  3. Sharepoin学习笔记—架构系列--04 Sharepoint的四种执行模型 1

    Sharepoint210有四种执行模型 1.完全信任执行模型(Full Trust) 2.Bin/CAS 执行模型 (1与2都属于场解决方案) 3.沙盒执行模型(Sand Box) 4. 混合执行方 ...

  4. Sharepoin学习笔记—架构系列--03 Sharepoint的处理(Process)与执行模型(Trust Model) 2

    上文我们了解了一个外部Http Request进入IIS 工作进程(W3WP)的处理与执行信任模型,这个阶段是Sharepoint的四种执行模型都必须经过的处理阶段,其中Sharepoint场解决方案 ...

  5. Sharepoin学习笔记 —架构系列--02 Sharepoint的处理(Process)与执行模型(Trust Model) 1

    Sharepoint210有四种执行模型: 1.完全信任执行模型(Full Trust) 2.Bin/CAS 执行模型 (1与2都属于场解决方案) 3.沙盒执行模型(Sand Box) 4. 混合执行 ...

  6. Sharepoin学习笔记—架构系列--01 Sharepoint的网页(Page),网页解析(Parsing)与解析安全处理(Security)

    Microsoft SharePoint Foundation 中主要有两种类型的页面,分别是应用程序页(Application Page) 和网站页(Site Page). 应用程序页(Applic ...

  7. Sharepoin学习笔记—架构系列—Sharepoint服务(Services)与服务应用程序框架(Service Application Framework) 1

    Sharepoin学习笔记-架构系列-Sharepoint服务(Services)与服务应用程序框架(Service Application Framework) 1 Sharepoint服务是Sha ...

  8. Sharepoin学习笔记—架构系列—Sharepoint服务(Services)与服务应用程序框架(Service Application Framework) 2

    上一篇我们以问答的方式明确了Sharepoint服务的一些概念,这里我们重点来看两个方面:Sharepoint服务器构架对象模型以及Sharepoint 服务应用程序的某些拓扑结构 一.Sharepo ...

  9. Sharepoint学习笔记 –架构系列—12 Sharepoint的客户端对象模型(Client Object Model)

    前面过了一下Sharepoint的服务器端对象模型,接下来就让我们大致看看Sharepoint的客户端对象模型(Client Object Model: Client OM). 首先需要了解的就是Sh ...

最新文章

  1. php和mysql两种不同方式的分割字符串和类型转换
  2. linux磁盘挂载特别慢,arch开机速度竟然是挂载磁盘拖慢了。。
  3. 基于万维易源提供的API接口实现快递单号查询物流信息
  4. 深度学习的视觉跟踪:一个全面的调查
  5. origin数据平滑_科学网-关于origin曲线平滑处理 lowess-叶小球的博文
  6. python基金估值查询_利用python实现基金估值的邮件发送
  7. FCM和Threshold
  8. 从前后端分离到前后端整合的“退步”(二)pom.xml文件配置
  9. 测试大佬带你揭秘功能测试的内幕
  10. 容性耦合等离子体(CCP)和电感耦合等离子体(ICP)
  11. 通过快递100获取快递单号,结合c-lodop热敏纸打印 – 通过菜鸟ISV/自研ERP使用菜鸟电子面单...
  12. 贪心算法 003:Tian Ji -- The Horse Racing
  13. 央行下属的上海资信网络金融征信系统(NFCS)签约机构数量突破800家
  14. hive安装及整合hbase
  15. 【Python数列、数列和问题】
  16. 线下auc涨,线上ctr/cpm跌的原因和解决办法
  17. 【课上笔记】第七章 树与森林
  18. 深入理解Linux内存管理
  19. html实现div变透明,css实现父div透明子div内容不透明
  20. 华为手表鸿蒙系统什么时候上市,打脸还是华为强,鸿蒙系统将Watch GT 2智能手表上市...

热门文章

  1. Chrome 调试动态加载的js
  2. [译]预留位置队列PRQueue:多线程程序中消息输入队列和消息输出队列保持同序...
  3. 140. Word Break II
  4. 【数据结构与算法】图
  5. [剑指offer]面试题第[41]题[Leetcode][第235题][JAVA][数据流中的中位数][优先队列][堆]
  6. android 广播唤醒应用,Android通过广播实现灭屏和唤醒
  7. 上拉加载更多后台数据_微信小程序端操作云数据库
  8. php设置cookie值,PHP如何设置和取得Cookie值
  9. mongodb如何根据字段(数组类型)的长度排序_大数据存储技术选型(七)——MongoDB设计模式及索引优化...
  10. 计算机软件专利申请期限,软件发明专利申请期限为何那么长