几种通讯模式
对于不同语言间的通讯可以考虑用Web Service或者公用对象请求代理体系(CORBA)来实现
Web Service
Corba
RMI:是Java语言的远程调用,两端的程序语言必须是Java实现
Spring自己的HTTP invoker
EJB
一个关于RMI的简单介绍
http://www.cnblogs.com/ninahan0419/archive/2009/06/25/javarmi.html
在JDK 1.5后使用RMI不在需要生成sub和skelton对象了, 这两个对象会在运行时动态生成
http://www.iteye.com/topic/161485
http://blog.163.com/hero_213/blog/static/39891214200931841559963/
SOCKET使用时可以指定协议TCP,UDP等;
RIM使用JRMP协议,JRMP又是基于TCP/IP;
RPC底层使用SOCKET接口,定义了一套远程调用方法;
HTTP是建立在TCP上,不是使用SOCKET接口,需要连接方主动发数据给服务器,服务器无法主动发数据个客户端;
可以用socket实现HTTP;
其实符合HTTP规范的就是HTTP协议,不管用什么技术。
hessian是一套用于建立web service的简单的二进制协议,用于替代基于XML的web service,是建立在rpc上的,hessian有一套自己的序列化格式将数据序列化成流,然后通过http协议发送给服务器,看源码发现其实是使用
HttpURLConnection和servlet建立连接,然后发送流
hessian
http://hessian.caucho.com
RIM和SOCKET比较,见下文
http://www.cppblog.com/sherrylso/archive/2007/07/28/28906.html
RMI和RPC差别
http://blog.csdn.net/zhigangsun/article/details/5892591
http和socket差别
http://sw1982.iteye.com/blog/460406
REST 代表性状态传输
http://www.ibm.com/developerworks/cn/webservices/ws-restful/index.html
http://www.iteye.com/topic/1111647
REST描述语言 WADL
SOAP 简单对象访问协议
描述语言WSDL
http://www.cnblogs.com/tianzhiliang/archive/2010/10/28/1863684.html
Web Service基本概念
Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。
XML:(Extensible Markup Language)扩展型可标记语言。面向短期的临时数据处理、面向万维网络,是Soap的基础。
Soap:(Simple Object Access Protocol)简单对象存取协议。是XML Web Service 的通信协议。当用户通过UDDI找到你的WSDL描述文档后,他通过可以SOAP调用你建立的Web服务中的一个或多个操作。SOAP是XML文档形式的调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。
WSDL:(Web Services Description Language) WSDL 文件是一个 XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息。大多数情况下由软件自动生成和使用。
UDDI (Universal Description, Discovery, and Integration) 是一个主要针对Web服务供应商和使用者的新项目。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件,UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制(标准的XML/HTTP)来发布,编辑,浏览以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。
SOA:
SOA面向服务的体系结构(service-oriented architecture,SOA)是一个系统软件组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。
WSDL,UDDI和SOAP是SOA基础的基础部件。WSDL用来描述服务;UDDI用来注册和查找服务;而SOAP,作为传输层,用来在消费者和服务提供者之间传送消息。SOAP是Web服务的默认机制,其他的技术为可以服务实现其他类型的绑定。一个消费者可以在UDDI注册表(registry)查找服务,取得服务的WSDL描述,然后通过SOAP来调用服务。
- 分布式架构 协议 调用方式
- -------------------------------------------------------
- Corba架构 专有二进制协议 对象的CRUD操作
- EJB架构 专有二进制协议 对象的CRUD操作
- Web Services SOAP协议 RPC方式
- REST HTTP协议 对资源的CRUD操作
- --------------------------------------------------------
REST的优点[编辑]
- 可以利用缓存Cache来提高响应速度
- 通讯本身的无状态性可以让不同的服务器的处理一系列请求中的不同请求,提高服务器的扩展性
- 浏览器即可作为客户端,简化软件需求
- 相对于其他叠加在HTTP协议之上的机制,REST的软件依赖性更小
- 不需要额外的资源发现机制
- 在软件技术演进中的长期的兼容性更好
Rest本身的内容比我想象的多的多,大致列出来几个关键点如下:
1.满足以下的Constraints:
- Client–server
- Stateless
- Cacheable
- Layered system
- Code on demand (optional)
- Uniform interface
2.设计接口时候的原则
- Identification of resources
- Manipulation of resources through these representations
- Self-descriptive messages
- Hypermedia as the engine of application state
3.Rest希望实现的目标
- Scalability of component interactions
- Generality of interfaces
- Independent deployment of components
- Intermediary components to reduce latency, enforce security and encapsulate legacy systems
4.Rest对于我们来说
Every Resouce has a ID.
We Can Use Http Meothod(Get/Post/Put/Delete) Handle Resource.
CORBA使用一种接口描述语言(Interface
description language)用于刻画对象将呈现出来的接口。CORBA又规定了从IDL到特定编程语言,如C++或Java,实现的映射。
GIOP 是用于ORB间数据传输的抽象协议,通用 ORB
间协议 (GIOP) 用来为这个由不同计算机及其各种体系结构组成的世界中传送消息定义结构和格式。如果使用 GIOP 的结构和格式,并将它们应用于 TCP/IP,那么就得到 IIOP。
使用Corba的好处[编辑]
- 与具体编程语言无关
- Java and C++, C-only, SmallTalk, Perl, Ada, Ruby, and Python等语言都有CORBA的实现,并且可以跨语言互操作。
- 操作系统无关
- Linux/Unix, Windows, Sun, Mac等系统都有CORBA的实现,并且可以互操作。
- 从技术细节中解脱
- 强数据类型
- 从繁琐的数据传递中解脱
- 压缩
- CORBA的底层数据通讯机制灵活,ZIOP扩展可以将数据压缩后进行传送,而应用程序开发人员可以不懂具体压缩技术,并且不用改动绝大部分代码。
1、Get 方法通过 URL 请求来传递用户的数据,将表单内各字段名称与其内容,以成对的字符串连接,置于 action 属性所指程序的 url 后,如[url]http://www.mdm.com/test.asp?name=asd&password=sad[/url],数据都会 直接显示在 url 上,就像用户点击一个链接一样;Post 方法通过 HTTP post 机制,将表单内各字段名称与其内容放置在 HTML 表头(header)内一起传送给服务器端交由 action 属性能所指的程序处理,该程序会通过标准输入(stdin)方式,将表单的数据读出并加以处理
如果你喜欢本文, 请长按二维码,关注公众号 分布式编程.
作者:分布式编程
出处:https://zthinker.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。