现在正在做一个erp系统,系统是项目经理设计的,采用IE里面嵌入Winform的形式,数据通过xml方式,再经过xmlhttp,在服务器与客户端之间进行传输。以前做过的系统,一般是c/s,或者是b/s的,他这样将winform嵌入IE的方法,我想既不是c/s,又不像b/s,还有像web services,winform嵌入IE的方式,应该是activex。这样的erp系统在企业中应用的时候,要求每台机器都安装.net framework 2.0,首先来说,现在大部分单位的操作系统一般为windows xp或者windows 2000或者windows 2003,即使是2003也只有.net framework1.1, 这就要求erp系统在单位机器上部署的时候,需要为每台机器安装.net framework 2.0, 这个要求很不合理。即使是单位统一预先安装,但也劳民伤财。
像erp这样一种在企业内部使用的系统,与其采用这样一种结构,我想不如直接 用winform,做成c/s模式的,因为IE本身就是一个代理,而winform也被解释成为代理,有点多此一举的味道。最好采用一般的b/s方式,直接在IE里面浏览使用,对安转配置甚至性能来说,都是有力而无弊。
加上ajax的无刷新,系统能够像运行在桌面一样,一样能达到winform的运行效果。而省去安装部署的麻烦。
还有可以利用rss 订阅功能.
个人愚见,抛砖引玉而已!
posted @ 2006-07-30 10:30
Robin Zhang 阅读(5184)
评论(44) 编辑 收藏 网摘 所属分类:
系统架构
发表评论
传说总的伪B/S程序就是这个样子吧
但是有时候要承认在需求面前最难堪的是程序员,老板不会管你那个
另外,就算做成cs的话,那么每台机器不还是要装framework么,除非直接打包到安装程序里
没必要把WinForm程序嵌入到web中啊
可以做成不依赖.net Frmwork的ActiveXx
加上ASP.net基本上没什么大问题的
ajax的实现方式与winform相比,工作量还是比较大,而且一些c/s中的功能未必能实现。
呵呵,难说的一件事情 ,ajax现在还在发烧吗?真正做个项目后就知道楼
还是C/S好啊,开发起来方便快捷,而且可以参考智能客户端的方式,这样可以在一定条件下可以脱机工作。
另外如果非要B/S的,我推荐适用Flex2,真是方便啊,方便的主要原因是flash客户端的部署远比.net快捷多了。
@Liren Zhao
应该说只是一个平衡问题:其一,部署并不是想象的那么复杂,从局域网服务器Down一个flash客户端和Down一个.Net Framework2.0的代价是一样的。其二,WinForm通过XmlHttp与服务器沟通MS提供了足够多的解决方案,比Flex强很多倍。Ajax的开发比Flex方便快速很多,只是大面积使用Ajax会导致运行时速度不太理想而已。直接使用Native的ActiveX做大面积的应用开发代价会很大,IE嵌套WinForm能够获得一定的平衡。
虽然我不会采用这样的方案,但这个方案肯定不是各位所说的那样一无是处。
@ 即使是单位统一预先安装,但也劳民伤财。
请注意啊, 准备上ERP的单位, 连基本的网络远程安装的办法都搞不定的话, 那可就困难大了. 别说是.Net 2.0 , 基本的Windows Update都应该是全部网络自动安装的了.
#9楼[
楼主]2006-07-30 20:28 |
@双鱼座
但是根据ms的讲师所说,xmlhttp并不是导致性能问题的罪魁祸首,而是南北网路之间的差异造成的。他认为ajax速度不会太慢。我以前一个项目中也大量用到了ajax,速度还是相当不错。
另外ie嵌套winiform的方式,必须将服务器网站设置为信任站点。这无疑又是一个麻烦的地方。
还有即使不使用ajax, 传统b/s模式我i想也更适合吧
#10楼[
楼主]2006-07-30 20:34 |
@Jim Jiang
能上得起erp的单位,这个开销当然不会过分。但还是有一点,既然ie已经可以作为一个通用代理,那为什么还要以代理方式,开发出一套winform呢?
.net下的winform的效率更是不敢苟同亚。
@jillzhang
谁在说xmlhttp是导致性能问题的罪魁祸首?性能问题是由于js造成的。当然,简单的ajax应用没有任何问题,在大面积使用时不可避免通过js来大量动态生成客户端元素,从而导致性能问题。这想这可能是Liren Zhao说明“真正做个项目后就知道楼”的意思。至于你从前应用的经历也许是因为交互比较简单,或者仅仅用于“无刷新”吧。你试试通过ajax动态生成一个网格就可以看出来这些性能问题。
另外,信任站点应该不是问题,你可以将服务器设置为Intranet站点,这些站点的默认安全级别比较低。当然,设置IE的安全级别是比较麻烦,但是即使没有你的ERP系统这个问题也同样存在。
传统B/S已经严重过时,这也正是MS抛出XAML的意义所在。B/S最初的目标其实根本不是用来承担复杂的、交互频繁的应用系统,而是浏览信息,为此开发人员不能不付出一些额外的代价。当然,传统的C/S体系更是缺陷明显,由于没有中间服务器来实现业务使得应用系统的开发非常烦琐。
可以把WinForm当成一个RCP来连接中间服务器,避免直接对RDBMS的访问。不过WinForm作为一个富客户端其表现实在是不敢恭维。至于嵌套在IE中运行主要是将IE作为一种运行容器,这与你直接安装EXE文件运行在Windows容器下没有什么区别。唯一的好处是,对直接用户来说,你不需要从安装程序开始,而是从一个站点开始,这种方式显然更友好。
#12楼[
楼主]2006-07-31 08:29 |
欢迎继续砸!
@双鱼座
对直接用户来说,你不需要从安装程序开始,而是从一个站点开始,这种方式显然更友好
对于这点不敢苟同。因为在.NET 2.0里的ClickOnce技术就已经为WinForm程序提供了这种可能,一个WinForm程序可以从一个网页上去自动安装,自动更新,包括自动安装.NET Framework等等东西,并且提供不安装,直接在IE中执行WinForm的方式。
智能客户端技术,我看过几个微软的例子,感觉怎么都像一个可以断开连接工作的C/S程序呢?
现有的web技术已经可以实现winform技术的功能,感觉再把winform嵌入ie,有点多辞一举。
我很支持项目经理的决策,开发效率和用户体验才是最重要的。
Winform的开发效率可不是BS方式能够比拟的,它还能实现很多BS累死也无法实现的功能,用户体验也会更好。
在企业内部ERP系统的局域网环境下,安装.net framework并不是一件困难的事情。
通过这种方式可以实现BS与CS无缝集成,对于新闻发布、论坛等功能采用BS方式实现,对企业内部业务逻辑采用CS实现,很好啊!
#19楼[
楼主]2006-07-31 12:35 |
en ,收获不小,大家继续砸。
通过大家讲解,我现在观点处于中立了。
希望大家继续砸
如果Ajax的IDE会好的话我想我会去用的。。
个人经验不足。。
不发表意见了。。
安装一个.net framework代价很小的。
大面积使用js肯定会带来效率问题(在大部分项目组的条件下),如果让我在ajax、winform、和传统cs程序之间选择的话,我选择winform,或者选择cs,自己再建设一个自动升级方案。ajax我是不会用的,我宁愿用传统的bs。
@風語者·疾風
我晕...有了ClickOnce还是需要一个站点作为开始嘛!所以你并没有反对"站点比安装程序更友好"这个观点,那你对哪一点"不敢苟同"呢!
# re: activeX还是ajax? 2006-07-30 20:23 Jim Jiang
@ 即使是单位统一预先安装,但也劳民伤财。
请注意啊, 准备上ERP的单位, 连基本的网络远程安装的办法都搞不定的话, 那可就困难大了. 别说是.Net 2.0 , 基本的Windows Update都应该是全部网络自动安装的了.
严重同意~~稍微正规的企业都应该有自己的IT环境:AD环境下用WSUS分发.net 2.0 Framework太简单不过了。
ClickOnce 通过站点部署时,可以判断客户端是否有需要的组件(当然包括Framework2.0环境),如果没有的话可以自动安装,感觉还是蛮不错滴~
#26楼[
楼主]2006-07-31 19:22 |
不错,欢迎大家继续提出宝贵意见。
一个系统在方案上的重要性可行而知。
atlas下的开发效率,从我的感受看,要比winform高。
另外大家所说的效率,我想在erp系统中,也许很难体现。
一般内部使用。网络不成问题。我们原来一个大型社区,都没有什么问题。
主要是开发方式不同,导致大家看法不一致。
大家继续评论。
难道你这个activeX是用.NET开发的吗?
可以考虑用C++开发啊,这样就不用在客户端安装framework了。
和楼主看法一致;
前阵子也讨论过这个思路,后来还做了点东西:)
@jillzhang
呵呵,楼主还比较固执。我已经很明白地告诉你了ajax的性能坏在什么地方了。你的大型社区说到底还是简单,也许可以用用ajax,但是象ERP这样交互复杂的应用环境,用ajax肯定会失败。
@aspnetx
说话要负责任。不要莫名来一句没有根据的话,然后又拿不出证据。智能客户端的两大特点:离线工作、智能升级。不比你传统的C/S程序好?
#32楼[
楼主]2006-08-01 09:58 |
@双鱼座
我不晓得,你说的erp复杂是什么?
注意是业务逻辑复杂,不是页面功能复杂。
所以你说js影响性能,根本和本系统无关。
#33楼[
楼主]2006-08-01 10:04 |
我不知道为什么现在这么多人说什么erp复杂
我觉得,其实从技术来说,internet上的网站技术复杂
和erp比起来,拿社区来说,要处理的是如何让1w人同时访问相同的功能,而且不受非法侵害。
而erp要解决的是,200人各自都有不同的功能来操作。
业务复杂和程序复杂完全不能等同。
业务在复杂,复杂到顶天的程度,实现起来,还是要从最简单的模块实施。
我的认为是这样的
#34楼[
楼主]2006-08-01 10:07 |
业务复杂!= 程序复杂
你所说的js局限,仅仅是在处理页面的时候。
只要页面不时过大,过于复杂。和逻辑毫不相干干
没见过,哪个erp的页面复杂到无法显示的程度。
erp复杂在错综复杂的逻辑关系而已。
从表现层来说,erp是最简单的几种系统之一。
#35楼[
楼主]2006-08-01 10:07 |
大家继续砸
@jillzhang
呵呵,无语......我既没有说业务复杂也没有说程序复杂,我是说交互复杂。当然,不同的erp要求是不一样的,也许你的erp非常简单也说不定。真希望你参与做完你手头的项目还能保持你现在的态度。多说无益。
#37楼[
楼主]2006-08-01 14:49 |
@双鱼座
那么请问交互用什么来交互?
js么?
如果js影响性能,那么js与交互的关系影响你判断的正确与否。
首先要知道的是js对erp这样的系统交换其多大作用。我们的erp系统注重是业务逻辑还是页面表现。
怎么说js也是一个表层的东西。而对于表层的复杂度,一个erp系统如果能高出一个网站,那只能说明这个erp也太神奇了。
需要花费多少个美工亚?赫赫。
我对上面连个方案,现在是中立态度,只不过我要求证的是系统复杂在哪里?
我认为erp如果复杂,那复杂在业务逻辑才对。表现形式不一定多么复杂。
Requirements determine implementations, so it makes no sense to discuss an architectural design w/o knowing requirement details… But assuming this is an ordinary ERP application, general speaking, your PM made a good decision, because:
1. Windows Form gives you more flexibility to handle customers’ potential requirements. I know how great today’s web browser technology is, but when talking about complex drag and drop, multiple level undo, it could still be a nightmare.
2. Hosting everything into IE is not weird as it sounds. The key point is about privilege your application needs. That will force you guys (developers) to make things done w/o bothering customers’ system admin too much. Maybe eventually you guys will figure out that it’s not practical (based on the specific requirements), but it’s a good start point, right?
我赞同kw2006的意见。用户需求是第一位的,这也是我在我目前正在进行的项目中得到的最直接的经验。如果你的PM的判断是基于项目的某些需求,这无可厚非,关键在于,他的这个决定是否体现了用户需求;或则是,用户真正想要的东西是什么?其实用户并不关心你用什么技术细节实现,他关心的是我需要的Feature你能不能实现。打个比方,你有好的技术Idea,比如Ajax,但是某一项需求你无法满足,可能你连单子都签不下来,何谈接下来的问题?
因此,用户的观点是需要时刻在我们脑袋里考虑的问题?
当然,如果PM的决定不能体现用户的需求,或则说没有能做好技术与需求的平衡则是另外一回事情了。。。
正是由于ERP的逻辑复杂,它的交互界面也会相应的做得很复杂。
你设计的时候如果想减少页面数量,那单个页面的结构就复杂了,那些逻辑有时就会反映在界面上。
比如输入的信息,每个输入的信息要经过逻辑验证,有些不清楚的要出现智能提示,或者想输入某个ID,相关的数据也要自动输入,或者要从某些已有的数据选择拷贝带入,有时输入的时候要去别的地方检测这个数据是否合理 等。。。。
这些会给客户端带来速度的影响,如果用js来做,性能比activex或者applet(具体逻辑不做在其中)来做要慢很多的.
现在公司用的oracle erp 就是用applet放到IE中做得,速度随着数据,逻辑复杂度等的增加越来越慢。
ERP不是MIS, 为什么不把管理系统上升到CIMS层次? ERP系统从程序上实现每种方法都差不多,关键看用户需求和各位程序员的业务水平, 我们开发的一个基于B/S的ERP系统中, 在采购部分中的条目清单询价功能使用了AJAX无刷新, 在生产部分中的电压参数采集填报功能使用了ActiveX, 有个嵌入式小程序用了db4o, 还有其他各种功能, 需要用的技术都用上, 那个好用用哪个, 只要你有好的程序员. 没有人才才会导致拘泥于系统结构.