论坛首页 Java企业应用论坛

企业应用UI开发模式

浏览 23037 次
该帖已经被评为良好帖
作者 正文
   发表时间:2009-06-02   最后修改:2009-06-02

今天和老板吃饭,谈到开发效率的问题。老板提议能否用一些网页设计工具来做ui开发,原因是他见到有的developer花费很多时间在写ui上面。老板认为如果做ui能直接拖拽控件,所见即所得,这样就可以把主要精力花在核心业务上面。老板本身是做业务的,博士出身,但是基本不懂软件开发。估计是平时看我用rose做设计觉得不错,才冒出这样的想法。

 

首先大概介绍一下我们公司的系统。我们是做制造业的生产管理系统,主要客户是模具制造,机器制造,印刷等行业的公司。我们只有一个产品,销售给不同公司的时候针对客户的一些特殊需求做一些定制。架构上用的是jsp+struts+ejb+oracle。系统复杂程度中等偏上,有四十多个业务模块,persistent object大概有近千个。

 

在显示层,大量使用了javascript/ajax,css。因为客户对界面user friendly要求很高,所以我们的界面很复杂,不是简单的单个object的crud。我开发了不少ajax-enabled ui controls,例如tree, grid table, split panel, tab panel, modal popup window, auto suggest(注:并非重新发明轮子,只是我做这些的时候ajax刚刚流行,很多现在牛b的框架都还没有出现,出现的也还不是很完善)。为了让其他developer能轻松的使用这些ui控件,我又写一系列的jsp tag。这些jsp tag的主要作用,一是封装了底层的javascript, css细节,二是负责和web层数据绑定,数据交互,以及和后台的xml配置(主要用于描述静态业务数据)绑定,三是自动进行数据验证。

 

好了,言归正传。我给老板的回答是:

 

1。基于目前的ui复杂性,90%都不是原生的html控件。如果用一般的网页设计工具,比如dreamweaver,frontpage这种,除了画一些整体的布局以外,似乎没有太大的其他用途。如果用dreamweaver来设计具体的页面,那样就无法使用现成的jsp tag,developer需要花费更多的时间来实现原先tag封装的复杂功能。

 

2。一些ide,都提供可视化开发jsp的功能。比如说eclipse, netbean, jdevelper。但他们提供的大部分也是原生的html control,复杂一点的会提供内置ajax功能的jsf facelet。但都不能满足我们的需求。

 

3。如果使用工具开发界面的话,工具必须能供提供扩展性。这样我或许可以用plugin的形式把自己封装过的ui控件加入到工具中,继而以拖拽的方法来“画“界面。否则虽然工具简化了layout的开发,但却大大复杂化了数据绑定,交互等其他方面。

 

4。有的developer做ui慢,是因为他不求甚解,不做研究,对javascript,css,html不熟。有些已经提供的功能都不知道用。对于这样的人,就算ui简单了,后台逻辑还是能累死他。

 

想和大家讨论的是:

 

A。对于企业系统,我很想知道其他公司表现层都是用什么样的开发模式?单靠美工mm可以搞定吗?我们公司根本就没有专门的美工,界面都是developer做的。

 

B。可视化开发能否真的提高开发效率?还是看起来很美,实际上用处不大?其实我个人总是感觉,可视化编辑器拽出来的代码都很龌龊。

 

C。有没有符合能符合我需求的可视界面工具?我感觉可以通过为ide开发一些插件来做到这一点,不知道是否可行?

 

欢迎大家指点,以及拍砖。

   发表时间:2009-06-02   最后修改:2009-06-02
这也正是我最近一直在考虑的问题.
在我看来,目前的开发模式正在经历从B/S到C/S的经典回归过程.
经过十余年的发展,纯粹基于HTML元素来做表现层的开发模式已经证明是低效,混乱,不堪重负的了.
要解决这一办法,要给用户以良好的接口体验,唯一的解决途径就是不使用html来描述界面,而采用新的界面描述文件,这种新的界面描述文件格式应该可以直接调用,使用操作系统级别的界面元素,并且能够扩展操作系统的界面元素.

一个思路(仅仅是一个想法):假如我可以做一个Visual Basic的界面解释器,那么就可以直接用VB来绘制用户实际看到的界面,并且使用Windows本地的Activex控件来构建界面.在运行的时候再把整个界面重新绘制出来.

