53. 现在来讲web service.通过其他的示例来讲。
在上海,有一台机器,有一个java虚拟机,那里面有一个对象,我现在就有我这里调他,这不两个java虚拟机吗?两个 java虚拟机他是两个进程的,他的地址空间自己是自己的,不能说你new 一下就调了,调不了,
54. 上午说了这个事,jndi这块代码,放到jsp里我new 一下,就能从jndi服务上查到,因为jsp和我们的jndi服务是在同一个进程里,所以我可以new ,,不在同一个进程里你不能new ,,那个就在那个进程里,就像在那个屋里一样,你能拿到吗?那层资源你拿得到吗?你还穿墙啊,
55. 你把jndi那块代码你放到一个main方法里,你也拿不到,main里面也是一个进程 ,他和tomcat的进程是不同的。main在java虚拟机里。
56. 你想我现在要和上海的进程要通信啊,我new 不了的话,你要把那个对象给我传过来,这个传过来,你不能随便传过来,你得序列化变成二进制,一传,传,传,传到我的jvm里, 我的Jvm认识了,把你这个对象一转换,
57. 还记得序列化吧,你存到文件里一样,存成二进制,然后一转 转成java对象。他那边传过来也是一样的。每次传输都要进行序列化,都要进行压包和解包的过程,所以他的效率是慢的。那这些过程谁做了,他们之前还得遵循一个协议 ,,你这么 传,我就这么 解,这就是一种协议。
58. 所以我调上海 那个东西,我要调他的方法,他要通过一个Stub(存根) 存根的概念,这是分布式通讯里面的,大同小异他们都是这样的,
59. 存根这个是什么,是一个非常典型的代理模式,他是远端对象在客户端的代理。代理嘛,跟目标对象接口一模一样的。所以我就直接就调Stub,,他就会在代理
里来封装访问细节,怎么把你这个压缩了,压包了,编码了,通过相应的协议 传 传 传,假设我们现在要讲的webservice他就通过 soap 如果你是ejb他会采用
rmi-iiop 如果你基于corba这种架构他是iiop
传到skeleton骨架,他会解析,就解成java对象了,所以java就看见了,然后,你把信息得到之后,他返回了,返回了他由这个骨架压缩编码,编码再通过相应的协议传过去。
60.
客户端 远程对象
Stub(存根) SKeleton(骨架)
61. 其实 分布式 程序就是存根 和骨架之间的通讯。分布式通讯都类似,差不多是这样的。
62. Stub这个代理也分静态的和动态的,静态的就是确确实实有,你看到了Stub这个代理类了,
63. 其实在以前这个ejb开发 的时候,很久以前了02年之前,02年 ejb2.x刚出来,在他1.x的时候,他有些服务器的支持还不行,你写一个ejb至少要写3个类,一编译后5,6个类出来了。后来就改了,开发jboss 的ejb容器的这个人,在java上,技术上是非常厉害的一个人,他引入了jdk的动态代理来完成jdk的存根的自动生成,所以ejb的开发就简单一些,就写大类就行了。存根在运行的 时候生成,
64. 他说现在他用两种语言来实现分布式通讯。
65. Web Services 这个东西,你有时候可能看到有很多人写 这个名词都不带s, 这个不标准,不带s指的是单独的服务,带s指的是整个技术架构。
66. 他说什么axis-bin是他的一个引擎。
67. 刚才就说了,咱们这种分布式的东西,就是说我这边一个Jvm你寻那边一个jvm,那这怎么传啊,假设现在上海 有一个服务器,有一个服务,我现在要用java来调他,而上海 那个不是用Java写的,上面 举的例子是上海那边是用java写的,
68. 像我们之前讲的javascript跟java打交道,这就是两种语言啊,你不能随便传,说把那个java对象给传过来,javascript他不认识的。所以我们要转换成文本传过来,后来我们转成了一个xml文件来传。这就是异构语言的一个交互。xml就是文本文件啊。
69. 假设在上海 有一个服务,假设那个服务就叫取得天气预报吧,我现在就写一 main方法,用java写去调他,那个服务不是用java写的,不知道他怎么写的,我也不知道,所以他就得把文本给我传过来,web services这套技术的话,他传的是xml文件,他这个协议叫soap 简单对象访问协议 就是http+xml 他通过http协议传xml文件,
70. 以前通过httplook看到,他访问 的时候,他是把那个html传过来 了,而这里是xml给传过来 了。
71. 其实通讯就是这样的,我去请求上海那边的天气预报,我这么 一请求过去,上海那边,他形成xml文件给我,传过来,我们这边就负责把xml文件,转换成java对象,然后我再调把java对象转换成xml文件,传,传,传,又传到上海去,Skeleton他负责把xml文件 转换成相应语言的对象,假设就c++.
72. 所以webservices能做什么事,异构语言通信,可以做异构系统整合,现在有一定的应用,就要用在异构系统的整合,你这个都是java开发 的,你用webservices干什么,都是java开发的,他的访问效率也快啊,他的传输是以二进制进行传输啊,你用webservices他传的是xml大文本。
73. 除非你的系统是多元开发,你可以考虑使用webservices,这种技术构架来解决,或者你这个系统做得通用一些,你可以开放一些webservices这种方法,因为未来别人可能调我,省得我还再做。
74. 就是说没有这种webservices技术,我们怎么通讯 啊,其实方式有很多,你 天气预报的那边我管你用什么语言写,你把数据库表开放,我用jdbc去操作你不就实现了,这不一样调吗?只是开放表结构不太好,安全性也不太好,因为有些数据不是通过单独一张表就能出来的,有些数据是通过一定的算法才出来的,这样也不标准,开放表结构。
75. 还有别的,不这样通讯 行不行啊,你可以把天气预报信息定时地上报到某一个服务器上去,假设一个Ftp Server 比如明天的天气预报你晚上12点之前,我这个java程序,第二天早上去取去,这不也行吗?这只是不及时罢了,这有多种,只不过以前这些做法也不规范。
76. 还有我可以发消息,我可以发一个消息给c#那边写的天气预报,你发个消息给他,你说我要天气预报,
他发消息给你,这样可以吧,所以进程间通信我们可以发消息。
77. 方式有很多种,另外还有,我们这个说的是webservices难道没有别的技术标准吗?有啊,假设现在两边都是java做的,是Java的话,就有多种方式了,
天气预报那边你可以用 Java EJB
我这边用java通过 rmi-iiop去。这也可以啊,
78. 假设现在那边又是c#了,注意了,这个ejb他不能使用其他语言来写,他只能用java来写,但是这个ejb呢?他可以使用corba来调用。
java和c#之间的通讯 我就可以用另一套技术架构corba来调用 了。
79. 所以corba和webservices都能解决异构的问题,现在用webservices稍多一些,因为他走http协议啊,他天生就能穿越80端口啊,他能穿越防火墙啊。但是他有问题,他慢,他基于http协议传大文本,而corba不是,他传二进制。
80. 所以在一些行业里,他也有大量使用corba的,这基本上属于一个国际的标准。
81. 我们先建一个java项目,通过java调用 一下。名字叫,我们给大家演示动态调用 和 静态调用。
82. 首先你要调用 的话,你得保证你的tomcat是开启的,这样的话,通过http能访问过去。
83. 拿到这个地址 的连接,
84. java这一块你得使用asix delphi你也得用asix,server这里你也得使用asix.
85. 注意了,你把代码拷过去,你导包别导错了,你得导asix的包啊,
86. 你看他的异常啊,还有一个RemoteException 远程异常。
87. 他说什么他那个httplook有一点问题,上次就出了几次问题,硬解都 不彻底。
88. 其他的语言通信和这个一样都使用这个这个通信,他这了一个Project.exe 他说这个是他使用另一种语言写的。太牛了,
89. 我用他的东西都不能运行,不知道,他总报错,说什么我没有发布wsdl.
90. 他说以前他们公司用java做的,要和另一个公司做集成 ,那个公司就是用delphi开发的,为了通信,就开发了这么一个接口。
91. 我们公司用java写的,另一个公司界面用delphi写的,服务平台用c++写的。
92. 其实一个大型项目,都是用多种语言混合起来做的,一种语言是解决不了问题的。语言你不能讨论好坏,我在网上看到有些人对语言批判好坏特别严重,其实这就不太对,在某种场景下,你可能用c++就不合适。比如做这种web应用,你用c++合适吗?他也能做,各个方面太慢了,用java一天做完了,用c++做,一星期,半个月才能做完。
93. 我们以前,主板蕊片上要放程序,怎么放啊,那都汇编写了放上去,你能说汇编没用吗? 你说vb淘汰了吗?.
94. 注意一下,语言的事,不要特别去抨击语言的好坏。
95. 你不要把这个xml文件搞得太大了,假如我要查询一万个学生的信息,你把这一万个搞出来,你这个文件得多大。我发一个消息给你,你生成相应的文件 传到FTP Server,生成好了,你告诉我你说你生成好了,我就到FTP Server上去取。我就用程序自动去访问,这样肯定很快。你还可以先把xml压缩一下,再放上去,
96. 95说的意思就是不要用soap传大量数据,传大量数据肯定是不合适的,所以你可以使用后面的解决方案,把他先传到FTP Server上去。
97. 你先了解一下就够了,以后实在要开发的话,你好入门。
98. 现在演示,静态调用,生成客户端存根方式,
99. 存根代表什么,远程对象的代理,我访问这个存根,那他就控制远程了,去调用远程对象了,他会起到一个编码和解码的作用。
100. 没有存根就是动态调用,有了的话就是动态调用了,搞的一个工程命名都错了,搞得我运行他的都 运行不出来。
分享到:
相关推荐
基于Web的煤矿生产调度管理系统设计涉及了Web技术、Web Services、B/S架构以及***框架,这些技术的应用不仅提升了煤矿生产调度管理的效率,也对整个煤炭工业的健康发展起到了重要的技术支撑作用。 首先,Web ...
本文主要探讨了几种主流的智能建筑系统集成技术,包括OPC(OLE for Process Control)、LonWorks、BACnet以及XML/Web Services,并分析了它们的特点、优势和不足。 首先,OPC是一种基于微软的OLE(Object Linking ...
此外,XML架构还可以与WS-I(Web Services Interoperability Organization)的指导原则一起使用,以促进不同平台和编程语言之间的互操作性。 #### 六、反射与类型系统 类型系统的一个重要方面是在运行时检查类型...
- **Amazon云计算**:Amazon Web Services (AWS) 提供了丰富的云产品和服务,涵盖了计算、存储、数据库等多个方面,为企业提供了强大的技术支持。 - **Salesforce云计算**:Salesforce以其CRM(客户关系管理)软件为...
本文将深入浅析ASP.NET的核心概念和技术,帮助初学者掌握这一强大的开发平台。 1. **基础概念** - **Web Forms**: ASP.NET Web Forms提供了一种通过拖放控件来构建网页的方式,类似于传统的Windows编程模型。 - *...
SOA通过定义标准接口和服务协议,如Web服务(Web Services)使用的SOAP(Simple Object Access Protocol)和WSDL(Web Services Description Language),实现了不同系统间的互操作性。此外,SOA还强调服务的松耦合...
全球范围内,一些知名的开放平台包括Google的Google Cloud Platform(GCP)、Amazon的AWS(Amazon Web Services)、Facebook的社交平台、Apple的iOS App Store等。这些平台为开发者提供了广阔的舞台,促进了各种创新...
参考文献中提到的书籍和网络资源,如《云时代的大数据》、《云计算》、Amazon Web Services、Hadoop以及Google App Engine,都是云计算领域的经典之作和重要实践平台,对于想要深入了解云计算的人来说,这些资料都是...
4. **Web Services**:基于XML和SOAP协议的网络服务,允许不同系统间的互操作,常用于构建分布式应用程序。 【优势】 分布式计算的优势主要体现在: - **资源优化**:通过共享和利用网络中的计算资源,避免了单点...
CloudStack提供了丰富的API接口,包括Web Services和REST架构,支持POST/GET请求,并能返回XML或JSON响应格式。这使得CloudStack能够轻松地与其他系统和服务集成。 #### 十、CloudStack与OpenStack的比较 尽管两者...
首先,亚马逊AWS(Amazon Web Services)是全球最大的云服务提供商之一,它提供了一个全面的云基础设施平台,使得企业能够在云上快速构建、部署和管理应用和服务。AWS的核心特点在于它的安全、可靠、高性能和成本...
同时,了解云计算平台如Amazon Web Services (AWS)或Google Cloud Platform (GCP)上的大数据服务也是必不可少的。 其次,数据分析技能是编辑提升信息能力的核心。需要掌握SQL进行基本的数据查询和操作,以及Python...
系统框架结构包括推理系统、过程控制系统、策略执行服务、事件接口等核心组成部分,这些部分基于面向服务架构(Service Oriented Architecture, SOA)技术实现,并通过Web Services封装为Web服务。利用基于XML和HTTP的...
开放性的服务模式,如Web Services接口,使得大量地理信息能够整合到互联网系统,用户也能参与软件应用和开发,形成开放的“数字地球”。此外,三维可视化是信息化测绘服务的重要特性,能够提供更直观、立体的地理...
随后,亚马逊开始多元化发展,进入云计算领域,推出了Amazon Web Services (AWS),成为全球领先的云服务提供商。此外,还涉足电子阅读(Kindle)、流媒体服务(Amazon Prime Video)和人工智能助手(Alexa)等业务。...
同时,需要安装IIS(Internet Information Services)作为Web服务器来运行ASP程序。数据库方面,Microsoft Access常被用于小型网站,提供数据存储和管理的功能。 2.3.1 Access概述 Access是一种关系型数据库管理...
IIS(Internet Information Services)是微软提供的Web服务器,用于托管ASP应用程序。安装IIS是部署个人网站的前提。 2.3 Microsoft Access数据库 Access是一种关系型数据库管理系统,用于存储和管理网站数据。它...
throw new Exception("Response from web services server timed out."); } } // 关闭socket连接 fclose($fp); ?> ``` 在这个例子中,我们创建了一个socket连接到指定的主机和端口(这里是www.sohu.com的80端口...