对比版本 | FineReport V8.0 和润乾报表 V5.0 |
资料来源 | 官方资料和实际操作 |
对比时间 | 2017 年 9 月 4 日 |
选型目标 | 仅针对固定报表部分 |
多年以来,我们经常被客户询问关于润乾报表与帆软报表的不同之处,对此我们的态度一直是避而不谈,因为从心底里不愿意去做这样的对比,我们坚信“你若盛开,清风自来”,也一直在秉行只说自己好,不去评判竞争者好坏的商业原则。如果客户在面对选型时有所纠结,我们都是建议客户自己去对比选择并积极配合。但是现在这样的客户反馈越来越多,而且确实有许多客户对报表工具不熟悉,不知道在选型时该对比哪些内容。另外,市场上长期以来充斥着一些倾向性非常明显、内容却很片面且与实际不符的对比材料,其编造者也不敢署名,这些错误的材料误导了客户对报表市场的感知能力。因此,不管是客户需求,还是市场需要,还是自我澄清,我们现在都有必要做个回应。下面对两种产品进行了详细测评,并整理汇总出文档供业界参考。我们力求做到客观公正,但由于对友商的产品不是非常熟悉(我们的精力更多的是研究客户需求,而不是竞争者),因此难免有错,敬请广大业内人士指正,特别是敬请友商指正。
润乾报表和帆软报表都是国内知名的报表解决方案供应商,两者的共同特点都是类 Excel 的纯 Java 的 Web 报表工具,但在技术细节和发展方向上存在差异。
本文主要考察这两款报表工具在制作固定报表时的差异。固定报表是指由报表开发人员预先定义好报表样式、取数规则、查询条件、业务逻辑等,报表的使用人员仅在 Web 端进行报表的查看,不涉及报表结构的修改。固定报表是业务系统中最常用的、开发工作量最大的任务,其制作方便性及能力对项目开发周期有很大的影响。另外,由于固定报表主要是在应用程序中使用,其集成性也是非常重要。本文将对这些方面进行客观的测评。
既然润乾和帆软都是类 Excel 的设计模型,那么我们先来看看二者对 Excel 的支持情况。对 Excel 的支持从以下几方面进行:
1.1.1 设计器打开 Excel 文件
在设计器中可以直接打开 Excel 画好的表样,无疑可以减少重复绘制表格的工作量,润乾和帆软都可以在设计器中直接打开 Excel 文件,但是润乾报表打开的 Excel 看起来跟原始 Excel 字号略有差异,这是因为微软跟 JAVA 的标准不一致造成的,但是再导出成 Excel 字号还是一样的;帆软不支持表格中文字右对齐,需要在设计器中手动调整对齐方式才能跟 Excel 保持一致。其余属性,例如字体,前景色,背景色解析的无差别。
1.1.2 对 Excel 的公式支持
对于常用的公式,例如求和、求平均值、最大值和最小值、获取当前日期。润乾报表都不支持 Excel 的用法,需要简单修改函数参数,符合润乾的语法才可以;帆软无需修改函数全部支持。
1.1.3 复制粘贴 Excel 的内容
从 Excel 中复制任意一片区域,粘贴后润乾报表和帆软报表都可以原样展现在设计器表格中,无差别。
报表工具的主要作用就是制作报表,刚才也提到润乾和帆软都采用类 Excel 的设计模式,下面主要测评一下润乾和帆软的制表过程和难易程度。
润乾报表
制作报表的第一步就是数据连接,润乾报表支持 JDBC,ODBC 以及 JNDI 三种数据连接方式。常用的关系型数据库都支持用 JDBC 方式连接,用法也简单,只需要把相关 jar 包放在指定目录下,选择相应的驱动,配置 URL 和用户名、密码即可;而 ODBC 方式则需要在系统的 ODBC 数据源管理中先进行配置,再通过设计器的 ODBC 数据源界面选择匹配即可;而 JNDI 数据源则需要在配置文件中设置 JNDI 前缀与相应要连接的数据源 JNDI 名字相同即可。
有三种制表方式:第一种报表的制作方式最简便,可以由向导引导完成,包括从数据集制作到列表、分组、交叉三类报表的取数、展现,全程根据向导引导完成;其次,如果对润乾的语法等比较熟悉,可以抛开向导,用拖拽字段到指定单元格的方式制作报表,这个时候可以制作出的表样就不仅仅局限于三类报表而制作出更多更复杂的报表;第三种方式比较适用于开发人员,抛开一切辅助手段,手动输入表达式及各中参数,这种方式可以将每个表达式的设计功能发挥到极致。
制作报表过程中,鼠标放在每个单元格上,设计器最下面一栏会显示该单元格的所有属性,并且在调试报表阶段,可以从设计器的控制台查看报表运行时的日志,对调试复杂报表的表达式写法有很大的帮助,如下图:
报表制作完成后,润乾报表提供了“添加到样式”的功能,类似于 Excel 的格式刷的功能,可以有效减少统一单元格之间样式一致性的重复性工作,如下图:
润乾报表支持在设计器中预览报表并输出为 Excel、Word 等常用格式文档,不是一定要在 Web 端预览后才能输出报表,如下图:
帆软报表
对于数据连接,帆软报表支持 JDBC 方式和 JNDI 两种连接方式。用法也比较简单,配置驱动,URL 以及用户名、密码即可。但是帆软报表支持在数据源连接界面直接设置数据库连接池的相关属性,无需再去配置文件中设置,这点比较方便。
有两种做表方式:第一种方式是通过字段拖拽到指定单元格的方式制作报表,但是支持字段的批量拖拽,可以选择批量选中的字段的布局方式,函数所涉及的所有功能都可以通过点选的方式启用,但拖拽到单元格中的表达式就不支持手动更改相关参数选项;第二种方式是手动输入表达式,完成函数嵌套等一些复杂用法。
帆软报表从报表模板中很难看出报表的制作过程,不能一眼看明白每个单元格设置了哪些属性,在报表调试过程中,没有明细日志,对于报表开发人员来说函数和调试过程完全是封装起来的,不知道具体执行过程,调试时就麻烦许多。
帆软报表在报表制作完成后的报表美化过程也提供了“样式”属性并且自带了样式库,而且样式多种多样,不过真正想用这个库里的样式,一定要仔细认真,不然容易选错,因为太多了,而且挨得比较近。如图:
帆软报表不提供在设计器预览报表的功能,只能以分页模式、填报模式或分析模式在 Web 端预览及输出报表。
润乾报表中可以选择自带的统计图或第三方图形两种方式。双击单元格中统计图,弹出统计图相关属性定义面板,点击确定后即可预览到相应效果。而添加第三方图形,则需要写相关 JavaScript 代码完成第三方统计图调用,用法没有自带统计图简单,但展现效果更炫。
帆软报表支持自带的图表和集成第三方图表两种方式,单击图表,右侧即可设置图表相关属性,包括数据来源、图表交互、热点链接等功能,有点扁平化设计的影子。至于展现效果,要比润乾自带的统计图炫酷。如果用第三方图表,要写自定义类,用法复杂。
润乾报表不直接支持远程设计报表,因为产品的定位是中间件,不能假定用户应用后台资源的权限和管理规则,甚至不能假定一定有后台,不适合提供这种能力。润乾开放了设计器的 API 接口,有需要的话可以根据实际需求自行开发,不过开发起来确实不是很简单。如果想用现成的也有办法,接上润乾报表中心,登录远程服务,就可以远程设计报表了。
帆软报表采用了三层架构技术,而且本身有完整的报表管理功能,这样就可以让用户通过远程设计模式,在本地设计远程发布模板,并直接对服务器端报表文件编辑更改。多个报表制作人员可通过远程设计器连接到同一个报表运行环境,达到多人协同办公的目的。不过,管理后台只能使用产品中固化的资源权限管理规则,项目组开发时问题不大,但实际上线系统中用于维护报表的可行性不高。
中国式复杂报表的特点是:格式复杂、信息量大、计算麻烦。润乾首先提出了非线性报表数学模型用于解决中国式复杂报表,帆软随后跟进也采用了这一模型。下面从几方面看一下两款产品对非线性报表模型的支持情况。
2.1.1 多源分片
两款报表工具都能很好地支持多数据源。
润乾报表可以通过可控性极强的函数完成横向分片,纵向分片,多片变动、动静结合以及跟随主记录自行扩展重复的明细表。
帆软报表也可以实现多源关联分片,但当横向数据较多,web 端不支持以浏览的模式在一页展示,只能以填报模式或分析模式在一页浏览。
2.1.2 动态格间运算
润乾报表对于运算后报表数据项有很好的命名机制,可以精确描述数据引用关系,同时,单元格层次做表与相关格集,可以对扩展后的每个单元格或格集进行精确命名,从而对占比、累计、同期比、环比、按条件汇总、排名、组内序号、组间序号等复杂问题可以轻松实现。
帆软报表基于格子界面中数据扩展的特性,即设计界面与返回数据一对多的关系,提供了一整套运算体系,用于扩展后数据的定位与相互引用计算,可以实现占比、同期比、环比、排名、组内序号、组间序号等。
润乾报表和帆软报表在这一点,不管是数学模型,调用方法还是实现的功能几乎一样,没有太大差别。
2.1.3 行列对称
润乾报表具有天然行列对称特性,行方向拥有的数据扩展能力在列方向也都有,所有报表均在统一的处理模型下完成。
帆软报表列方向能力弱于行方向,稍微复杂点的交叉表无法实现,只能使用子表。例如:有两片分组层数不同的变列区域和几个固定的计算列混合的报表。
2.1.4 不规则分组
润乾报表支持的不规则分组类型有:按段分组:类似于价格区间、年龄区间这种可以穷举出来分组规律的;归并分组:类似于某些产品可能不属于既定的任何一种归类而被归入其他类的;重叠分组:分组后,又需要对该组中重点客户单独分组汇总的。这三种常用的不规则分组,只需要调用相应函数就可以实现,很方便。
帆软报表支持的不规则分组类型有:按段分组:类似于价格区间、年龄区间这种可以列举出来分组规律的;相邻连续分组:数据库表数据是按照时间先后录入的,查询的时候希望按照时间先后,某个字段连续相同的话就合并起来显示;归并分组:类似于某些产品可能不属于既定的任何一种归类而被归入其他类的。帆软不支持重叠分组,但是提出了另一个不规则分组 - 相邻连续分组。
润乾报表直接支持多种数据来源,包括传统的关系型数据库,文本数据集、内建数据集、和 Java 自定义数据集等。接上润乾集算器后还可以支持更多的数据源,如 json/XML、HDFS/Hive/HBase、MongoDB,HTTP、Redis、阿里云等。
帆软报表支持的数据源包括关系型数据库、文本数据源、多维数据库、NoSQL 数据库、json 数据源、SAP 数据源以及程序数据源。
润乾报表支持单表式、引入式和嵌入式三种方式的子报表,并且支持不限嵌套层数的子报表。由于嵌入式子表是将子表缩放到主表某单元格的大小,当子表很大时,嵌入到主表可能会出现显示不全或被缩放的很小的情况,这种情况适用于引入式子表,不用主表单元格大小限制子表的大小。
帆软报表支持单表式和嵌入式两种方式的子报表。值得一提的是帆软的聚合报表,类似主子表,但除了可以添加子表,还可以添加统计图,多个子表之间的扩展不相互影响,应该可以解决嵌入式子表的问题。
润乾报表的行类型分的很细,有分页页眉、头标题、报表头、分组表头、数据区、报表尾、尾标题、分页页脚,设置好行类型,就可以实现 web 页面固定表头,分页后表头重复等功能,很方便。
帆软报表的行类型只有页眉和页脚可以设置,如果要在页面固定表头或分页表头重复需要选中相应行单独设置。
润乾报表支持树形折叠报表和 OLAP 折叠报表两种,且用法简单,只添加一个标签无需报表做过多设置。
帆软报表支持折叠树和行列双方向的折叠树,制作折叠树报表,首先要单独新建树数据集,需要在数据集中包含父节点和子节点同时还要添加条件属性,将空数据隐藏,否则折叠树会不规则。至于双方向折叠树用法更麻烦,需要自己写 JavaScript 方法实现。
润乾报表支持自带统计图和第三方统计图两种方式,提供了多一种的选择空间。自带的统计图类型主要是常规图表,例如:饼图、柱图、线图、雷达图、甘特图、工字图、时间走势图等,其他类型统计图可以用第三方统计图插件实现,例如气泡图、股票图、词云等。同时,润乾自带的统计图支持统计图标题、系列标题等的动态变化,即标题中可以接收参数。
从文档和宣传材料上看,帆软报表看起来仅支持自主研发的统计图。自带的统计图除了支持常规饼图、柱图、线图、雷达图、甘特图、工字图、时间走势图以外,还支持散点图、圆环图、气泡图、地图、GIS 地图、树图等统计图类型。并且在交互性方面比较突出,例如自动刷新、在线切换统计图类型、数据提示、自定义标签、高亮交互、坐标轴缩放以及多个统计图之间的联动等功能,设置简便,效果炫酷。
润乾报表支持通过超链接的方式给不同报表和图表之间传递参数,从而实现数据从宏观到微观的分析过程。
帆软报表支持多级超链接,一个单元格定义多个超级链接,即在报表展现时,可以同时提供多个选择供数据钻取。
润乾报表支持普通参数和动态参数两种形式。即如果只是想通过输入不同值而查看不同结果或通过不同用户登录后查看不同结果时,使用普通参数在 sql 里设置参数,在数据集或单元格里接收参数即可。当然,参数的个数可以是多个,参数的输入形式也不仅仅局限于文本框。而如果需求是想通过一个表达式去判断参数值,就要使用动态参数。用法和界线鲜明易懂。
润乾报表还支持一种特殊的参数叫宏,它是没有数据类型限制的字符串标识,宏也分普通宏和动态宏两种。同样的,普通宏的用法类似普通参数,可以被用于 sql 语句中或者单元格中进行宏名的原样替换宏值;而动态宏则有一个很强大而实用的功能,因为它没有数据类型限制,它可以被用在 sql 语句里,动态判断 sql 的执行范围等。
帆软报表支持将参数定义在 sql 语句的任意位置以达到筛选的目的,即在定义参数时,不用管参数类型,参数是静态还是动态,全部都可以在 sql 语句里统一处理。不用预先设置参数类型虽然方便,但用的时候却不太方便。例如要想实现最简单的参数为空时,查询全部数据的功能,就需要在 sql 语句里写一堆 if 判断去做。写出来有点繁琐,SELECT * FROM 订单 where 1=1 ${if(len(area)==0, “”,”and 货主地区 =’”+area+”‘”)} ${if(len(province)==0,””,”and 货主省份 = ‘”+province+”‘”)},而用润乾报表实现同样功能的 sql 语句写法为:SELECT * FROM 订单 where (@area==? Or ? is null) and (@province==? Or ? is null)
这里不得不说的是,帆软报表在这方面是有安全隐患的!这不是站在竞争者角度上评说,而是一个专业技术人员的态度。拼 SQL 串解决查询灵活性的方案,轻则可能出错(比如参数值中有引号时就会拼出不能执行的 SQL,日期型常数在不同数据库下写法不同也容易导致错误),重则会被利用为 SQL 植入,泄露数据库中的关键信息,这一向是数据库开发人员很忌讳的地方。事实上,像润乾一样实现成 SQL 参数的方式并不难,我们不明白为什么帆软公司没有这么做,却在文档中到处推荐这种拼 SQL 串的方法。拼 SQL 串的方案并非不能用,润乾报表中也提供有宏,但原则上是尽量少用,而且必须有经验的程序员很小心地使用。大量推荐使用,特别是由缺乏安全经验的报表开发人员使用,将大大增加 SQL 植入的风险,后果将很严重。从这一点可以看出帆软公司的程序员对企业级应用的意识比较淡薄。我们在这里提醒帆软公司,如果已经提供有 SQL 参数方案(我们不确定是否真地有)则立即向客户说明,并在文档中的显著位置加以提示,如果没有则立即补上并向客户发出产品召回通知,同时都要求客户修改开发方法,这才是对客户负责的态度。
润乾报表支持三种打印方式,Applet 打印、Flash 打印和 PDF 打印。具体支持的打印的功能点包括:分页打印,缩放打印,套打,静默打印,直接打印,批量打印,保存客户端打印设置以及打印预览时是否可以修改数据等功能。
润乾报表支持除标准 HTML 外,以文件的方式将报表导出,支持导出的格式有:Excel,PDF,Word,RAT 文件(润乾报表自有的文件格式,主要用以保存报表运算后的结果),同时开放相关 API 接口,允许用户继承接口自定义导出其他格式的文件。这里需要强调的一点,润乾报表支持 WORD 报告类报表,即可以把报表、报表中某一单元格、统计图等报表中的元素生成到 word 文件中,形成 word 报告类报表,此功能避免了传统方法中用类 Excel 设计器绘制 word 报告时采用大量隐藏格的麻烦,效率更高,也更方便。
帆软报表支持的打印方式也是三种,Applet 打印、Flash 打印和 PDF 打印。支持的打印的功能点有:分页打印,缩放打印,套打,静默打印,偏移打印,批量打印,自动选择纸张和方向打印等。
帆软报表支持的报表导出格式包括:PDF,Word,PDF,TXT,SVG 以及图片格式。同时,帆软报表支持通过 API 接口实现将报表导出为内置数据 CPT、CSV 等其他格式文件。
润乾报表的定位是中间件,所以集成性非常好,对于 Web 应用集成,只需要引用十几个相关 jar 包和必要的配置文件即可,用户页面可以使用 tag 标签来嵌入报表,非常简单。后台服务只有报表计算的相关程序,没有其它外围内容,tag(本质上是 API)方式也能确保性能和功能不损失。
帆软报表本质上是个报表应用系统,需要用 URL 方式把报表集成到用户页面中,也不是很麻烦。但过程需要引用的 jar 包和配置文件很多,还会自动启动用户资源管理等相应的服务程序,消耗服务器资源。URL 方式会降低性能,且有些类型的数据无法传递。
润乾报表定义了丰富的 API 接口,供程序员调用,从而对报表服务器进行深度完全控制。在 API 结构上可以分成三个层面,数据层、运算层和展现层,每个层面都有开放的接口允许程序员调用和重载。
帆软报表只开放了少量接口供程序员调用,包括数据源接口、前端展现相关接口、报表再处理接口以及自定义函数接口,无法实现一些深入的客户定制化的功能。
润乾报表支持通过 JAVA 自定义数据源,并在报表中通过直接调用编译好的类文件的形式访问数据。
帆软报表也支持 JAVA 自定义数据集,调用方法也是直接调用类文件的形式。
值得一提的是,润乾新出了集算器产品,可以用于实现更复杂高效的数据源运算。润乾报表可以和集算器深度集成,获得最高性能和完整功能。当然,帆软报表也可以通过自定义数据接入集算器,不过只能使用集算器的公开接口,某些深入功能无法支持,性能也会有损失。
润乾报表支持小流量的 HTML5,统计图支持 SVG 等移动端输出格式,保证报表和统计图可以在移动端展现并且集成到 APP 中更简便,集成度更高。但由于面向集成,所以没有提供现成的 APP,这需要用户方自行开发,难度不是很大。
帆软报表全线产品提供了移动端 APP,展示方案采用 HTML5 方式,具有良好的交互体验,但是现成的 APP 和用户的 APP 没有办法集成在一起,如果要用自己的 APP,那还是 WEB 集成的方案,如前所述,这时就不如润乾报表轻爽简单了。
润乾报表对于多数据源对齐采用的是 Hash 算法,复杂度由平方级降为线性级,通俗的讲,就是在做多数据源连接时效率更高。做了个简单的例子,三个数据表之间的关联,用润乾报表的常规 sql 数据集,从取数、计算到展现,只用了 2 秒。
帆软报表对于多数据集的连接,用的应该是遍历的方式,从展现效率上得出的以上结论,同样是三个数据表之间做关联,用帆软报表的数据库查询方式作为数据集,从取数、计算到展现,用了 8 秒。
在 1G 内存下,润乾报表普通报表机制下可以支持到 800 万左右单元格,清单式列表一页 30 行,页面可以支持到 266667 页,耗时 1 分 54 秒;交叉报表按一行 2000 列,一页 56 行,web 端分 44756 页,耗时:47 秒;帆软报表在同样的环境下,清单式列表最多支持到 600 万左右单元格,按一页 56 行,页面支持到 89286 页,耗时 1 分零 34 秒;交叉报表最多支持到 200 万左右单元格。一行 1000 列,web 端分 4032 页,耗时 1 分 25 秒。
200 万 | 600 万 | 800 万 | ||
润乾报表 | 清单式列表 | 1 分 01 秒 | 1 分 54 秒 | |
交叉报表 | 7 秒 | 47 秒 | ||
帆软报表 | 清单式列表 | 1 分 34 秒 | 内存溢出 | |
交叉报表 | 1 分 25 秒 | 内存溢出 | 内存溢出 |
另外,对于海量数据的清单报表需要逐步分页呈现,润乾报表提供了一个大报表机制,通过不断的分批取数存到临时文件里,用外存换内存的思路提升大数据量报表的预览速度,且保证不会溢出。不过这个功能需要集算器的支持。
帆软报表对于海量数据的性能优化没有很好的解决方案,而是通过 FineBI 的 FineIndex 引擎,给数据建模,或者 FineDirect 引擎,直接对数据源进行自助取数分析。
实测结果,统一在 Intel(R) Core(TM) i5-320M CPU@ 2.50GHz /4GRAM 的 PC 机上,100 万条源数据,显示结果约为 10 万单元格,润乾报表响应时间为 8 秒;帆软报表响应时间为 16 秒(两个测试结果都是除去 JDBC 读数的结果)。
实测结果,统一在 Intel(R) Core(TM) i5-320M CPU@ 2.50GHz /4GRAM 的 PC 机上,每用户生成 200 万单元格报表,100 用户并发访问,润乾报表平均响应时间为 10.126 秒,全部成功;帆软报表平均响应时间为 1 分 45 秒,17 次失败。
润乾报表采用类 excel 的设计模式,默认支持 10 行 10 列的报表设计区域。设计器采用“左 - 中 - 右”的界面布局,左边是报表资源树,中间是报表设计区域,右边是外部属性面板和数据集操作面板。整个界面风格相对比较传统。
帆软报表采用类 excel 的设计模式,报表设计区域无限行、列,设计器也采用“左 - 中 - 右”的界面布局,左边是数据操作类面板,中间是报表设计区,右边是外部属性和内容设计面板。
润乾的统计图美观度跟帆软的统计图不在一个 level 上,所以润乾集成了第三方统计图来解决美观度的问题。
帆软报表原生统计图采用自主研发的 HTML5 图表,包含十五种图表大类和五十余种图表样式,支持的统计图种类多是一方面,另一方面储备了一些行业方面的经验和相关案例,所以在页面上的效果显得更好。
综上所述,就润乾报表和帆软报表的差异简单总结一下:
报表制作方面,帆软的界面更美观时尚,且封装了各种现成的管理功能,使用上手更容易些。而润乾的界面有些老旧,几乎没有提供管理和语义类功能,更像是面向专业人员的,上手难度略大一些。
从功能性来看,虽然都能做出各种复杂报表,但是润乾首先提出了非线性报表模型,彻底解决了中国式复杂报表的大部分问题。帆软随后跟进,虽然在细节和效率上还有点距离,但是已经可以做到形似了。
对于集成性,润乾在 web 页面嵌入和开放的 API 接口等多方面都体现出了它易集成的特点;而帆软则是一体化的平台,集成过程中会增加许多额外的功能模块,固定化的体系结构在复杂的企业级应用环境下的集成显得更为复杂。
在性能方面,润乾有很大的优势,尤其是容量,不管是清单式列表还是复杂格式交叉报表,都是润乾的强项,帆软则不太擅长大容量复杂格式报表,数据量稍大,就容易内存溢出。
美观性方面,帆软表现出众。从自主研发的 HTML5 的统计图到预定义的报表样式,都可以实现快速制作出满足终端要求的“好看的”报表的需求。而润乾则需要配备一名相对专业的美工去完成报表开发完之后的美化工作。
整体来看,润乾报表的内核技术含量更高,开放性好,技术细节考虑得很周全,可以适应各种复杂应用环境,但外围易用性则为了保持功能性和开放性而做出了牺牲,美观度上下的功夫也不多;帆软报表产品内核一般,开放性不够好,对复杂环境适应性也不强,但是外围易用性功能更出色,上手容易,在美观度上投入很大。
最后,总要有些针对选型的建议性意见了。
润乾更适合于技术能力强、应用环境复杂程度高的集成商客户,需要相对专业一些的程序员来使用,基于它的开放能力实现一些有本行业特色的补充组件(如各种图形)则会效果更好,长期大量使用时,入门难度略大的问题对于熟练工也不是问题;而帆软则更多的降低了报表工具的技术门槛,让技术能力不是很强的人员也能快速制作报表,且美观易用,适合于报表需求相对简单,环境复杂度低,但对美观度要求高的短期应急场景,长期使用则总会碰到一些功能或性能上很难解决的问题,增大应用成本。
打个比方说,润乾更像是功能齐全但使用略复杂的单反相机,而帆软像是功能简单但使用也简单的傻瓜相机。不过现在这两款产品的价格却恰好相反。
链接:http://c.raqsoft.com.cn/article/1534919037847
来源:乾学院