很多人在论坛讨论的时候,往往偏离了问题的本质.现在系统开发的困难,根本原因在于简单的HTML元素已经不能满足用户界面的复杂性要求,可是却把精力放在后台服务器上试图解决这个问题,这种思考问题的方式是南辕北辙的.

Html语言因为要照顾到各家不同公司的利益,因此发生大的改变是不可能的了.

我的blog上有几篇和你这个主题有关的文章.贴个地址参考参考吧.
http://liujunsong.iteye.com/admin/blogs/261085
0 请登录后投票
   发表时间:2009-06-02  
虽然现在的应用越来越复杂,UI的设计也越来越麻烦,但也应看到目前各大公司对这一问题的努力.新出的浏览器对于js的解析速度越来越快,google也推出了可以讲java代码生成js代码的工具(GWT),一切都是为了可以在浏览器上面开发出可以与桌面应用媲美的应用.
开发工具方面,直接的界面拖拉最多生成简单的UI框架,复杂的、细致的UI还是需要手工去调的.并不能过分的依靠ide生成代码..
0 请登录后投票
   发表时间:2009-06-02  
要是这样的化 可能整个ui都要变了 比如变成flex或者javafx或者微软的那个什么银光?
0 请登录后投票
   发表时间:2009-06-02  
看到你们成天为这个发愁,有时候我觉得做swing好幸福。。。
0 请登录后投票
   发表时间:2009-06-02  
laiseeme 写道
看到你们成天为这个发愁,有时候我觉得做swing好幸福。。。

我们最早就是用swing做的,后来慢慢迁移到瘦客户端。相比较起来,我觉得现在更幸福,开发效率还是会更高一点。
1 请登录后投票
   发表时间:2009-06-02  
jvincent 写道
虽然现在的应用越来越复杂,UI的设计也越来越麻烦,但也应看到目前各大公司对这一问题的努力.新出的浏览器对于js的解析速度越来越快,google也推出了可以讲java代码生成js代码的工具(GWT),一切都是为了可以在浏览器上面开发出可以与桌面应用媲美的应用.
开发工具方面,直接的界面拖拉最多生成简单的UI框架,复杂的、细致的UI还是需要手工去调的.并不能过分的依靠ide生成代码..


居于目前系统的规模,任何复杂的改动都不太现实,更不用说换成vb或者flex。我的想法是,对于ide进行一些扩展,达到以下的效果:

1。把系统里面几种通用界面以模板的形势加入到ide中,负责整体布局
2。对于细节的ui,能够托拽经过我封装的ui components。

这样就可以引导程序员以一种固定的模式去做出统一的界面。而且新程序员上手的时候,也可以更快了解系统常用的布局和提供哪些ui控件。
0 请登录后投票
   发表时间:2009-06-02  
MakeLove 写道
sap的话,UI有自己的一套工具, 开发人员只要拖拽就行,样式什么的都不用管, 生成的东西还能run在不同的客户端。。超级牛逼, 人家5,6年前就开发出来了, 想想差距真是大啊,

你指的是sap netweaver吧。大公司的研发能力,不是一般小公司能达到的。
0 请登录后投票
   发表时间:2009-06-02   最后修改:2009-06-02
我最近也在考虑界面设计问题。我主要精力放在怎样让用户用起来更舒服,更轻松(不用过多的找、过多的思考)。
具体怎样开发这块,暂时没有考虑。

有本书叫:《Don't Make Me Think》,我还没有来得及看。:)


通过IDE或者设计模式来完成企业级开发,个人觉得花费时间太多,反而收益不大。


先:得知客户最想要什么功能(功能可不仅仅是平常说的业务哦)。比如Eclipse可以将编译不通过的类用红叉叉表示出来。这样开发人员,就看红叉叉,可以快速定位哪里有错误。
然后:根据需求,设计出好的“操作模式”。  细小功能,可以封装成tag,util类等。这个没有什么难度。
而且抓住主要矛盾后,该细小的地方,可以给客户“精益求精”的想法。
0 请登录后投票
   发表时间:2009-06-02  
怀念borland,现在的Ext根本不成气候
另一方面,这个东西现在缺,而你们很早就有一些组件,这也是优势啊,要是你们在网上找到了,那所有公司都找到了。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics