




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JAVA与.NET的相互调用通过Web服务实现相互调用JAVA与.NET是现今世界竞争激烈的两大开发媒体,两者语言有很多相似的地方。而在很多大型的开发项目里面,往往需要使用两种语言进行集成开发。而很多的开发人员都会偏向于其中一种语言,在使用集成开发的时候对另一种语言感觉到畏惧。在这里在下向各位介绍一下,JAVA与.NET相互调用的例子。下面的介绍主要包括三方面:一是通过常用Web服务进行相互调用,二是使用TCP/IP套接字进行相互调用,三是使用Remote实现远程对象相互调用。在这章里面先为大家介绍一下最简单,最常用的Web服务相互调用方式。首先说一下Web服务的来源,Web服务是一种新的Web应用程序分支,可以执行从简单的请求到复杂商务处理等任何功能。一旦部署以后,其他Web服务应用程序可以发现并调用它部署的服务。 Web Service是一种应用程序,它可以使用标准的互联网协议,像超文件传输协议(HTTP)、简单对象访问协议(SOAP)、XML等,将功能纲领性地体现在互联网和企业内部网上,Web服务被视作是Web上的组件编程。Web服务必须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中的不同类型系统。XML和XSD可扩展的标记语言XML是Web Service平台中表示数据的基本格式。除了易于建立和易于分析外,XML主要的优点在于它既与平台无关,又与厂商无关。XML是由万维网协会 (W3C)创建,W3C制定的XML SchemaXSD定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。 Web Service平台是用XSD来作为数据类型系统的。当你用某种语言如JAVA、C#来构造一个Web Service时,为了符合Web Service标准,所有你使用的数据类型都必须被转换为XSD类型。如想让它使用在不同平台和不同软件的不同组织间传递,还需要通过SOAP协议将它包装起来。 SOAPSOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。它有三个主要方面:XML-envelope为描述信息内容和如何处理内容定义了框架,将程序对象编码成为XML对象的规则,执行远程过程调用(RPC)的约定。SOAP可以运行在任何其他传输协议上。例如,你可以使用 SMTP,即因特网电子邮件协议来传递SOAP消息,这可是很有诱惑力的。在传输层之间的头是不同的,但XML有效负载保持相同。Web Service 希望实现不同的系统之间能够用“软件-软件对话”的方式相互调用,打破了软件应用、网站和各种设备之间的格格不入的状态,实现“基于Web无缝集成”的目标。 WSDLWeb Service描述语言WSDL就是用机器能阅读的方式提供的一个正式描述文档而基于XML的语言,用于描述Web Service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。下面分开两个方面讲解一下如果通过Web服务实现JAVA与.NET的相互调用。一、使用.NET作为服务器端,JAVA作为客户端实现相互调用。在.NET系统里面,以WCF作为新一代的服务开发工具是微软的一个新卖点,我们就以WCF为例子实现服务器端,首先新建一个网站项目,在网站添加一个WCF服务PersonService。你将看到PersonService.svc、IPersonService、PersonService.cs三个文件,其中IPersonService是对向暴露一个接口,接口的功能由PersonService来实现,客户端则通过PersonalService.svc来寻获服务,并对其添加引用的。/在PersonService.svc里,只包括一行,其中列明了该服务的实现类/服务的实现using System;using System.Collections.Generic;using System.Linq;using System.Runtime.Serialization;using System.ServiceModel;using System.Text;/ 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IPersonService”。namespace Service ServiceContract public interface IPersonService OperationContract IList GetList(); public class PersonService : IPersonService public IList GetList() IList personList = new List(); Person person1 = new Person(); person1.ID = 0; person1.Age = 27; person1.Name = Leslie; personList.Add(person1); Person person2 = new Person(); person2.ID = 1; person2.Age = 23; person2.Name = Rose; personList.Add(person2); Person person3 = new Person(); person3.ID = 2; person3.Age = 29; person3.Name = Jack; personList.Add(person3); return personList; 为了使用Person能够实现远程传送,我们必须对Person进行序列化,在WCF中包括服务契约、数据契约、消息契约三部分,而数据契约正是用于对数据进行序列化处理的,如果想对WCF有进一步的了解,可以链接使用WCF实现SOA面向服务编程:using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Runtime.Serialization;/ /Person 的摘要说明/ namespace Service DataContract public class Person DataMember public int ID get; set; DataMember public string Name get; set; DataMember public int Age get; set; 数据契约里面有多种的序列化方式,包括DataContractSerializer,NetDataContractSerializer,XmlServializer,DataContractJsonSerializer。在这里面只用使用最普遍的DataContractSerializer,而DataContractJsonSerializer是现今比较热门的方式,特别是在开发网络项目时候,多使用Json进行数据通讯。最后配置好web.config,就可以成功将WCF服务发布: /注意将httpGetEnabled设置为true,使客户端能够成功捕获服务 /name属性必须与服务实现类的类名相对应 /contract必须与契约名相对应 /注意打开元数据,使客户能下载 下面使用MyEclipse8.6进行客户端开发,首先添加对服务的引用,按Ctrl+N新建一个项目,选择Web Service-Web Service Client,单击下一步,这时候选择在Framework上选择JAX-WS,单击下一步:在WSDL URL上输入服务的路径,并为服务添加一个Java pagckage包myServices,点击完成,这样WCF服务便可成功加入到客户端。此时为此项目添加测试类,运行进行测试:package myAssembly;import java.util.List;public class Test public static void main(String args) myServices.PersonService service=new myServices.PersonService(); /获取服务对象 myServices.IPersonService personService=service.getBasicHttpBindingIPersonService(); /通过basicHttpBinding协议绑定远程对象 List personList=personService.getList().getPerson(); for(int n=0;nAdd XFire Web Service Capabilities,引用了XFire工具包以后。在项目会自动建立一个WebServices文件夹,文件夹里面的service.xml就是对发布Web Service进行配置的。现在先建立好一个服务层:/建立一个Model包,里面包含一个值对象Personpackage Model;import java.io.Serializable;public class Person implements Serializable private int id; private String name; private int age; public int getId() return id; public void setId(int id) this.id=id; public String getName() return name; public void setName(String name) =name; public int getAge() return age; public void setAge(int age) this.age=age; /建立一个Service包,里面包含服务接口package Service;import java.util.List;import Model.*;public interface PersonService List GetList();/建立一个ServiceImpl包,实现服务package ServiceImpl;import Model.*;import Service.*;import java.util.*;public class PersonServiceImpl implements PersonService public List GetList() List personList=new LinkedList(); Person person1=new Person(); person1.setId(0); person1.setAge(23); person1.setName(Leslie); personList.add(person1); Person person2=new Person(); person2.setId(1); person2.setAge(30); person2.setName(Mike); personList.add(person2); return personList; 在Service.xml上面对服务进行配置: PersonService http:/leslie-pc:8080/PersonService Service.PersonService ServiceImpl.PersonServiceImpl 其配置功能如下: service service 标签和它所包含的 xml 内容为发布成 Web 服务的 POJO 提供完整的描述。 name Web 服务被发布时所采用的唯一名称。 namespace Web 服务发布时所使用的命名空间。 serviceClass Web 服务接口类的全名,包括包名和类名。 implemetationClass Web 服务实现类的全名,包括包名和类名。现在可以运行程序,对服务进行测试,在测试时输入服务地址http:/leslie-pc:8080/WebSite1/services/PersonService?wsdl,系统将显示wsdl代码: - - - - - - - - - - - - - - - - - - - - - - 服务器端测试已经成功,现在使用.NET对服务进行调用,在项目上单击右键-选择添加Web服务-在URL地址上输入服务的地址http:/leslie-pc:8080/WebSite1/services/PersonService?wsdl ,在一个页面上输入代码进行测试。 protected void Page_Load(object sender, EventArgs e) Service.PersonService personService = ne
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子调温电炉培训
- 物业工程安全培训
- 2026届四川省绵阳地区化学九上期中学业水平测试模拟试题含解析
- 2026届北京市丰台区名校九年级化学第一学期期中统考试题含解析
- 传统木工技术概述
- 2026届重庆市南川区部分学校化学九上期末达标检测模拟试题含解析
- 2026届浙江省部分地区化学九年级第一学期期中学业质量监测模拟试题含解析
- 四川省成都市温江区第二区2026届化学九上期中质量检测模拟试题含解析
- 地生教学工作总结
- 湖北省武汉市江汉区2026届九上化学期中复习检测模拟试题含解析
- 夫妻忠诚协议书8篇
- 2025年信用管理专业题库- 信用管理对企业市场风险的控制
- 双重上市公司“管理层讨论与分析”披露差异:剖析与弥合
- 物流会计面试试题及答案
- 集装箱货物高效清关代理服务合同范本
- 2025年结构上岗试题及答案
- 教科版小学五年级上册科学实验报告20篇
- 2025-2026学年人教版(五线谱)(2024)小学音乐三年级上册教学计划及进度表
- 江西省宜春市2025年上半年事业单位公开遴选试题含答案分析
- 开学第一课暨校长思政课:弘扬伟大抗战精神赓续强国复兴血脉
- 代销理财管理办法
评论
0/150
提交评论