JAVA与.NET的相互调用 通过WEB服务实现相互调用以及例子
java_调用.net_WebService2

Java调用.net写的webservice2Java使用axis来调用.net写的asmx WebService,大体步骤如下。
Axis需要用到的包如下:1.axis.jarmons-discovery-0.2.jarmons-logging-1.0.4.jar4.jaxrpc.jar5.wsdl4j-1.5.1.jarjava调用的代码如下:.net webService的GetSafeMode方法[WebMethod]publicstring GetSafeMode(string factoryId, string simId){…….return“0”;}上面的例子演示了怎样传递参数和接收返回值,传递string类型的数据。
下面看看怎么解决传递Dataset的问题。
(以下为转贴)原文地址:/blog/325610版权归原文作者所有package etpsmsws.etpsms.hnas;import java.util.Iterator;import space.QName;import org.apache.axis.client.Call;import org.apache.axis.client.Service;import org.apache.axis.message.MessageElement;import org.apache.axis.types.Schema;/*** <p>* Title:* </p>* <p>* Description:* </p>* <p>* Copyright: Copyright (c) 2004* </p>* <p>* Company:* </p>** @author not attributable* @version 1.0*/public class testSoap2 {public testSoap2() {}public static void main(String[] args) {try {String wsdlUrl = "http://test";String soapActionURI = "HNAS.EtpSms.EtpSmsWS/GetRecvFromTemp"; Service service = new Service();Call call = (Call) service.createCall();//// call.setOperationName(new QName("HNAS.EtpSms.EtpSmsWS",// "EtpSmsWSSoap"));call.setOperationName(new QName("HNAS.EtpSms.EtpSmsWS", "GetRecvFromTemp"));call.setTargetEndpointAddress(new .URL(wsdlUrl));call.addParameter(new QName("HNAS.EtpSms.EtpSmsWS", "iMemberId"), org.apache.axis.encoding.XMLType.XSD_INT,javax.xml.rpc.ParameterMode.IN);call.setReturnType(org.apache.axis.encoding.XMLType.XSD_SCHEMA); call.setUseSOAPAction(true);call.setSOAPActionURI(soapActionURI);Object[] objs = new Object[] { "8918"};Object res = call.invoke(objs);// System.out.println(res);Schema schema = (Schema) res;MessageElement[] messageElement = schema.get_any();for (int i = 0; i < messageElement.length; i++) {// System.out.println(messageElement[i].getChildElements());// System.out.println(messageElement[i].getRealElement()// .getChildren());Iterator iterator = messageElement[i].getChildElements();while (iterator.hasNext()) {MessageElement m = (MessageElement) iterator.next();m = m.getRealElement();Iterator it = m.getChildElements();while (it.hasNext()) {m = (MessageElement) it.next();it = m.getChildElements();while (it.hasNext()) {m = (MessageElement) it.next();System.out.println(m.getValue());}}}}} catch (Exception ex) {System.err.println(ex.toString());}}}注意事项:参数必须是String类型的,你定义的是啥类型不管。
Java客户端调用.NET的WebService实例

Java客户端调⽤.NET的WebService实例项⽬需要去调⽤.NET的WebSrevice,本⾝是Java,研究了半天,终于有些头绪,记下来。
1,新建.NET WebService。
只在原⽅法上加上⼀个string类型的参数str[WebMethod]public string HelloWorld(string str){return "Hello World";}2,新建Java的WebService客户端,lib引⼊以下5个jar包(我是⽤idea⽣成的WebService客户端,会下载7个包,我试着删掉了log4j和saaj两个包也能正常运⾏)import org.apache.axis.client.Call;import org.apache.axis.client.Service;import org.apache.axis.encoding.XMLType;import space.QName;import javax.xml.rpc.ParameterMode;public class HelloWorldClient {public static void main(String[] argv) {String endpoint ="http://localhost:64662/WebService1.asmx?wsdl";try {// 定义服务Service service = new Service();Call call = (Call) service.createCall();call.setTargetEndpointAddress(endpoint);call.setOperationName(new QName("/", "HelloWorld"));call.setSOAPActionURI("/HelloWorld");call.addParameter(new QName("/", "str"),// 这⾥的str对应webservice参数名称XMLType.SOAP_STRING, ParameterMode.IN);call.setReturnType(XMLType.SOAP_STRING);String retVal1 = (String) call.invoke(new Object[] {"Hello World!"});System.out.println(retVal1);} catch (Exception e) {e.printStackTrace();}}}注:1,⽹上看到有直接写成call.setOperationName("HelloWorld"),我试过不⾏。
java和.net两大平台的分析及互用

摘要在Java平台推出并发展了十多年后, Microsoft的 .net平台闪亮登场,到现在为止,也已经发展了几年了,从最初的版本发展到现在的2.0版本。
java平台有着许多闪亮的地方,而后到的.net平台也有其过人之处。
但是本文所关心的并不是java平台和.net 平台,谁比谁更优秀或谁是谁的终结者,而是两者各自有什么特点,如何和平共处,实现彼此之间的互用。
因为两者实现互用将为软件行业带来极大的惊喜,为企业节省很大的软件投资,包括时间和成本。
本文首先是对java平台和.net平台进行了一个简单的介绍,对这两个平台进行了简单的分析,并且指出了这两大平台各自的优点。
接着讲述了这两大平台实现互用的必要性, 基础和所面对的挑战,然后介绍了实现互用的基本方法: 代码转换, 第三方运行时桥, xml webservice, 面向消息的中间件, 共享数据库, 集成代理程序。
最后是针对互用的未来发展,讲述了一些个人的看法。
毕竟现在的互用技术并不是相当的完善,还有待进一步的发展和提高。
但是相信经过世人的努力,java平台和.net平台的互用将会得到更好的实现,甚至实现所谓的“完美”的结合。
本文只是讲述了java 和.net 的基本知识和基本的互用实现,对于当中的许多复杂问题,如,实现单点登录(共享session),实现事务性,实现安全性……没有进行论述。
关键词: .net远程处理, java, .net, 互用, 互联网服务, xml, 消息, 序列化ABSTRACTJava platform has born and developed for about ten years. After that, Microsoft .net was born and has developed for several years too, from the newest version to the 2.0 version. Java platform has much advantage. But the .net platform also has much advantage. This article does not care about java platform and .net platform who is whose terminator, just want to show the advantage of java platform and .net platform and how to achieve interoperability of java and .net, because if these two platforms can achieve interoperability, it will give the software industry a great surprise, save the money and time for the enterprise. This article first gives a simple introduction about java platform and .net platform, point out the advantage of both java platform and .net platform. Then, talk about the necessary, the base and the challenge of achieving interoperability between these two platforms. Code changing, third party runtime bridge, xml web service, Message-Oriented Middleware, sharing database, Integration Brokers and Orchestration are the basic methods used to achieve interoperability. At the end of this article, there is some opinion of myself about the future of the interoperability. I believe that interoperability of java and .net would be more and more perfect. In this article, some complex issues, such as sharing session, achieving transaction, security etc are not related to.Keywords:.net remoting, java, .net, Interoperability, web service, xml, message, serialization目录摘要 (I)ABSTRACT (II)1绪言 (1)2认识JAVA平台 (2)2.1J AV A简介 (2)2.2J AV A的优势 (5)3认识.NET平台 (7)3.简介 (7)3.的优势 (11)和JAVA的互用 (13)4.1互用的基础和所面对的挑战 (13)4.2实现互用的基本方法 (20)4.2.1通过代码转换实现互用 (20)4.2.2通过第三方运行时桥实现互用 (22)4.2.3通过X ML WEBSERVICE 实现互用 (33)4.2.4使用面向消息的中间件来实现互用 (40)4.2.5通过共享数据库来实现互用 (41)4.2.6利用集成代理程序来实现互用 (42)4.3互用的未来发展 (44)5总结和体会 (45)致谢 (46)参考文献 (47)1 绪言“互用”,是指使用行业标准或被广泛认可的数据描述和通讯协议,在采用不同技术实现的不同平台上运行的功能单元之间进行通讯或者传输数据的能力。
Java调用.net的WebService-阿善的日志-网易博客

Java调用.net的WebService-阿善的日志-网易博客这几天公司需要做一个java和.net项目的整合,其中.net做了一个WebService,需要java来调用。
本以为很容易的一个东西,结果弄了几天才弄好。
最开始.net的Service代码如下(黄色背景是自己增加的代码)://<%@ WebService Language="C#" Class="Service" Debug=true %>using System;using System.Web;using System.Web.Services;using System.Web.Services.Protocols;namespace Service{[WebService(Namespace="")]/// <summary>/// Service1 的摘要说明。
/// </summary>public class Service : System.Web.Services.WebService{public Service(){//CODEGEN: 该调用是 Web 服务设计器所必需的InitializeComponent();}#region 组件设计器生成的代码//Web 服务设计器所必需的private IContainer components = null;/// <summary>/// 设计器支持所需的方法 - 不要使用代码编辑器修改/// 此方法的内容。
/// </summary>private void InitializeComponent(){}/// <summary>/// 清理所有正在使用的资源。
/// </summary>protected override void Dispose( bool disposing ){if(disposing && components != null){components.Dispose();}base.Dispose(disposing);}#endregion[WebMethod(Description="test")]public string GetTestQuestions(string TeacherName,string Subject){return "11111";}}}=================Java调用代码:public static String GetTestQuestions(String TeacherName,String Subject){String result = "";try{Service service = new Service();Call call = (Call) service.createCall();call.setOperationName(new QName("", "GetTestQuestions"));call.addParameter("TeacherName", XMLType.XSD_STRING, ParameterMode.IN);call.addParameter("Subject", XMLType.XSD_STRING, ParameterMode.IN);call.setTargetEndpointAddress(new URL(""));result = (String) call.invoke(new Object[] { TeacherName, Subject});}catch(Exception e){e.printStackTrace();}return result;}public static void main(String args[]){System.out.println(UserWebService.GetTestQuestions("aaa", "HOMA060E"));}--------------------结果用java调用时总提示:faultString: 服务器未能识别 HTTP 标头 SOAPAction 的值:。
java 调用.net webservice的方法

java 调用.net webservice的方法在Java和.NET之间进行交互通常涉及到两种不同编程语言和平台之间的通信。
其中,.NET Web服务是一种常用的跨平台通信方式。
在Java中调用.NET Web 服务,可以通过多种方式实现,包括使用HTTP客户端库、SOAP库和Web服务适配器等。
下面将介绍一种常见的方法,以帮助您在Java中调用.NET Web服务。
一、准备工作1.确保您的Java应用程序已经安装并配置好。
2.确保您的.NET Web服务已经发布并可用。
3.安装适当的Java HTTP客户端库或SOAP库,以便在Java中调用Web服务。
二、Java调用.NET Web服务的步骤1.创建HTTP客户端对象使用Java HTTP客户端库(如Apache HttpClient或Java的HttpURLConnection)创建一个HTTP客户端对象,用于与.NET Web服务进行通信。
```javaHttpClient httpClient = HttpClientBuilder.create().build();```2.构建SOAP请求消息使用适当的SOAP库(如JAX-WS或CXF)构建SOAP请求消息,并将其发送到.NET Web服务。
确保您的SOAP请求符合Web服务的文档描述。
```javaSOAPMessage soapRequest = MessageFactory.createMessage();soapRequest.getSOAPPart().writeTo(System.out);```3.发送SOAP请求使用HTTP客户端对象将SOAP请求消息发送到.NET Web服务。
您可以使用HttpClient对象的execute()方法执行HTTP请求。
```javaHttpResponse httpResponse = httpClient.execute(webServiceUrl, context);```4.接收SOAP响应消息从Web服务的响应中获取SOAP响应消息,并解析其内容。
JAVA与.NET的相互调用——利用JNBridge桥接模式实现远程通讯

JAVA与.NET的相互调用——利用JNBridge桥接模式实现远程通讯分布式开发的历史利用Remote方式调用远程对象实现服务器与客户端之间通讯是一种常用的网络开发方式,在.NET与JAVA开发当中,对Remote远程对象早已有着足够的支持(对Remote远程对象调用有兴趣的朋友欢迎参考一下利用远程对象实现分布式开发)。
从2003年开始.NET当中就盛传着.NET Remoting远程对象调用的分布式开发,.NET Remoting主要用于管理跨应用程序域的同步和异步RPC 会话。
在默认情况下,Remoting可以使用HTTP 或TCP 协议进行信息通讯,并使用XML 编码的SOAP 或二进制消息格式进行数据交换。
.NET Remoting 提供了非常灵活和可扩展的编程框架,并且可以管理对象的状态。
在Framewok2.0出台以后,WCF盛世登场,它是综合了.NET Remoting远程对象,TCP/IP套接字,Web服务,MSMQ,P2P点对点等各类型通信方式的产物,WCF使远程通信进入另一个台阶。
而在JAVA方面,对远程通信也有强大的支持,它定义了的RPC(Remote Procedure Call Protocol)协议是—项远程过程调用协议,它可以通过网络从远程计算机请求的服务获得计算结果,它无需了解底层网络技术的协议就可以使用如TCP或UDP等通信方式,为程序之间传递信息数据。
在网络通信模型中,RPC跨越了传输层和应用层。
RPC使系统更容易地实现分布式式开发。
但RPC 通讯却并未实现面向对象的开发原则,到而RMI(Remote Method Invocation)远程方法调用是一种计算机之间利用远程对象互相调用实现通讯的一种机制。
它以面向对象的开发方式,利用RPC协议,使服务器与客户端的对象能够实现远程调用。
但在.NET Remoting与RMI通信中同时存在一个弊端,那就是对开发语言的限制,无论是使用哪一种通讯方式,服务器与客户端都必须支持同一种开发语言。
.NET 访问JAVA的WEBSERVICE使用SOAP头

.NET 访问JAVA的WEBSERVICE使用SOAP头进来做的项目需要和JAVA的WebServices进行交互,其中访问WS的时候需要传入SOAP 头进行验证。
其中关键就是SOAP头内容。
由于JAVA的WS在.NET下生成的代理是没有SOAP 头的内容,所以需要手工修改代理类,达到可以传输SOAP头的目的。
1:修改代理类,建立SOAP头的对象:/// <remarks/>[piler.GeneratedCodeAttribute("System.Xml", "2.0.50727.3053")][System.SerializableAttribute()][System.Diagnostics.DebuggerStepThroughAttribute()][ponentModel.DesignerCategoryAttribute("code")][System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = true)] public partial class MySoapHeader : System.Web.Services.Protocols.SoapHeader{private string tokenValue;private System.Xml.XmlAttribute[] anyAttrField;/// <remarks/>//[XmlIgnoreAttribute]//[XmlAttribute("")][XmlTextAttribute()]public string TokenValue{get{return this.tokenValue;}set{this.tokenValue = value;}}/// <remarks/>[System.Xml.Serialization.XmlAnyAttributeAttribute()]public System.Xml.XmlAttribute[] AnyAttr{get{return this.anyAttrField;}set{this.anyAttrField = value;}}}2:修改代理类,添加一个SOAP对象:private mySoapHeader soapHeaderValue;public MySoapHeader SoapHeaderValue{get{return this.soapHeaderValue;}set{this.soapHeaderValue = value;}}3:在需要SOAP上方法上添加如下的代码:[System.Web.Services.Protocols.SoapHeaderAttribute("SoapHeaderValue")]public bool verifyWebserviceTest(){object[] results = this.Invoke("verifyWebserviceTest", new object[0]);return ((bool)(results[0]));}调用的时候使用如下代码:ArcWS.ManDispCmdSessionBeanService ws = new ARSSMonSite.ArcWS.ManDispCmdSessionBeanService();ArcWS.loginToken soapHeader = new ARSSMonSite.ArcWS.loginToken();soapHeader.TokenValue = "arsssongguixiang#19990101010101";ws.SoapHeaderValue = soapHeader;ws.verifyWebserviceTest();这样,就可以正确的向JAVS的WS传送SOAP头的信息。
webservice java调用示例

Web服务是一种基于网络的软件系统,它使用标准化的XML消息格式来交换数据。
这篇文章将介绍如何在Java中调用Web服务的示例。
1. 准备工作在开始调用Web服务之前,我们需要确保已经安装了Java开发环境,并且已经了解了Web服务的基本概念和相关知识。
2. 创建Java项目我们需要创建一个新的Java项目。
可以使用Eclipse、IntelliJ IDEA或者其他Java集成开发环境来创建项目。
在项目中,我们需要创建一个新的Java类来进行Web服务的调用。
3. 导入Web服务接口在Java项目中,我们需要导入Web服务的接口。
这可以通过WSDL (Web服务描述语言)文件来实现。
WSDL文件定义了Web服务的接口和可用操作。
可以使用wsimport工具来生成Java代码,该工具在Java的安装目录下的bin目录中可以找到。
4. 调用Web服务一旦导入了Web服务的接口,我们就可以使用Java代码来调用Web 服务了。
我们可以通过创建代理对象来调用Web服务的操作。
以下是一个简单的示例代码:```javaimport.example.webservice.MyWebService;import.example.webservice.MyWebServiceService;public class WebServiceClient {public static void main(String[] args) {MyWebServiceService service = new MyWebServiceService();MyWebService port = service.getMyWebServicePort();// 调用Web服务的操作String result = port.sayHello("World");System.out.println(result);}}```在这个示例中,我们首先创建了Web服务的代理对象,然后调用了Web服务的sayHello操作,并打印出了返回的结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
return personList;
} }
在 Service.xml 上面对服务进行配置 代码
SOAP
SOAP 即简单对象访问协议(Simple Object Access Protocol),它是用于交换 XML 编码信息的轻量级协议。它有三 个主要方面:XML-envelope 为描述信息内容和如何处理内容定义了框架,将程序对象编码成为 XML 对象的规则,执 行远程过程调用(RPC)的约定。SOAP 可以运行在任何其他传输协议上。例如,你可以使用 SMTP,即因特网电子邮件 协议来传递 SOAP 消息,这可是很有诱惑力的。在传输层之间的头是不同的,但 XML 有效负载保持相同。Web Service 希望实现不同的系统之间能够用“软件-软件对话”的方式相互调用,打破了软件应用、网站和各种设备之间的格格不入的 状态,实现“基于 Web 无缝集成”的目标。
此时为此项目添加测试类,运行进行测试 代码
二、使用 JAVA 作为服务器端,.NET 作为客户端实现相互调用。
JAVA 开发 Web Service 的工具有很多,最常用的有 Axis、XFire、NetBean 等,在 JAVA-SE 6.0 以上支持 JAX-WS2.0 ,JAX-WS 2.0 是 JAX-RPC 1.0 的更新产品。在 JAX-WS 中,一个远程调用可以转换为一个基于 XML 的协议例如 SOAP。在使用 JAX-WS 过程中,开发者不需要编写任何生成和处理 SOAP 消息的代码。JAX-WS 的运行 时实现会将这些 API 的调用转换成为对于 SOAP 消息。 在服务器端,用户只需要通过 Java 语言定义远程调用所需要 实现的接口 SEI (service endpoint interface),并提供相关的实现,通过调用 JAX-WS 的服务发布接口就可以将其 发布为 WebService 接口。在下面我们就以 XFire 建立一个 Web Service。 首先建立一个在一个项目上单击右键,选择 MyEclipse->Add XFire Web Service Capabilities,引用了 XFire 工具 包以后。在项目会自动建立一个 WebServices 文件夹,文件夹里面的 service.xml 就是对发布 Web Service 进行配 置的。 现在先建立好一个服务层
XML 和 XSD
可扩展的标记语言 XML 是 Web Service 平台中表示数据的基本格式。除了易于建立和易于分析外,XML 主要的优 点在于它既与平台无关,又与厂商无关。XML 是由万维网协会 (W3C)创建,W3C 制定的 XML SchemaXSD 定义 了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。 Web Service 平台是用 XSD 来作为数据类型系统 的。当你用某种语言如 JAVA、C#来构造一个 Web Service 时,为了符合 Web Service 标准,所有你使用的数据类 型都必须被转换为 XSD 类型。如想让它使用在不同平台和不同软件的不同组织间传递,还需要通过 SOAP 协议将它包 装起来。
代码
//建立一个 Model 包,里面包含一个值对象 Person
package Model;
import java.io.Serializable; public class Person implements Serializable {
private int id; private String name; private int age;
代码 为了使用 Person 能够实现远程传送,我们必须对 Person 进行序列化,在 WCF 中包括服务契约、数据契约、消息契 约三部分,而数据契约正是用于对数据进行序列化处理的,如果想对 WCF 有进一步的了解,可以链接使用 WCF 实现 SOA 面向服务编程
代码 数据契约里面有多种的序列化方式,包括 DataContractSerializer,NetDataContractSerializer,XmlServializer,DataContractJsonSerializer。在这里面只 用使用最普遍的 DataContractSerializer,而 DataContractJsonSerializer 是现今比较热门的方式,特别是在开发 网络项目时候,多使用 Json 进行数据通讯。 最后配置好 web.config,就可以成功将 WCF 服务发布
Service.PersonService </serviceClass> <implementationClass>
ServiceImpl.PersonServiceImpl </implementationClass> </service> </beans>
其配置功能如下:
service
service 标签和它所包含的 xml 内容为发布成 Web 服务的 POJO 提供完整的描述。
}
public int getAge(){ return age;
}
public void setAge(int age){ this.age=age;
} }
//建立一个 Service 包,里面包含服务接口
package Service;
import java.util.List; import Model.*;
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 class PersonServiceImpl implements PersonService{ public List<Person> GetList(){ List<Person> personList=new LinkedList<Person>();
Person person1=new Person(); person1.setId(0); person1.setAge(23); person1.setName("Leslie"); personList.add(person1);
public interface PersonService { List<Person> GetList();
}
//建Байду номын сангаас一个 ServiceImpl 包,实现服务
package ServiceImpl;
import Model.*; import Service.*; import java.util.*;
WSDL
<?xml version="1.0" encoding="UTF-8" ?> - <wsdl:definitions targetNamespace="http://leslie-pc:8080 /PersonService" xmlns:ns1="http://Model" xmlns:soapenc12=" /2003/05/soap-encoding" xmlns:tns="http: //leslie-pc:8080/PersonService" xmlns:wsdl="http://schema /wsdl/" xmlns:xsd="/2001/XM LSchema" xmlns:soap11="/soap/en velope/" xmlns:wsdlsoap="/wsdl/ soap/" xmlns:soapenc11="/soap/e ncoding/" xmlns:soap12="/2003/05/soap-en velope"> - <wsdl:types> - <xsd:schema xmlns:xsd="/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qual ified" targetNamespace="http://leslie-pc:8080/PersonServi ce"> - <xsd:element name="GetList">
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="/config/1.0"> <service>
<name>PersonService</name> <namespace>http://leslie-pc:8080/PersonService</namesp ace> <serviceClass>
JAVA 与.NET 的相互调用——通过 Web 服务实现相互调用(附原代码)
JAVA 与.NET 是现今世界竞争激烈的两大开发媒体,两者语言有很多相似的地方。而在很多大型的开发项目里面,往往 需要使用两种语言进行集成开发。而很多的开发人员都会偏向于其中一种语言,在使用集成开发的时候对另一种语言感 觉到畏惧。在这里在下向各位介绍一下,JAVA 与.NET 相互调用的例子。下面的介绍主要包括三方面:一是通过常用 Web 服务进行相互调用,二是使用 TCP/IP 套接字进行相互调用,三是使用 Remote 实现远程对象相互调用。 在这章里面先为大家介绍一下最简单,最常用的 Web 服务相互调用方式。首先说一下 Web 服务的来源,Web 服务是 一种新的 Web 应用程序分支,可以执行从简单的请求到复杂商务处理等任何功能。一旦部署以后,其他 Web 服务应用 程序可以发现并调用它部署的服务。 Web Service 是一种应用程序,它可以使用标准的互联网协议,像超文件传输协 议(HTTP)、简单对象访问协议(SOAP)、XML 等,将功能纲领性地体现在互联网和企业内部网上,Web 服务被视作是 Web 上的组件编程。Web 服务必须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中的不同类型 系统。