




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JAVA与.NET的相互调用通过Web服务实现相互调用博客园 / 2011-08-28 / 字体大小选择:大 中 小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 ServiceContractpublic 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 DataContractpublic class Person DataMemberpublic int ID get;set; DataMemberpublic string Name get;set; DataMemberpublic 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包,里面包含一个值对象Person package Model;import java.io.Serializable;public class Personimplements 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 PersonServiceImplimplements PersonServicepublic 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上面对服务进行配置:PersonServicehttp:/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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中共江西省委党校(江西行政学院)高层次人才招聘27人考前自测高频考点模拟试题及答案详解(典优)
- 2025年龙岩市新罗区国有资产经营集团有限公司招聘招商专员考前自测高频考点模拟试题及答案详解(必刷)
- 2025年台州仙居县卫生健康系统公开招聘卫技人员8人考前自测高频考点模拟试题及答案详解一套
- 2025年5月广西师范大学劳动合同制员工招聘1人模拟试卷及答案详解(全优)
- 2025年甘肃农业职业技术学院高层次人才引进15人模拟试卷及答案详解一套
- 2025年新能源电池大数据分析报告:技术创新与市场布局
- 地热能供暖与智慧城市能源融合2025年技术发展动态报告
- 田租解约协议书
- 2025年生物质能源在分布式能源系统中的生物质能发电设备市场应用推广报告
- 协议书用地两规
- 2025双11大促商家一站式指南
- 助理医师考试题库及答案
- 电梯管理安全试题库及答案解析
- 2.2 6、7的加减法(课件)数学青岛版一年级上册(新教材)
- DL-T 794-2024 火力发电厂锅炉化学清洗导则
- 消防战斗服穿戴培训课件
- 老年病人误吸预防及护理
- 国庆假期安全课件小学
- GB/T 45817-2025消费品质量分级陶瓷砖
- 2025年4月自考02627运筹学与系统分析试题
- 2025年成都市中考英语试题卷(含标准答案及解析)
评论
0/150
提交评论