`
lgx522
  • 浏览: 124505 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

RoR要在企业领域成功,必须过实时性这一关

 
阅读更多
最近在弄RoR,几乎也快成Java的叛徒了。
谁让RoR做Web+DB就是Easy呢?一个字,爽。

由于本人的工作实际上是在医疗行业做系统维护的,工作时间成天面对的是那些个讨厌的PB程序。有的时候就在琢磨,什么时候能不能有公司也用Java或RoR做一套完整的HIS,来取代这些个五花八门、乱七八糟的C/S程序,达到信息资源整合的目的。
前阵子见某公司用C#搞过一套,还是很成气候的。不过本人对MS早已敬而远之了,加之实际看下来,性能不过了了,才知道.NET的后台处理能力是不如Java。

医疗行业的业务系统,对实时性要求很高,这是导致技术上过时的C/S系统继续垄断的重要原因。尤其像门诊相关的系统,几个延时下来,操作人员恨不得把机器扔了。PB这类C/S技术做的系统,代码设计之烂惨不忍暏。从长远看来,极难维护和扩展,重用则基本不可能,但眼前的实时性还是满足的。所以,当前医疗行业的信息系统,普遍存在着这样的尴尬局面。

曾经考虑过以Java作为解决方案,即业务操作为主的部分采用Swing或Applet作界面,查询为主的部分采用Web。这种方案最适合的技术无疑是被打入冷宫的EJB(不得不说,EJB一开始就把桌面程序和Web并重,的确是深知企业的需求,企业的业务系统的确不是当前Web的实时性能够满足)。Spring做后端是比较简单,可惜一上来就是冲着Web去的,RCP并不成熟。
这几天开始接触EJB3了,发现比以前简化得多了,不知能不能满足以上需要。这个问题请有经验的同道们一起讨论。
前些天看一些同道用Java后台+WebService+WinForm做前端,本人实在觉得不妥。其实Swing开发起来及运行速度不比WinForm慢多少。结合RMI比WebService快多了。看来自从倒EJB运动以来,大家对EJB以至于Sun的官方技术几乎形成了一种歧视,这完全是没有必要的。Sun以前的技术在重量级领域非常之优秀,只是大家大多数情况用不到。现在开始着手经量级了,大家还是应该尊重一下。

RoR做Web那是没得挑了。可惜企业业务系统的实时性要求就如游戏,稍微慢一点就爽不了。即使用现在流行的Ajax,开发起来繁得很,最后的速度和C/S还是差几个数量级。这样的程序拿到企业,最终还是很难说服领导,因为领导们不关心你用什么技术,他只关心能不能更好更快地解决问题。
所以建议JavaEye的诸位同道,不要成天盯着Web。说实在的,internet领域容不下那么多的就业人员,也淘不出那么多金。
解决企业的实际问题,当是大家未来的前途所在。
建议JavaEye同仁多在RCP下些功夫。

最后说到RoR,如果它能够很好地解决实时性问题,即一方面是表现层的响应速度,一方面是高并发访问的容量,那么我们大家真有必要把它引入企业。
分享到:
评论
56 楼 xiaoyu 2007-05-29  
ray_linn 写道
xiaoyu 写道
ray_linn 写道
xiaoyu 写道
每个实时系统是有一定的响应范围的, 楼主也没有说错什么.

关于type-ahead(输入提示), 不知道大家有没有做过测试, 大部中国的网站实现(例如新浪的股票查询等), 在firefox下, 输入中文, 会没有反应(与中文输入法有很大关系). 发现Google的实现是比较另类的, 不用监听键盘键入事件, 不过也不是支持所有的输入法(算是比较完美的了).



一个词只用来表达一种情况,又不是武侠小说,一会就出现万年金蟾一会就出现天山雪莲.

Real-Time,这么专有的名词有什么好狡辩di.


我只想说任何东西都有它的范围, 像儿童这个词. 儿童也有它的范围, 只要是6岁以上14岁以下的人.

实时也是这样, 有一些系统需要在0.00000001秒作出反应, 有一些只需要在0.0001秒. 但对于我们来讲都可以说是实时的. 像java可以做实时系统, 那是因为它可以做一定范围内的.


他题目根本将的不是java,是界面...鹅的神呀


明白.
55 楼 ray_linn 2007-05-29  
xiaoyu 写道
ray_linn 写道
xiaoyu 写道
每个实时系统是有一定的响应范围的, 楼主也没有说错什么.

关于type-ahead(输入提示), 不知道大家有没有做过测试, 大部中国的网站实现(例如新浪的股票查询等), 在firefox下, 输入中文, 会没有反应(与中文输入法有很大关系). 发现Google的实现是比较另类的, 不用监听键盘键入事件, 不过也不是支持所有的输入法(算是比较完美的了).



一个词只用来表达一种情况,又不是武侠小说,一会就出现万年金蟾一会就出现天山雪莲.

Real-Time,这么专有的名词有什么好狡辩di.


我只想说任何东西都有它的范围, 像儿童这个词. 儿童也有它的范围, 只要是6岁以上14岁以下的人.

实时也是这样, 有一些系统需要在0.00000001秒作出反应, 有一些只需要在0.0001秒. 但对于我们来讲都可以说是实时的. 像java可以做实时系统, 那是因为它可以做一定范围内的.


他题目根本将的不是java,是界面...鹅的神呀
54 楼 xiaoyu 2007-05-29  
ray_linn 写道
xiaoyu 写道
每个实时系统是有一定的响应范围的, 楼主也没有说错什么.

关于type-ahead(输入提示), 不知道大家有没有做过测试, 大部中国的网站实现(例如新浪的股票查询等), 在firefox下, 输入中文, 会没有反应(与中文输入法有很大关系). 发现Google的实现是比较另类的, 不用监听键盘键入事件, 不过也不是支持所有的输入法(算是比较完美的了).



一个词只用来表达一种情况,又不是武侠小说,一会就出现万年金蟾一会就出现天山雪莲.

Real-Time,这么专有的名词有什么好狡辩di.


我只想说任何东西都有它的范围, 像儿童这个词. 儿童也有它的范围, 只要是6岁以上14岁以下的人.

实时也是这样, 有一些系统需要在0.00000001秒作出反应, 有一些只需要在0.0001秒. 但对于我们来讲都可以说是实时的. 像java可以做实时系统, 那是因为它可以做一定范围内的.
53 楼 gigix 2007-05-29  
xiaoyu 写道
每个实时系统是有一定的响应范围的, 楼主也没有说错什么.

关于type-ahead(输入提示), 不知道大家有没有做过测试, 大部中国的网站实现(例如新浪的股票查询等), 在firefox下, 输入中文, 会没有反应(与中文输入法有很大关系). 发现Google的实现是比较另类的, 不用监听键盘键入事件, 不过也不是支持所有的输入法(算是比较完美的了).

监听键盘事件是非常弱智的做法……你要是在Selenium项目里工作过,考虑7种不同浏览器的兼容性,你就知道了。
52 楼 ray_linn 2007-05-29  
xiaoyu 写道
每个实时系统是有一定的响应范围的, 楼主也没有说错什么.

关于type-ahead(输入提示), 不知道大家有没有做过测试, 大部中国的网站实现(例如新浪的股票查询等), 在firefox下, 输入中文, 会没有反应(与中文输入法有很大关系). 发现Google的实现是比较另类的, 不用监听键盘键入事件, 不过也不是支持所有的输入法(算是比较完美的了).



一个词只用来表达一种情况,又不是武侠小说,一会就出现万年金蟾一会就出现天山雪莲.

Real-Time,这么专有的名词有什么好狡辩di.
51 楼 xiaoyu 2007-05-29  
每个实时系统是有一定的响应范围的, 楼主也没有说错什么.

关于type-ahead(输入提示), 不知道大家有没有做过测试, 大部中国的网站实现(例如新浪的股票查询等), 在firefox下, 输入中文, 会没有反应(与中文输入法有很大关系). 发现Google的实现是比较另类的, 不用监听键盘键入事件, 不过也不是支持所有的输入法(算是比较完美的了).
50 楼 抛出异常的爱 2007-05-29  
又没讨论his,
只是说说企业领域。。。。

PS:我也不看好Ruby的企业扩展。
49 楼 yananay 2007-05-29  
讨论的没什么意思,因为讨论的人里面,大部分都没做过HIS。。。
48 楼 ray_linn 2007-05-19  
clamp 写道
ray_linn 写道


任何依靠人工输入的数据,都有一定的hit rate,因为人自身的记忆能力就是有限的,这是我的设计的依据。从新回到药品吧,一个科一天开的药品和检查,一定是某个大集合的小子集,所以一定能设计出一种类似cache的模式来提高响应速度。

你说的是最坏的情况是影响大,但发生率低的。


对于某一些特定岗位的工作人员,会面临从数万乃至数十万的列表中快速输入某个值的要求。
虽然可以通过树型展开,但是速度就达不到要求。

所以比较常见的设计做法就是用户输入前几个数字或字母,在下拉列表中即时刷新可选择项,其实和google目前的搜索效果差不多。

但需要注意的是google返回的结果列表只有5个,因为它不需要把所有满足条件的结果都列出来.

但是在企业应用中,应当把所有的结果都列出来,这样下拉列表中的值都有数百乃至上千项,而且要让用户感觉不到延迟.





偶只能说具体事情具体分析, 这个当然有. 业务就是技术,技术就是业务,业务不熟,就常常过度设计.

其实就是ajax,内网里才有多少延迟..10ms吧
47 楼 抛出异常的爱 2007-05-19  
clamp 写道
ray_linn 写道


任何依靠人工输入的数据,都有一定的hit rate,因为人自身的记忆能力就是有限的,这是我的设计的依据。从新回到药品吧,一个科一天开的药品和检查,一定是某个大集合的小子集,所以一定能设计出一种类似cache的模式来提高响应速度。

你说的是最坏的情况是影响大,但发生率低的。


对于某一些特定岗位的工作人员,会面临从数万乃至数十万的列表中快速输入某个值的要求。
虽然可以通过树型展开,但是速度就达不到要求。

所以比较常见的设计做法就是用户输入前几个数字或字母,在下拉列表中即时刷新可选择项,其实和google目前的搜索效果差不多。

但需要注意的是google返回的结果列表只有5个,因为它不需要把所有满足条件的结果都列出来.

但是在企业应用中,应当把所有的结果都列出来,这样下拉列表中的值都有数百乃至上千项,而且要让用户感觉不到延迟.



只有胖客户端才能达到数万-数十万的列表需求。。。
B/S又不是神。。。
有个一百左右cookies就受不了。。
46 楼 clamp 2007-05-19  
ray_linn 写道


任何依靠人工输入的数据,都有一定的hit rate,因为人自身的记忆能力就是有限的,这是我的设计的依据。从新回到药品吧,一个科一天开的药品和检查,一定是某个大集合的小子集,所以一定能设计出一种类似cache的模式来提高响应速度。

你说的是最坏的情况是影响大,但发生率低的。


对于某一些特定岗位的工作人员,会面临从数万乃至数十万的列表中快速输入某个值的要求。
虽然可以通过树型展开,但是速度就达不到要求。

所以比较常见的设计做法就是用户输入前几个数字或字母,在下拉列表中即时刷新可选择项,其实和google目前的搜索效果差不多。

但需要注意的是google返回的结果列表只有5个,因为它不需要把所有满足条件的结果都列出来.

但是在企业应用中,应当把所有的结果都列出来,这样下拉列表中的值都有数百乃至上千项,而且要让用户感觉不到延迟.



45 楼 shaucle 2007-05-19  
楼上的都是king of night?
44 楼 drinkjava 2007-05-19  
企业应用访问量不大、对界面美观没有什么要求,不限于浏览器访问,用PB/VB/DELPHI开发是唯一的选择。但如果反过来,访问量巨大,只能用浏览器访问,你再用PB试试?访问量可以有办法,但"限于浏览器"这一条是谁也躲不过去的。WEB应用和企业应用解决的是不同的问题,根本没有可比性。
43 楼 yfmine 2007-05-19  
抛出异常的爱 写道
数量太大的话。。。。
一个cookie的树你认为怎么样?

PS:变态需求什么时候都有,大多数作不出来。。。但我的任务就是用变态方式来解决变态需求

能不能具体谈谈...我猜想是不是这样的:
www.mycompany.com
path = /node0
path = /node0_node1
path = /node0_node1_node2

cookie值按一定优先级排序存储到不同的 nodexxx 里,找某样东西的时候,就直接在内存中查找节点名字,再去取得相应名字所对应的cookie里的数据?
42 楼 xiang 2007-05-19  
LZ好好去看看PB11吧
开发BS软件,那速度也算得上是天下第一了!!!!!

可惜PB11没有使用AJAX技术,否则要一统江湖了
41 楼 ray_linn 2007-05-18  
dengyin2000 写道
ray_linn 写道
dengyin2000 写道

把数据现load到client端,也就是javascript中。 如果数量太大的话,该怎样处理。 也可以先load到server中。 然后通过ajax取数据。 但是这样的话实时性就差点


数据量再大也是可以解决的,以医院为例子,仓库里的药也不过就是数万种,常开的处方也就数千种,常用药呢,数量则更少。

那么javascript加载常用药,ajax取不常用药。


我增对的当然不是才几千条这样的数量。。  当然  如果数据上万 几十完的话swing也是有同样的问题。 如果数据量这么大, 肯定还是要每次发送sql去查找数据库了。 实时性肯定降低。 但是swing少了数据传输的过程。可能实效性可能会好点


任何依靠人工输入的数据,都有一定的hit rate,因为人自身的记忆能力就是有限的,这是我的设计的依据。从新回到药品吧,一个科一天开的药品和检查,一定是某个大集合的小子集,所以一定能设计出一种类似cache的模式来提高响应速度。

你说的是最坏的情况是影响大,但发生率低的。
40 楼 ray_linn 2007-05-18  
lgx522 写道
ray_linn 写道

数据量再大也是可以解决的,以医院为例子,仓库里的药也不过就是数万种,常开的处方也就数千种,常用药呢,数量则更少。


其实HIS系统,药相对少得多,诊疗检查项目才够多。原先PB做的HIS,是把拼音字头映射的好多个txt存在本地,每次启程序的时候检测更新并加载进内存。拼音字头作输入、名称作显示、编码为条件,到数据库里查规格、价格、库存等信息,Client根据根据输入的项目、数量计算种类和价格,格式化后打印。
原先用C/S实现还是比较容易的,不知Ajax是否可以很好地实现。


这个也简单,签名的applet和activex也可以做到
39 楼 dengyin2000 2007-05-18  
ray_linn 写道
dengyin2000 写道

把数据现load到client端,也就是javascript中。 如果数量太大的话,该怎样处理。 也可以先load到server中。 然后通过ajax取数据。 但是这样的话实时性就差点


数据量再大也是可以解决的,以医院为例子,仓库里的药也不过就是数万种,常开的处方也就数千种,常用药呢,数量则更少。

那么javascript加载常用药,ajax取不常用药。


我增对的当然不是才几千条这样的数量。。  当然  如果数据上万 几十完的话swing也是有同样的问题。 如果数据量这么大, 肯定还是要每次发送sql去查找数据库了。 实时性肯定降低。 但是swing少了数据传输的过程。可能实效性可能会好点
38 楼 ozzzzzz 2007-05-18  
to potian
主要是需求不匹配的问题,比如国内排班就不是那么复杂,药品管理也和国外很不同,系统管理的能力同国外也很有差距。
有时间如果je做HIS的人够多,可以专门开一个贴讨论一下。
37 楼 lgx522 2007-05-18  
再说点题外的,前些日子到www.open-open.com下了个叫FreeCol的Java仿《文明》游戏,“及时响应性”还真不错。颠覆了笔者过去对Java“慢”的成见。
说实在的,Java这一口,值得研究的实在太多了。本人一直是诚惶诚恐,总觉着自己所知太少,还望诸位高人多多指点。

相关推荐

Global site tag (gtag.js) - Google Analytics