ASP.net中报告应用程序的最佳架构(具有动态源)

时间:2009-08-23 04:02:38

标签: c# asp.net-mvc wcf reporting

简单的要求就是这样。

  • 它是一个包含多个视图的图表应用程序(有点仪表板)(图表,PDF和Excel)
  • DataSources主要来自Oracle,但还有其他数据源,如Excel,平面文件......等。

  • 图表库将是组件艺术(我想尝试新的asp.net图表,但因为它已经在其他应用程序中使用,他们希望继续)

正如我告诉过你的,我们已经有了一个应用程序,就像基本的3层,有一些DTO,主要是DataTables;我觉得任何数据模型都与Views紧密结合,他们想继续使用相同的:)

我想为此提出一个新架构,我需要您的诚实评论。

我认为

  1. 它应该使用传统的MVC模式设计,因为有一个模型和不同的视图(图表,excel,pdf)
  2. 具有1)安全性(提供者模型)的Solid Service层(Enterprise Lib)2)数据源抽象(平面文件,oracle,excel)3)缓存(每个报告都有自己的刷新时间,数据/视图可以相应地缓存4)错误记录5)健康监测
  3. 3)使用WCF服务公开视图或DTO

    4)完成AJAX和部分渲染

    5)开发一个可靠的wcfservice,它将采用datamodel名称和视图(chart,excel,pdf然后相应地返回视图。

    请指导我,我想建立一个可以重复使用的松散耦合和可配置的架构。

5 个答案:

答案 0 :(得分:5)

诚实的回答:听起来你要么过度工程,要么不负责任地重新发明轮子

  

我想构建一个松散耦合的   可配置的架构   重复使用。

这是一个可爱的目标,但这是否是这个项目的要求?我猜它不是一个基本要求,最多只是很好用。似乎业务需要一个带有一些可导出图表和报告的仪表板,而你建议构建一个平台。这是经典的过度工程。

如果您真的需要一个可重复使用的平台,那么使用复杂且可训练的创作工具构建一个直观,强大,安全,可测试,可配置,可维护的报告平台需要相当大的精力和技能。

即使您构建了一个完美的平台,您将拥有一个其他人不知道的自定义系统。如果您使用已建立的BI /报告平台,您可以雇用已经了解该技术的人员或指出已经存在的培训材料的人员。

换句话说,构建起来既困难又昂贵,这对于组织在未来几年内的使用来说是糟糕的,但也是困难的和更昂贵的,这更糟糕。我经常选择构建而不是购买,但报告是已知问题,已经被商业平台很好地解决了。

所以,当然,这种架构听起来很合理。并且在不了解更多有关要求的情况下,无法判断:也许您确实需要从头开始构建这个,但是根据您的描述“绘制应用程序(有点仪表板)”,构建报告平台听起来不必要,尽管可能非常有趣。

答案 1 :(得分:0)

我推荐以下书: Dino Esposito Microsoft® .NET: Architecting Applications for the Enterprise; Andrea Saltarello。

他们正在以务实的方式讨论架构(是的,有代码示例)。你提到的很多东西都会在书中描述。您可能无法获得所有答案,但它会激发您的灵感。 (他们也写了一本关于Ajax / ASP.NET arch的书,但我还没有读过那本书)

你想要使用很多新酷技术,这很酷。但最重要的是你为什么要使用它,它会增加什么商业价值?问问自己将来对您的产品有什么要求?为了能够理解今天和明天的要求将是帮助您构建“松散耦合和可配置架构”的最佳选择,它将帮助您选择您所选择的任何技术。

答案 2 :(得分:0)

我的座右铭是在构建之前重新使用之前购买。根据要求,您最好购买COTS BI解决方案。它们具有非常强大的功能集,并且能够执行图表,pdf / excel导出开箱即用的功能。有很多供应商,微软有自己的BI套件。 Oracle有他们的等等......

答案 3 :(得分:0)

考虑使用灵活的报告引擎,如List&Label ,SAP也使用它。也许使用某种ETL工具+数据仓库也可能是你的选择(尽管你的要求不够充分)。也许到目前为止你还没有观察到数据源中存在某种共同模式。

List& Label非常强大,但我从未在网络应用中使用过它。使用简单的AnnonymousTypes抽象您的DataSources,然后将它们转换为DataSet,并使用List& Label完成其余工作,这对我来说非常适合于许多小任务。有关可以帮助您的工具,请参阅modelshredder

答案 4 :(得分:0)

我认为你可以建立一个灵活的松散耦合架构。它实际上非常简单。创建一个包含所有报告SQL的表,并将结果绑定到gridview。通过类别和报告的下拉菜单从表中提取单个SQL。您可以添加带有子选择的其他表来向下钻取并在行选择时重新绑定。使用Oracle数据访问中的参数包括前端可能存在的任何控件的日期,过滤器等。

动态绑定和显示数据后,为用户提供通过电子邮件发送网格内容,导出为PDF,Excel等的选项。

我已经实施了这个@ 2客户端网站,它为他们节省了大量资金,从Crystal,MS等购买许可证,并且更加灵活。