最近,我有一个项目,必须从特定的软件系统中获取一些数据到Portlet。该软件使用一个数据库,我花了很多时间对所需的数据进行建模,然后创建一个Web服务,以便我的Portlet可以获取信息。
然后突然让我感到震惊的是我在浪费时间。我抓起BIRT,将其扔到portlet中,然后编写了一些报告,这些报告直接从数据库中抓取了必要的数据。我在一个下午完成。
我知道报告只是一条路,但这让我思考。报表工具对于根据实际数据创建报表(duh)可能非常有效,但是在执行此操作时,您将绕过模型,除了在简单情况下,该模型不能直接表示数据库中存在的数据。
如果您正在编写数据密集型应用程序,并且需要执行非常规报告的能力,那么您是否绕过了应用程序并使用了BIRT或Crystal Reports之类的工具?在整个流程中,您如何管理这些工具?您是否认为所编写的报告是应用程序的一部分,并将其视为应用程序的一部分?报表是一个 View ,一个模型和一个 Controller (如果愿意)都是一团糟,您如何处理,解释和计划呢?
修订后的问题:报告可能会执行某些业务计算,甚至在您希望包含在应用程序中的完美世界中,这甚至是很常见的。这可能导致返回给用户的信息不匹配。另一方面,报告工具使收集和显示信息变得非常容易,以至于采用纯粹主义者的方法来完成应用程序内部的所有工作非常困难。有什么好的技术可以确保报表中的数据与常规GUI中显示的数据匹配?
最佳答案
我认为报告只是数据的另一个 View ,而不是一个 View /模型/ Controller (当然,也可能是一个 View 和 Controller )。
我们的报表(内置于sql 2008报表服务中)使用应用程序层中的一项服务来获取数据(按照我们的标准,数据访问位于存储库中)。这些功能可以执行简单的查询或处理非常复杂的处理,这对于您的报告环境或存储过程将是一场噩梦。实际上,我们发现这只需要编写一些一次性的存储过程,而这种存储过程随着系统的增长和增长而成为维护噩梦的过程。
将报告视为一次性的报告或不集成到您的应用程序设计中是一个巨大的错误。
关于报告与编码-有何想法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/627614/