创建具有外部持久性的文档库

时间:2009-06-25 18:53:12

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

我想创建一个自定义文档库,我使用标准UI但实现不同的持久层。基本上从不同的源系统获取和显示文档。这样我就可以使用现有的对象模型,但可以利用SharePoint中的优秀办公室集成。

我发现了一篇不错的文章here,但他们在作弊,他们为外部持久性编写了一个全新的用户界面。

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

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

有什么想法吗?

4 个答案:

答案 0 :(得分:4)

这不是一个完美的(或者甚至可能是“好的”)适合你想要做的事情,但我提到它主要是为了提高意识,并可能给你一些额外的想法(和警告)。

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

这可能听起来有点乐观,但有几个严肃的考虑因素:

  1. 在您自己的ISPExternalBinaryProvider中接线会对整个群体产生影响。这是全部或全部,所以一旦提供商接通,所有网站和图书馆都将使用新的提供商。

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

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

    我认为外部BLOB存储(EBS)系统在这一点上是一种“原型” - 尚未准备好迎接黄金时段。但是,如果没有别的,它会给你一些思考的东西。 SharePoint Server 2010希望能够使用它做更多工作,并使其更具吸引力且易于实现。

    为了它的价值!

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

如果你真的想要推出自己的外部持久性,请尝试查看TechNet上6月份发布的这篇全新的文章:

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

现在,递给我赏金。 ;)

答案 3 :(得分:0)

很抱歉,但ISPExternalBinaryProvider是唯一的方法,我担心如果你想使用标准的用户界面。

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

也许SharePoint 2010有更好的方法来实现这一目标......