SharePoint开发和以数据为中心的项目

时间:2009-08-27 11:04:28

标签: asp.net sharepoint sharepoint-designer wss-3.0

我参与了一个非常以数据为中心的SharePoint(WSS)项目。该项目包含500多个列表,这些列表之间的关系非常复杂。客户还要求提供350多份报告。不要告诉我为什么从一开始就使用SharePoint。这是一项管理决定,我们已经在经过14个月的痛苦之后交付了这个项目(这是截止日期已过去6个月)

当我们第一次启动项目时,我们对SharePoint开发一无所知(信不信由你)。管理层表示将承担风险。他们非常确信SharePoint是任何东西的最佳解决方案!!!(在项目结束时证明是错误的。)

无论如何,我们在开发过程中学习SharePoint。我们的开发主要基于SharePoint设计器,为每个列表定制所有AllItems / NewForm / EditForm / DispForm,以提供客户端要求的所需逻辑/验证(使用JavaScript)。我们还实施了大约15个自定义字段(例如主 - 详细信息字段)。我们还制作了一个事件接收器来处理站点中所有列表的所有添加/更新/删除...事件。加上大约40个ASP.Net用户控件。

我们面临的主要问题(我们解决了这个问题,但遗憾的是效率低下)

1-客户要求在每个AllItems.aspx中搜索Web部件。搜索Web部件应该有多个密钥供客户端搜索。我们使用SPD使用Form Web部件没有问题。但真正的问题是如何搜索当前列表中不存在的相关字段。 (所以,在这种情况下,我们必须在列表中保存这些字段值才能搜索(废话,我知道!!))。你可能会问,为什么你没有为这样的任务实现ASP.Net用户控件?好吧,这将要求我们放弃默认的AllItems网页部分,并且已经定制了AllItems.aspx页面的大量定制,这需要我们花费大量时间从开始重新实现它们。此外,即使我们使用了用户控件,CAML也无法从多个相关列表中检索数据!

2-我认为你可以猜到这一点,如果我们已经面对搜索网络部件的大部分时间,那么它们究竟能够做350个报告!!:D但我们想出了一个解决方法(像往常一样:S)我们创建了一个Access DB文件,其中包含指向所有500个sharePoint列表的链接,然后我们实现了一个具有报表查看器控件的用户控件。此用户控件使用普通的T-SQL查询在Access数据库上进行查询,Access DB从SharePoint DB检索数据并将其传递回用户控件,该控件在报表查看器上查看DataSet。

还有其他与管理相关的问题,但我想关注这里的发展。

所以,在我向你展示了这张照片后(抱歉这篇长篇文章)。您认为我们应该在这样一个以数据为中心的项目中采用哪种最佳SharePoint开发技术,如果有的话?

我听说有些公司在这些项目中根本不使用列表,并且构建了自己的SQL数据库表而不是SharePoint数据库。但我无法让自己不知道,如果我正在创建自己的数据库,从而从头开始实施我的CRUD Web部件(我们也将失去SP列表提供的安全模块优势),那将是什么好处的SharePoint?

我再一次为长篇大论道歉。

4 个答案:

答案 0 :(得分:1)

我想你确切地知道我做了什么。 Sharepoint不擅长处理大型企业类应用程序。我们最终创建了一个自定义数据库来存放我们的数据。我们使用Webparts作为用户界面,但除此之外,整个应用程序独立于Sharepoint。

在我看来,微软正在推销Sharepoint。它实际上擅长团队协作网站和简单的Excel服务应用程序,但除此之外的任何东西都无法处理。

答案 1 :(得分:1)

关于SharePoint对于大型企业应用程序而言,我不得不同意Geoff和Abu的意见。

当你说自己阿布你的团队正在学习工作,因为你没有SharePoint开发经验,你遇到的问题更多是管理错误,平台问题,管理层应该带来SharePoint承包商与你的团队一起工作帮助建立一个相当复杂的系统。

作为一名曾与SharePoint合作过多年的开发人员,我在这个平台上开发的最初几年中,曾经参与过许多我自己认为不适合SharePoint的项目。更多经验我知道如何更好地利用平台的强大功能,并且我意识到使用SharePoint为这种性质的项目所获得的优势。这就是说我在平台的某些部分存在很多问题,但这与我在ASP.Net平台部分工作的任何其他平台没有什么不同。

如果我被要求使用基于Java的定制系统(或者可能是新的MVC平台)开发解决方案,我相信我会遇到许多类似于您所遇到的问题,我根本不知道什么是正确的方法是。这绝不是平台的问题,而是我缺乏经验的问题。

我很遗憾听到你们两人都经历过管理层迫使你们在SharePoint平台范围内工作的痛苦。虽然我很失望你这么快就指责你自己和管理层的责任。

SharePoint是我不能说的项目的最佳平台,但这并不会使它成为企业应用程序的糟糕平台。

答案 2 :(得分:0)

我不同意Geoff的说法,SharePoint对大型企业级应用程序并不好。您必须从一开始就记住SharePoint是一个开发平台。这意味着它可以提供很多开箱即用的功能,但是可以非常自定义。

作为一个平台并不意味着需要根据SharePoint列表完成所有自定义操作。看起来它是基于ASP.NET构建的,您可以在SharePoint中执行任何操作,也可以在ASP.NET中执行。

我构建了大量在SharePoint中托管的ASP.NET应用程序,让SharePoint进行身份验证等。

我不得不说,确定SharePoint应该停止成为你的基础,你应该切换到常规ASP.NET有时很难..

答案 3 :(得分:0)

如果您在SharePoint中寻找以数据为中心的解决方案,最佳解决方案是使用业务数据目录(BDC)。这样可以保存您丰富的数据关系以及所需的所有SQL(或其他DBMS)优点 - 在存储库中设计为存储数据时最佳

有关BDC功能可以执行的操作的概述,请参阅SharePoint团队博客上的this post。有关更多详细信息,请阅读the series on SharePoint Magazine。请注意,这些功能需要SharePoint 2007的Enterprise许可证。