2

我想创建一个自定义文档库,我使用标准UI但实现了不同的持久层。基本上从不同的源系统获取并显示文档。通过这种方式,我可以使用现有的对象模型,但可以利用SharePoint内的优秀办公室集成。创建一个具有外部持久性的文档库

我找到一份像样的文章here但他们欺骗,他们已经编码的外部持久性的全新的UI。

我已经看过SPList和SPDocumentLibrary对象,但我无法重写必要的方法。

我已经看过了事件框架,它更接近,但它缺乏重要事件,如“的GetFile”或“PopulateList”。

有什么想法?

回答

4

这是不是一个完美的(或者甚至可能是一个“好”)的适合你正在试图做什么,但我说出来,主要是为了认识,并有可能给你一些额外的想法(以及警告)。

SharePoint的存储架构充分利用了两种不同的后端存储:一个用于元数据(总是SharePoint的SQL数据库),另一个用于BLOB存储(也由默认的SQL)。不过,以目前的形式,SharePoint允许您通过实现ISPExternalBinaryProvider接口的类型“连接”自己的BLOB存储提供程序。实现此接口的类型中的接线允许您继续在SQL中存储元数据,同时将文档和其他BLOB项类型存储在您选择的不同存储区中。

这可能听起来有点前途的,但也有几个严重的考虑:

  1. 接线,在自己的ISPExternalBinaryProvider有场范围的影响。它全部或全部没有,所以一旦提供者连线,所有站点和libaries将使用新的提供者。

  2. 你需要潜入非托管代码,因为ISPExternalBinaryProvider做要求你一些IDL工作。

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

我的观点是,外部BLOB存储(EBS)系统是在这一点上“原型”的东西 - 没有准备好黄金时段。如果没有别的,但它给你一些想法。 SharePoint Server 2010希望能够做得更多,并使其更具吸引力并且易于实施。

这是值得的!

+0

伟大的思想!不幸的是,我无法在整个农场实现这个功能,我必须能够根据文档库选择打开它。 – 2009-06-25 19:55:49

+0

AvePoint(例如)如何使用他们的存档器产品执行此操作?他们宣称,他们可以选择性地(显然是以每个列表为基础)将文档存储卸载到其他设备。我误解他们的产品吗? – 2009-06-25 20:54:59

0

遗憾地说,但ISPExternalBinaryProvider是要做到这一点恐怕如果你想使用标准UI的唯一途径。

P.S.另一个重大挫折是这是一个备份/版本化的噩梦。甚至不知道是否支持版本控制。

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

1

我已经使用了在创建和图书馆的文件更新运行的持续性工作流执行SQL持久性表单库。

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