asp.net - 如何在自定义 Web 应用程序中仅将 SharePoint 用作内容管理工具?

标签 asp.net asp.net-mvc sharepoint content-management

我们有许多用经典 ASP 和 ASP.NET 2.0 技术编写的定制 Web 应用程序(外部和内部)。内部用户可以将文件上传到这些网站,然后外部用户可以查看这些文件。在某些情况下,外部用户也可以上传文档。 屏幕截图 #1 简要介绍了现有架构。

  1. 内部用户将文档上传到自定义 Web 应用程序。这些文档存储在 Web 应用程序下定义的文件夹结构中。

  2. 元数据和用户权限(例如谁可以访问文档)存储在 SQL Server 数据库中。

  3. 上传到自定义 Web 应用程序的同一组文档也存在于 SharePoint 中。但是,自定义 Web 应用程序不知道 SharePoint。因此,用户必须从 SharePoint 下载它们,然后将其上传到自定义 Web 应用程序。我们当前使用的是 SharePoint 2010

  4. 外部用户还可以将文档上传到自定义 Web 应用程序。文档的元数据和用户权限根据上传文档的用户保存到数据库中。

屏幕截图#1:

1

屏幕截图#2 显示了我正在尝试实现的架构。我很少进行 SharePoint 开发。大多数情况下,我使用 SharePoint Web 服务来检索一些列表内容,但仅此而已。我们 future 的自定义 Web 应用程序可能会使用 ASP.NET MVC 编写。请在截图后找到问题。

屏幕截图#2:

2

这是我的问题:

  1. 我希望内部用户继续在 SharePoint 中上传和维护他们的文档。用户安全模型已在 SQL Server 数据库中定义。此安全权限应在 SharePoint 文档属性中可用,以便用户可以选择谁可以从自定义 Web 应用程序查看文档。我怎样才能实现这个目标?我是否必须将 SQL Server 用户权限信息复制到 SharePoint?

  2. 我相信 SharePoint Web ServicesBusiness Connectivity Services (BCS) 可以帮助从 SharePoint 检索文档及其相关信息。其中哪一个更适合这种情况?

  3. 自定义 Web 应用程序应仅显示文档的已提交版本。如果用户已 checkout SharePoint 中的文档以进行任何更改,则外部用户不应看到该文档的 checkout 版本。这可能吗?

  4. 有人尝试过这种方法吗?这个模型有什么陷阱吗?此设计是否存在性能问题?

  5. 如果我使用 ASP.NET MVC 重写现有的应用程序,这种设计会有任何障碍吗?

  6. 是否可以在自定义 Web 应用程序(ASP.NET Web 表单/ASP.NET MVC)中使用 SharePoint 搜索功能?换句话说,我可以从自定义 Web 应用程序发送搜索条件并让 SharePoint 进行搜索并将结果返回到自定义 Web 应用程序吗?

我非常感谢您的投入。

提前致谢。

最佳答案

问题1

如果没有更多细节,很难说。因此,我假设您当前使用 Active Directory 作为身份验证存储。因此,这意味着您的 SQL Server 定义了角色列表,然后为这些角色分配了成员身份。我假设您分配的成员资格是 AD 用户或组。如果这是真的,那么我认为您将权限从 SQL Server 推送到 SharePoint 的路径正确。 SharePoint 的 API 将满足您需要执行的操作,但是 SharePoint 没有内置机制来同步您的权限更改,因此这意味着您最终需要编写大量的管道代码。我建议您研究可以为您处理同步的产品。 Microsoft MIIS(我相信它现在称为 Forefront Identity Management)提供了一组您应该研究的体系结构模式。

<小时/>

问题2

SharePoint Web 服务或 SharePoint 客户端访问服务应该可以正常工作。我强烈建议使用代理模式将您的应用程序与 SharePoint 调用隔离(以便您可以将您的应用程序与 SharePoint 升级和潜在的内容管理服务器更改隔离)。

<小时/>

问题3

是的,这是可能的。如果您使用的是 SharePoint Server(而不是 SharePoint Foundation)的发布功能,您将可以轻松识别当前发布的版本。否则,应设置您查询所用的服务帐户,使其只能读取已发布的版本,然后 SharePoint 将自动修剪您的查询。

<小时/>

问题4

我个人没有尝试过这种设计,但我真的很喜欢创建内容管理域,然后在其上放置抽象服务层的概念。您是否会遇到规模问题,取决于您如何配置 SharePoint 和应用程序。你可以做对也可以做错。这里无法涵盖两者之间的深度答案。我的一条建议是确保您计划在服务接口(interface)中进行缓存(缓存,缓存,缓存)。

<小时/>

问题5

如果您将其实现为服务层,则不会。您只需使用存储库模式来调用服务并返回模型的实体。

<小时/>

问题6

是的,搜索是通过 API 公开的,因此它也可以封装在服务层中。

<小时/>

祝你好运,请随时直接与我联系以进行更深入的讨论。

关于asp.net - 如何在自定义 Web 应用程序中仅将 SharePoint 用作内容管理工具?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6244029/

相关文章:

c# - 更改 Html.TextBox 的大小

asp.net - 保护 ASP.Net 站点的 SQL 数据库帐户

c# - ASP.Net ADFS Token 加密证书私钥

c# - 代码没有错误,数据库已连接,但更新条目时发生错误。详细信息请参见内部异常

c# - 将 View 呈现为字符串 : ArgumentOutOfRangeException

javascript - JQuery 根据 HTML 下拉选择查找并替换 URL 中的查询字符串

c# - 在 asp.net 中动态生成文本框

mysql - MySql 查询和 asp.net c# 之间的结果差异

c# - 如何在 Sharepoint 中以编程方式调用 Windows 身份验证?

css - 删除标题区域部分 SharePoint