`

平台开发技术考虑

    博客分类:
  • Java
阅读更多
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数据交换:这部分应该是平台的一大模块.
分享到:
评论
34 楼 bnmcvzx 2008-06-21  
如果客户面向的群体是大量的用户或普通网民,基于浏览器的架构是最合适的。
33 楼 jvincent 2007-10-23  
liangguanhui 写道
使用applet注意不错,不过是否要定义相关的通讯协议?


客户端和服务器端通过http协议就可以了.通过调用远程方法实现...
32 楼 liangguanhui 2007-10-23  
使用applet注意不错,不过是否要定义相关的通讯协议?
31 楼 jvincent 2007-10-23  
timerri 写道
让客户装jre?
还不如让他们去装个client!
嵌入ie解决UI问题。再自建协议解决其他b/s解决不了的问题。

等闲不会考虑让用户用java作的UI,客户用老机器的话,是会骂人的。


安装client不同于安装jre的plugin,如果能够解决可以在不用参与的情况安装jre就好了....
世界本没有什么纯BS系统....
30 楼 timerri 2007-10-22  
让客户装jre?
还不如让他们去装个client!
嵌入ie解决UI问题。再自建协议解决其他b/s解决不了的问题。

等闲不会考虑让用户用java作的UI,客户用老机器的话,是会骂人的。
29 楼 qlhl2000 2007-10-22  
做一次用户的意见调查,看有多少用户采纳jre的下载,并且自动实现版本更新;如果可以的话,采用Applet是首选的应用!现在的新技术就像当前的股市,就像夏天挑西瓜一样,不好评估这项技术的生命力和方便性,因为学习和更新同样是成本,最新不一定最好,但是成熟的比较保险;创新应用可以在一些小项目中试验,当不能大面积的在平台中应用。
28 楼 jvincent 2007-10-20  
谢谢各位的讨论,公司正在评估..不过我还是比较倾向于Applet和Web Start的方式,Web的方式受浏览器的控制太多,不少插件都被IE拦截了,如果告诉客户放开,客户会认为是安全性的降低....
27 楼 rehte 2007-10-19  
jvincent 写道

to rehte:

RMI-IIOP怎么样能支持HTTP协议?

http://www.cs.swan.ac.uk/~csneal/InternetComputing/Tunnelling.html
26 楼 jvincent 2007-10-19  
rehte 写道
我推荐楼主客户端使用Java Web Start这种模式。开发部署升级都非常方便。
另外RMI-IIOP是支持HTTP协议的,需要一定的配置。你去Sun的网站上查一下就知道了。
另外客户端使用JRE 6,下载大小只有12M左右。以后Kernel JRE出来,下载大小只有4M。
速度也不成问题,Java 6的Swing速度可以比得上Native程序的界面速度。
启动速度可能要稍慢一点,但只是第一次。
另外最新的Java 6 Update N版本已经解决了Applet的冷启动速度慢的问题。因此Applet也可以考虑,但是我推荐Java Web Start。


to rehte:

RMI-IIOP怎么样能支持HTTP协议?
25 楼 rehte 2007-10-18  
我明白,这些JavaFX语法声明的组件都是在运行时被映射成相应的Swing组件的。我的意思是使用传统的Swing Applet方式不会有风险,到JavaFX盛行的那天,Sun也是支持传统的Swing Applet方式的,只是那时它会推荐你使用JavaFX开发。但是现在显然不可能用JavaFX进行开发。也许将来使用JavaFX进行开发更快,但是现在不是不能等吗?所以就用Swing Applet了。
其实任何其他技术都会百分百的在未来发生演化,只要将来的技术仍然兼容这种技术,就不会有风险,关键是现在采用什么技术效率比较高。
我觉得现在使用Swing进行客户端开发效率是相当高的,各种Swing可视化设计工具将这种开发变得像Delphi、VB开发那么快。采用Swing相对于采用Adobe Flex和MS SilverLight要好的多,因为你的服务器端使用的是Java EE(当然如果你使用.NET平台那又是另一回事),这样会使客户端和服务器的数据交换的开销比较少,整个team的技术可以集中于Java上,管理沟通交流都会比较方便。使用同一种语言、技术、平台进行开发总是要比使用异质语言、技术、平台的风险低,而开发效率高,C/S架构应用的开发效率要比B/S架构应用的开发效率高,这是大家都认同的吧。
24 楼 fxy1949 2007-10-18  
to rehte:

Yes,I think we are having a good debate.

One thing I need to point out is,although "JavaFX底层仍是基于Swing和Java2D的 and JavaFx做的应用最终还是要运行在JVM上的", but JavaFx uses "Declarative Syntax",whereas Swing,Applet use "Procedural Syntax". It's a big difference for development.

Just take a very simple exmple:

In Swing:

    var win = new Frame();
    win.title = "Hello World JavaFX";
    win.width = 200;
    var label = new Label();
    label.text = "Hello World";
    win.content = label;
    win.visible = true;


In JavaFx:
        import javafx.ui.*;

        class HelloWorldModel {
            attribute saying: String;
        }

        var model = HelloWorldModel {
            saying: "Hello World"
        };

        Frame {
            title: "Hello World JavaFX"
            width: 200

            content: Label {
                text: bind model.saying
            }
            visible: true
        };

So I think we should be aware this big difference and take care when making decision.
23 楼 rehte 2007-10-18  
fxy1949:

咱们这不是为楼主支招吗?就目前来说使用JavaFX是不可能的,因为它还处于incubation阶段,不成熟。其实将来JavaFX的应用之一是RIA,将来的Applet就和JavaFX融合了,因此不是Applet被Sun抛弃了,而是改头换面了化身成了JavaFX的RIA应用了。虽然JavaFX会取代传统Swing Applet成为Sun推荐的开发RIA的方法,但是传统的Swing Applet方式是自然被支持的,因为实质上JavaFX底层仍是基于Swing和Java2D的,它要支持JavaFX应用,必然要支持传统的Swing Applet。所以说楼主使用Swing Applet进行客户端开发是不会有风险的。
22 楼 fxy1949 2007-10-18  
to rehte:

Actually, your understanding of JavaFx is exactly the same with me. I have tried them on my machine in all different models.

What I am saying is for RIA market,JavaFx has made a big surprise and will be promising. But I think it's only in RIA market,the traditional way for web application development(Html,Javascript,Ajax,JSP,ASP,etc) will still be the main stream of web application.
21 楼 fxy1949 2007-10-18  
to: triu

1) when he is talking about using applet for client, and at same time he said that Jboss is good at "扩展JSF界面体验的ajax2jsf可以增加jsf对ajax的支持", as a reason for choosing it. Do you feel strange? He will benifit from JSF in Applet?

2)Regarding to EJB and Spring,I think the explanation about them is quit difficult to understand.

I just feel that in this post there are lots of confusion about technology. They are not expressed properly and need to be pointed out. No any offensive attempt.

20 楼 rehte 2007-10-18  
fxy1949:

我觉得你对JavaFX技术还是不太了解,还有它的工作原理、部署方法、和Java Swing的关系等等。JavaFx做的应用最终还是要运行在JVM上的,它最终的部署方式既可以作为独立的Java Application,也可以作为Java Web Start部署,也可以作为Applet部署,和你想像的不同。

现在流行的说法就是将Web Server列为Application Server的观点,这个也不是我个人的独创。以前我也以为Application Server是单指JBoss, Weblogic、WebSphere、Sun Application Server等EJB Container,后来才知道这些不过是是Application Server的一种。其实这些Server同时也都包括Web Server。Application Server是一种通称。

当然Web Server不是Application Server作为你自己的观点,我是没有意见的。这本身就是一种叫法。我想说的是大部分都是认为Application Server包括Web Server的。
19 楼 fxy1949 2007-10-18  
Yes,Sun haven't explicitly said that,but when they launched JavaFx recently to compete with Adobe Flex,Microsoft Silverlight in Rich Internet Application(RIA) market. Who is going to use Applet any more? Applet hasn't been developed properly by Sun for ages.

The revolutionary point is using declarative script language in JavaFx,like Flex. It's much easier for programming,comparing with Applet development.

I wouldn't agree that you regard Tomcat is one of the Application Server. Or Application Server can be used to refer to web server.
18 楼 triu 2007-10-18  
To:fxy1949

在这里讨论主要是要解决某种问题,但一味的批评对
此没有帮助。1、2点勉强还可以接受,3、4、5就没什
么意义了,请问对于3、4、5你有更好的说法吗?

最后一段纯属发泄,可以删掉。
17 楼 rehte 2007-10-18  
hi fxy1949:
1. Sun从来没有说过要抛弃Applet,事实上JavaFX的部署技术之一就包括Applet。另外,Sun最近要推出的Consumer JRE目的之一就是要复兴Applet。
5. Application Server是一个通称,并不一定特指EJB Container,它实际上即可以指Web Server(Tomcat),也可以指JBoss之类的EJB Container。
16 楼 fxy1949 2007-10-18  
I am very wondering:

1)Nobody tells you that Applet has been discarded by Sun, and replaced by JavaFx now?

2)How come Applet "界面表现性较传统Web页面优势较大"? You are going to give up Explorer,Javascript,Ajax? Do you know the cost and limitation of writing and runing an applet? Not just slow startup.

3)Why are you talking about JSF,if you are going to adopt Applet in client?

4)As for "基于Spring的POJO模型,使用EJB3.0的无状态会话Bean进行方法调用", don't you know EJB3 is POJO+Annotation?

5)Why don't you know JBoss is the first application server that implementats EJB3? Your reasons for choosing application server are unreasonable. Have you tried to use them? Tomcat is an "Application Server"?

15 楼 hyhongyong 2007-10-18  
一定要掌握到灵活与规范化的度,任何一个东西,都有一些约束,约束太少,实现起来太难。
不要把系统做成一个大而全的东西,要懂舍得,有舍才能得。

相关推荐

    软件开发技术报告 软件开发技术报告

    【软件开发技术报告】主要探讨了GPS全球定位系统的软件开发技术,特别是关于卫星星历的计算和GPS单点定位的数学模型。GPS是美国在20世纪70年代开发的全球卫星导航系统,具备高精度、全天候的定位能力。随着技术的...

    移动应用开发技术选型策略.pdf

    在选择移动应用开发技术时,企业需要考虑多种因素,包括应用类型、开发模式、技术路线和开发团队等。我们可以根据不同的应用场景和开发需求选择合适的移动应用开发技术。例如,对于需要高性能和复杂交互的应用,可以...

    电子商务技术开发说明和介绍

    在电子商务领域,技术开发是构建高效、用户友好且安全在线交易平台的核心环节。本文将深入探讨电子商务技术开发的各个方面,包括系统设计、业务流程分析、技术实现以及具体案例。 一、电子商务系统开发 1. 系统...

    Linux平台上的组件开发技术.pdf

    标题提到的“Linux平台上的组件开发技术”主要探讨的是如何在Linux操作系统上利用不同的组件开发技术来构建高效、可扩展和跨平台的软件系统。描述中强调了Linux平台因其开源和自由的特性,以及丰富的开源软件资源,...

    电子商务平台开发技术全套课件.ppt

    【电子商务平台开发技术】 电子商务平台开发技术是构建在线交易与交流的系统,它结合了信息技术、网络技术以及商业流程,使传统的商业活动得以数字化、网络化和信息化。电子商务平台不仅包含商品交易,还涉及信息...

    基于微服务架构的分布式开发平台.pdf

    分布式开发平台的实施,不仅涉及到技术层面的转变,同时也需要考虑组织结构、开发流程和文化等方面的变化。需要加强团队之间的沟通协作,适应分布式开发环境下的测试、监控、日志管理以及持续集成和部署的新实践。...

    开发技术-硬件-特种设备安全及检验工作管理平台开发应用.zip

    在“开发技术-硬件-特种设备安全及检验工作管理平台开发应用.zip”这个压缩包中,我们可以找到一个名为“开发技术-硬件特种设备安全及检验工作管理平台开发应用.pdf”的文件,这通常是一份详细的技术文档,涵盖了...

    产品开发-技术可行性分析报告模板

    5. 成本估算:考虑开发、维护和技术更新的成本,以及可能的风险和回报。 四、报告撰写 《产品开发-技术可行性分析报告模板.doc》通常会包含以下部分: 1. 引言:介绍项目背景、目标和分析目的。 2. 技术概述:...

    移动开发平台概述

    移动开发平台概述主要涵盖当前主流的移动操作系统以及开发者在选择平台时所考虑的关键因素。在2010年的回顾中,iOS(iPhone)和Android逐渐成为开发者关注的焦点,超过了曾经主导市场的Symbian和Java ME。尽管...

    展讯平台手机开发最新文档

    对于开发者而言,掌握展讯平台的软件开发技术是至关重要的。本文档集合旨在为从事展讯平台手机软件开发的专业人士提供最新、最全面的技术指导。 1. **展讯平台简介**:展讯平台以高性能、低功耗的处理器为核心,...

    用友致远A8平台二次开发

    【用友致远A8平台二次开发】是一个针对专业开发人员的手册,旨在提供A8平台的二次开发和第三方应用集成的详细指南。这个手册强调了如何通过接口和增值开发来实现与第三方系统的高效协作,同时降低了开发的技术门槛,...

    低代码开发平台.rar

    "低代码开发平台.rar" 提供的是一套基于.NET技术的快速开发解决方案,特别适合于那些希望提高开发效率、降低开发复杂性的团队和项目。 .NET框架是微软公司推出的一种开发平台,它包含了运行库和类库,为开发者提供...

    新太平台开发知识库

    新太平台是一个专门用于IVR(Interactive Voice Response)业务开发的平台,广泛应用于各个地区。在新太平台中,开发者可以构建和管理自动语音应答系统,为用户提供24/7的服务,例如账户查询、预约服务、信息咨询等...

    编写微信界面(UI界面设计-移动平台开发技术-gddrxy.zip

    总的来说,编写微信界面涉及到了UI设计理论、移动平台开发技术,尤其是Android的相关知识,包括Activity管理、布局设计、编程语言掌握和设备适配等。通过不断学习和实践,开发者可以打造出用户体验优良的移动应用...

    TitaniumMobile开发跨平台iOS和Android应用

    #### 什么是Titanium Mobile跨平台开发技术? Titanium Mobile是一种强大的跨平台开发工具,它允许开发者仅需掌握一种语言——JavaScript,即可同时为iOS和Android平台创建应用程序。这种技术极大地简化了开发流程...

    最新Oracle SOA 平台技术介绍

    ### 最新Oracle SOA平台技术介绍 #### 一、引言 随着信息技术的快速发展,企业对集成解决方案的需求日益增长。Oracle SOA(Service-Oriented Architecture)平台作为业界领先的集成解决方案之一,在支持企业级应用...

Global site tag (gtag.js) - Google Analytics