




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
分布式开发的历史利用Remote方式调用远程对象实现服务器与客户端之间通讯是一种常用的网络开发方式,在.NET与JAVA开发当中,对Remote远程对象早已有着足够的支持(对Remote远程对象调用有兴趣的朋友欢迎参考一下利用远程对象实现分布式开发)。从2003年开始.NET当中就盛传着.NETRemoting远程对象调用的分布式开发,.NETRemoting主要用于管理跨应用程序域的同步和异步RPC会话。在默认情况下,Remoting可以使用HTTP或TCP协议进行信息通讯,并使用XML编码的SOAP或二进制消息格式进行数据交换。.NETRemoting提供了非常灵活和可扩展的编程框架,并且可以管理对象的状态。在Framewok2.0出台以后,WCF盛世登场,它是综合了.NETRemoting远程对象,TCP/IP套接字,Web服务,MSMQ,P2P点对点等各类型通信方式的产物,WCF使远程通信进入另一个台阶。而在JAVA方面,对远程通信也有强大的支持,它定义了的RPC(RemoteProcedureCallProtocol)协议是一项远程过程调用协议,它可以通过网络从远程计算机请求的服务获得计算结果,它无需了解底层网络技术的协议就可以使用如TCP或UDP等通信方式,为程序之间传递信息数据。在网络通信模型中,RPC跨越了传输层和应用层。RPC使系统更容易地实现分布式式开发。但RPC通讯却并未实现面向对象的开发原则,到而RMI(RemoteMethodInvocation)远程方法调用是一种计算机之间利用远程对象互相调用实现通讯的一种机制。它以面向对象的开发方式,利用RPC协议,使服务器与客户端的对象能够实现远程调用。但在.NETRemoting与RMI通信中同时存在一个弊端,那就是对开发语言的限制,无论是使用哪一种通讯方式,服务器与客户端都必须支持同一种开发语言。通讯过程中不能跨越开发语言的限制,这是一个人令人懊恼的消息。因为在大型的开发项目当中,往往会集合着不同语言开发进行不同模块的开发。而使用Remote进行分布式开发,可以提高通信的效率但却又受到限制。对此,各大开发公司做出了积极的贡献,开发出如J-Integra(又名Ja.NET),IIOP.NET(InternetInter-OrbProtocol),JNBridge等集成开发工具,对.NET与JAVA之间实现Remote远程对象的相互调用作出足够的支持。下面在下为大家对“JNBridge实现.NET与JAVA的相互操作''作出详细的介绍。JNBridge概述JNBridge是一种领先的JAVA与.NET互操作的的产品,凭借JNBridge技术,Java和.NET代码无需交叉编译器就可以实现对象共享。所有Java代码运行在JVM上,而.NET代码则运行在CLR上。在该方案下,JVM和CLR可以运行在不同的机器上,也可以运行在一台机器的不同进程上,甚至还能运行在相同的进程的不同应用程序域上。经历多年的发展,JNBridge已经发布了JNBridgePro5.0,JNBridgePro5.0有着更强大的功能。1.支持ava和.NET之间的跨平台事务;支持MicrosoftVisualStudio和Eclipse插件;兼容Windows7;跨平台交易一体化主要是对用户透明;'回滚'-任何一方的终止都将导致双方的行动被回滚;JNBridge支持.NETToJava,JavaTo.NET两种服务方式,并可以行用TCP、HTTP、SOAP等多个协议进行双方通讯,下面就以“JAVA调用.NET"实现一个简单开发例子,介绍一下JNBridge的功能。JNBridge配置首先可以在JNBridge的官方网站/downloads.htm下载程序,安装JNBridgePro5.0后,启动JNBProxyv5.1.exe,选择CreatenewJava->.NETProject,新建一个项目后,点击Project->JavaOptions对系统进行配置。首先设置好本机的java.exe应用程序和jvm.dll程序集的路径,然后设置jnbcore.jar和bcel.jar的路径(在5.1版本中,这两个文件存在于“/JNBridge/JNBridgeProv5.1/jnbcore/”),最后可以选择HTTP或TCP通讯方式(在此例子当中在下选择TCP通讯,系统默认接口为8085你也可以选择自定义的接口)。点击'0K"按钮,配置完成时,系统将自动生成一个"/JNBridge/JNBridgeProv5.1/jnbcore/jnbcore_perties"文件记录TCP配置信息。.NET服务端开发假如阁下使用的是VisualStudio2008或者VisualStudio2010版本,系统将会感知JNBridge的存在,在新建项目时,可以直接新建一个DotNetJavaProxies项目。在此在下想展示一下JNBridge的转换性能,所以直接新一个解决方案。添加一个Model项目,加入Person类,为Person加入Serializable特性,注意要去除不必要的引用,因为对Framework的引用在转换时将变为对应的包。代码usingSystem;usingSystem;namespaceModel{[Serializable]publicclassPerson{publicintID{get;set;
publicstringNameget;set;publicintAgeset;get;添加一个Manager项目,加入PersonManager类,在测试时,只是把虚拟数据放在DataSource.sour文件中。SQ代码usingSystem;SQ代码usingSystem;usingModel;usingSystem.IO;usingSystem.Runtime.Serialization.Formatters.Binary;usingSystem.Collections.Generic;namespaceManager{publicclassPersonManager{///虚拟数据源privateList<Person>DataSource(){FileStreamfileStreamnewFileStream("./DataSource.sour",FileMode.Open,FileAccess.ReadWrite);BinaryFormatterformatternewBinaryFormatter();List<Person>personList=(List<Person>)formatter.Deserialize((fileStream));returnpersonList;}//获取所有的Person
publicList<Person>GetList(){List<Person>personList=DataSource();returnpersonList;}//根据输入ID获取对应的PersonpublicPersonGetPersonByID(intid){foreach(PersonpersoninDataSource()){if(person.ID==id)
returnperson;}returnnull;}}}添加一个ConsoleApplication作为启动项目,在项目中添加对JNBShare.dll的引用(文件路径“\JNBridge\JNBridgeProv5.1\4.0-targeted"),然后添加配置文件田日 、/丄config文件<?xmlversion="1.0"encoding="utf-8"?>〈configuration〉<configSections><sectionGroupname="jnbridge"><sectionname="dotNetToJavaConfig"ty="System.Configuration.SingleTagSectionHandler"/><sectionname="javaToDotNetConfig"ty="System.Configuration.SingleTagSectionHandler"/><sectionname="tcpNoDelay"ty="System.Configuration.SingleTagSectionHandler"/><sectionname="javaSideDeclarations"ty="System.Configuration.NameValueSectionHandler"/><sectionname="assemblyList"ty="com.jnbridge.jnbcore.AssemblyListHandler,JNBShare"/></sectionGroup></configSections>
<jnbridge><dotNetToJavaConfigscheme="jtcp"host="localhost"port="8085"/><!--注意通讯接口必须与JNBridge中配置的接口一致一><javaToDotNetConfigscheme="jtcp"port="8086"/><!--注册共用程序集--><assemblyList>〈assemblyfile=".\Model.dll"/>〈assemblyfile=".\Manager.dll"/></assemblyList></jnbridge>〈/configuration〉最后启动服务SQ代码usingSystem;SQ代码usingSystem;usingcom.jnbridge.jnbcore;namespaceNET_Service{classProgram{staticvoidMain(string[]args){Console.WriteLin".NETStart!");//启动.NET端服务,注意必须添加对JNBShare的引用,才可使用com.jnbridge.jnbcore.DotNetSideDotNetSide.startDotNetSide();Console.ReadKey();//关闭.NET端服务DotNetSide.stopDotNetSide();}}}生成转换层代码
打开JNBridge,选择工具栏"Addclassfromassemblyfiles",分别加入Model.dll,Manager.dll及mscorlib.dll(此程序集存在于“C:\Windows\Microsoft.NET\Framework\v4.0.30319\",里面包含System,System.Collections,System.IO等等重要的命名空间)在选择必要的类以后,按下“Project->Build",系统就会对应选择把.NET里面的类生成对class放入Proxy.jar代理包。Java端开发新建一个Java项目,引用刚生成的代理包Proxy.jar,还有jnbcore.jar、bcel-5.1-jnbridge.jar(在5.1版本中,这两个文件存在于“/JNBridge/JNBridgeProv5.1/jnbcore/"),把JNBridge的TCP配置文件jnbcore_perties复制到bin文件夹内,开发一个测试端。值得注意的是在生成Proxy.jar代码包的时候,必须对System.Collections.Generic,System.String等等这些常用类的空间添加引用,否则,在Java里面就无法调用.NET里面的System.Collections.Generic.List等这些常用类。由于在Java里面对像List这些常用的类具有类名之间的冲突,所以在Proxy里面会对System.Collections.Generic.List这些类命名为System.Collections.Generic.List_1。因日代码完成JAVA端后,先启动.NET服务端,再启动JAVA端,JAVA就会调用到.NET端的数据,屏幕将显示出测试结果:Id:0Age:29Name:LeslieId:1Age:23Name:RoseId:2Age:22Name:Jack在JNBridge官网上有着许多的开发例子,在此不多介绍。对不同开发类型的转换需要调用不同的工具包,各位可以直接参考官网上的教材。Java与・NET的混合开发模式在众很多的大型系统开发中,开发工具往往不限制于同一种开发语言,而是会使用多种开发语言的混合型开发。像在开发底层与业务层的过程中,由于.NET只限制工作于Windows系统,而JAVA可以在Windows、Unix、Linux中灵活运用而更受到欢迎。但在开发UI表现层里,很明显像Swing、Applet等开发工具受到的限制更多,而WPF、Siverlight、WinForms等开发工具因为具有成熟的控件与华丽的页
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 客运站安全管理制度
- 家乐福产品管理制度
- 家庭文件夹管理制度
- 应急器材库管理制度
- 归口领导与管理制度
- 影视中控室管理制度
- 微机课安全管理制度
- 心电图员工管理制度
- 快递员派送管理制度
- 怎样做电镀管理制度
- 2024届新疆维吾尔阿克苏地区小升初语文检测卷含答案
- MOOC 工科数学分析(一)-北京航空航天大学 中国大学慕课答案
- 汽车零部件生产过程大数据分析与管理
- 部编版《道德与法治》五年级下册第11课《屹立在世界的东方》教学设计
- 2023年新疆维吾尔自治区石河子市小升初数学试卷(内含答案解析)
- 初中地理七下8.3.2《撒哈拉以南非洲》教学设计
- 铝锭应用行业分析
- 湖北烟草公司招聘考试真题
- 心衰的中西医结合治疗
- 1000道100以内进位退位加减法题
- 公路技术状况检测与评定-公路技术状况评定
评论
0/150
提交评论