【问题标题】:Create a document library with external persistence创建具有外部持久性的文档库
【发布时间】:2009-06-25 18:53:12
【问题描述】:

我想创建一个自定义文档库,在其中使用标准 UI,但实现不同的持久层。基本上从不同的源系统获取和显示文档。通过这种方式,我可以使用现有的对象模型,同时利用 SharePoint 中出色的办公集成。

我找到了一篇不错的文章here,但他们在作弊,他们为外部持久性编写了一个全新的 UI。

我查看了 SPList 和 SPDocumentLibrary 对象,但无法覆盖必要的方法。

我查看了事件框架,它更接近,但缺少重要事件,例如“GetFile”或“PopulateList”。

有什么想法吗?

【问题讨论】:

    标签: c# visual-studio-2008 sharepoint persistence sharepointdocumentlibrary


    【解决方案1】:

    这对于您正在尝试做的事情来说并不完美(甚至可能不是“好”),但我提到它主要是为了提高意识并可能给您一些额外的想法(和警告)。

    SharePoint 的存储体系结构利用两种不同的后端存储:一种用于元数据(始终是 SharePoint 的 SQL 数据库),另一种用于 BLOB 存储(默认情况下也是 SQL)。不过,在其当前形式中,SharePoint 允许您通过实现 ISPExternalBinaryProvider 接口的类型“连接”您自己的 BLOB 存储提供程序。连接实现此接口的类型允许您继续在 SQL 中存储元数据,同时将文档和其他 BLOB 项目类型存储在您选择的不同存储中。

    这听起来可能有点希望,但有几个重要的考虑因素:

    1. 接入您自己的 ISPExternalBinaryProvider 会对整个场产生影响。要么全有,要么全无,因此一旦连接了提供程序,所有站点和库都将使用新的提供程序。

    2. 您需要深入研究非托管代码,因为 ISPExternalBinaryProvider 要求您使用一些 IDL。

    您可以在这里阅读更多内容:http://msdn.microsoft.com/en-us/library/bb802976.aspx

    我的看法是,外部 BLOB 存储 (EBS) 系统在这一点上是某种“原型”——尚未准备好迎接黄金时段。不过,如果没有别的,它会给你一些思考的东西。 SharePoint Server 2010 有望利用它做更多事情,并使其更具吸引力和易于实施。

    物有所值!

    【讨论】:

    • 好主意!不幸的是,我无法在整个场中实现此功能,我必须能够有选择地为每个文档库打开它。
    • AvePoint(例如)如何使用他们的归档产品做到这一点?他们宣传他们可以有选择地(显然是在每个列表的基础上)将文档存储卸载到另一台设备。我是否误解了他们的产品?
    • 很好的问题,克里斯。我对该产品并不太熟悉,但我所做的有限研究让我相信,一旦内容被存档,它就完全在 SharePoint 之外(即在自定义商店中)。该产品包括 Web 部件和索引支持,因此数据对 SharePoint 是“可见的”,但是(从存档)取回数据的实际操作需要还原操作。它给我的印象是该产品像一个更灵活(和暴露)的备份系统一样运行。不过,这只是我的看法,并没有得到 AvePoint 的证实。
    • Cube Pirate:我认为,如果不进行大量自定义,您将无法强迫 SharePoint 以您指定的方式工作。 “轻量级”方法可能是利用 BDC(用于读取功能),然后编写自定义代码以持久保存到您正在使用的任何后端存储。再说一次 - 不是完美匹配,但我认为您将使用您选择实施或构建的任何解决方案进行一些真正的利弊权衡分析。
    【解决方案2】:

    我通过使用在创建和更新库文档时运行的持久性工作流在表单库中实现了 SQL 持久性。

    我在 Visual Studio 2008 中创建了一个 Office SharePoint 2007 工作流项目,检索了我的 SPItem 文档内容,并从 InfoPath WebForm 生成的 XML 中提取了相关数据并将其保存到数据库中。

    【讨论】:

      【解决方案3】:

      如果您真的想推出自己的外部持久性,请尝试查看 6 月在 TechNet 上发表的这篇全新的、内容丰富的文章:

      http://technet.microsoft.com/en-us/magazine/2009.06.insidesharepoint.aspx

      现在,把赏金交给我。 ;)

      【讨论】:

      • ISPExternalBinaryProvider 已经被加入进来了,但是剪切和粘贴技巧非常出色!!!
      【解决方案4】:

      抱歉,如果您想使用标准 UI,恐怕 ISPExternalBinaryProvider 是唯一的方法。

      附:另一个重大挫折是备份/版本控制的噩梦。甚至不确定是否支持版本控制。

      也许 SharePoint 2010 会有更好的方法来做到这一点...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-21
        • 2012-01-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多