频道栏目
首页 > 资讯 > Java > 正文

JAVA与.NET的相互调用——通过Web服务实现相互调用

11-05-31        来源:[db:作者]  
收藏   我要投稿

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协议将它包装起来。
SOAP
SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。它有三个主要方面:XML-envelope为描述信息内容和如何处理内容定义了框架,将程序对象编码成为XML对象的规则,执行远程过程调用(RPC)的约定。SOAP可以运行在任何其他传输协议上。例如,你可以使用 SMTP,即因特网电子邮件协议来传递SOAP消息,这可是很有诱惑力的。在传输层之间的头是不同的,但XML有效负载保持相同。Web Service 希望实现不同的系统之间能够用“软件-软件对话”的方式相互调用,打破了软件应用、网站和各种设备之间的格格不入的状态,实现“基于Web无缝集成”的目标。
WSDL
Web 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里,只包括一行,其中列明了该服务的实现类<%@ ServiceHost Language="C#" Debug="true" Service="Service.PersonService" CodeBehind="~/App_Code/PersonService.cs" %>//服务的实现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<Person> GetList();    }     public class PersonService : IPersonService    {        public IList<Person> GetList()        {            IList<Person> personList = new List<Person>();                        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;/// <summary>///Person 的摘要说明/// </summary>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服务发布

代码
<?xml version="1.0"?><configuration>    <system.serviceModel>        <behaviors>            <serviceBehaviors>                <behavior name="serviceBehavior">                    <serviceMetadata httpGetEnabled="true"/> //注意将httpGetEnabled设置为true,使客户端能够成功捕获服务  &nb

相关TAG标签
上一篇:代码意识流——花朵数问题(一)
下一篇:JAVA与.NET的相互调用——TCP/IP相互调用基本架构(附原代码)
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站