平台开发技术考虑

1.客户端设计

使用基于Applet的访问框架,客户端需要下载一个30M左右的jre,界面元素由Swing实现,可以参照NC的实现.

优点: A学习曲线平滑,不需要大规模的进行技术培训,目前人员大多都有过Swing的开发经历. B 界面表现性较传统Web页面优势较大,可以实现非常复杂的界面展现. C 显示的效率比较高,虽然web开发也已经实现了MVC的设计模式,但基于请求响应的开发方式有时无法满足大数据量下的应用. D 可以借鉴NC的实现方式,而且有很多代码可以使用.

缺点: A 客户端需要下载jre. B 第一次启动会比较慢,但以后会快很多.

2.客户端与应用服务器的数据传输

目前可以考虑的方案:

A 使用EJB的RMI-IIOP协议进行数据传输,为SUN的专属协议,无法穿透部署有防火墙的网络环境,需要使用EJB3的所有技术,平台依赖性较大.

B 使用开源领域的传输协议,此类协议都是通过http协议进行数据传输,比如: hessian,burlap以及Spring集成的HttpInvoker..由于使用了http协议,可以穿透防火墙进行数据传输.同时对于java-to-java的数据传输效率很高,基本上可以媲美EJB使用的RMI协议.在JavaEye上面也有了对Hessian等传输协议的讨论http://www.iteye.com/topic/129194.

以上两种方案可以看出,使用开源领域的技术可以得到比RMI要好的效果,同时由于是开源的,如果需要还可以进行修改或加入加密逻辑,建议优先使用.

3.应用服务器的选择

可供选择的方案:JBoss,GlassFish等,Tomcat不建议使用.GlassFish是SUN官方的开源JavaEE参考实现,对于JavaEE的各种技术支持的较好,比如JPA、JMS、JCA、统一事务管理等服务.而JBoss属于老牌的开源应用服务器,能够非常好的和各种其他开源项目进行集成,比如:Spring2.0,Hibernate等,而且旗下也有很多易用的扩展,比如扩展JSF界面体验的ajax2jsf可以增加jsf对ajax的支持,spring-deploy可以在jndi级别对spring2.0进行集成,同时JBoss还对Java MBean进行了一流的支持,应为JBoss的开发就是基于MBean的.所以如果远程技术是基于Spring的优先考虑JBoss,而如果是基于EJB3.0,则可以优先考虑GlassFish,毕竟是Sun的官方实现.

4.加密

因为是做自己的开发平台,加密的环节是必不可少的,目前JVM已经进行了开源,加密的逻辑在软件中的位置也有了更多的选择,比如在类加载器中、在JVM中等方式,如果在类加载器中进行加密,可以简单的使用一些常见的反编译软件(小颖)就可以进行破解,当然如果采用了代码混淆,反编译的难度可能对大很多.如果在JVM级别进行加密,不仅可以实现自己的字节码形式还可以通过修改java.exe文件,进行最底层的加密控制(C语言实现).

5.EJB or Spring

两种技术是目前比较流行的,使用比例当然是Spring高于EJB3.0,毕竟EJB3.0刚发布没有多久,但较以前的版本已经有了很大的改变,特别是吸取了很多开源的思想,比如将Hibernate、TopLink进行标准化,出现了JPA标准,控制反转IOC的应用等,但真正实施的项目还很少…而Spring在web开发领域已经占了很大的份额,优势是易于使用,同时可以集成EJB的所有服务事务、JCA、JMS等,特别是BeanFactory可以节省很多的开发工作,而且实现了代码的组装,无需硬编码.当然EJB3也通过Java注释技术实现了类似的功能,可以使用Java的强类型特性,出错率较低,但随着Spring开发工具的完善,已经可以实现xml文件中的代码提示..

我认为最佳的应用模式应该是基于Spring的POJO模型,使用EJB3.0的无状态会话Bean进行方法调用,这样的模型可以最大限度的集成JavaEE的企业服务,也可以使用Spring集成的开源企业服务实现.如需要可以提供实现结构图.

6.业务模型

看了金蝶EAS的BOS实现,可以借鉴它的想法:将系统的基础档案进行抽象,形成若干个可以拿来就用的业务组件,和NC基于表的建模形式不同,BOS可以对一个单据进行完全的自定义,包括字段、位置等,类似于报表工具的设计模块,想iReport的设计界面,就是可以进行拖放操作,最后形成一个完全自定义的单据.我认为实现方法是:将NC单据模板中的表定义前移,移到最终用户,最终用户在通过拖拽进行界面定义保存后,动态根据定义单据上的字段形成一个实体模型,最终持久化到表中(通过一个表存放动态定义表的字段).这样就比NC先进了一步,NC的单据模板是给一定层次的实施顾问使用的,因为需要首先要进行表的定义,数据格式的选取、VO的对照、数据字典的生成等等比较专业的操作,而基于业务组件设计把工作更近了一步,把表的定义进行了抽象,变为最终用户可以操作的图形界面,然后由后台逻辑进行生成,真正实现了软件客户化,而不是NC的软件二次开发化….实现的难点:业务组件的抽象(必须尽可能提供丰富的内置业务组件),设计界面的实现(拖拽,属性编辑<可以有开源组件使用>),持久化策略(如何效率较高的实现?)等.可能使用的技术:JavaBean(抽象组件)、属性编辑器(设置组件)、反射(返回组件属性)、动态代理或AOP(事务、日志等基础工作).

7.其他

7.1远程协议的自主实现:要求较高,关键不是如何实现,而是如何高效的实现…

7.2缓存:代码缓存、数据缓存、页面缓存(如果是Web页面)

7.3流程:可以研究OSWORKFLOW的引擎实现.界面实现通过jgraph绘制

7.4报表:是自己实现还是就使用iReport嵌入到平台中

7.5数据交换:这部分应该是平台的一大模块.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值