2

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

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

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

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

有什么想法吗?

4

4 回答 4

4

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

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 有望利用它做更多的事情,并使其更具吸引力和易于实施。

物有所值!

于 2009-06-25T19:31:54.107 回答
1

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

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

于 2009-06-26T00:03:14.233 回答
1

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

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

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

于 2009-07-03T00:18:27.450 回答
0

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

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

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

于 2009-06-25T20:48:35.840 回答