webservice 浏览器如何调用_RPC调用

传统的单体架构

一个归档包(例如 war 格式或者 Jar 格式)包含了应用所有功能的应用程序,我们通常称之为单体应用,也称之为单体应用架构,这是一种比较传统的架构风格。

2ea518dd1d7f7b27101b5073c4670e3c.png

SOA 架构

SOA 是 Service-Oriented Architecture 的英文缩写,就是面向服务的架构。这里的服务可以理 解为 service 层业务服务。将系统拆分为不同的服务单元,通过网络协议服务单元之间进行 通信。服务单元完成一个特定功能(如:验证、支付、登录等等),通过服务单元之间的集成 组成完整的应用程序。

SOA 架构中由两个重要的角色: 服务提供者(Provider)和服务使用者(Consumer)。

c4070129bba609967ae2cbd28528575f.png

实现rpc的方式及介绍

1、Rmi

在某个java虚拟机上调用另一个java虚拟机中的对象上的方法,被称之为远程调用。

RMI 相关 API 总结

c8477d4a347d3a263641ed8e7258b172.png

2、WebService

Web service 是一个平台独立的,低耦合的 web 的应用程序用于开发分布式的互操作的应用程序。

Web Service 技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。

SOAP(Simple Object Access Protocol) 简单对象访问协议:

SOAP=http+xml

f20f91bd50616fa0e0476a0787061e0a.png

WSDL(Web Services Description Language) Web Service 的描述语言: 一个 webservice 服务的说明书,通过该说明书可以完成 webservice 服务的调用

3、Httpclient

可以参考之前的HtppClient文章。

4、Resttemplate

RestTemplate 是 Spring 提供的用于访问 Rest 服务的客户端,RestTemplate 提供了多种便捷访 问远程 Http 服务的方法,能够大大提高客户端的编写效率。

RPC跨域访问_解决方案

跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器 对 JavaScript 施加的安全限制。 

什么是同源策略: 所谓的同源,指的是域名、协议、端口均相等。 
不同源的系统使用 ajax 发送求,会存在跨域的问题:例如 
http://www.abc.com/   访问   http://www.xyz.com         域名不一致,存在跨域 
http://www.abc.com/   访问   https://www.abc.com        协议不一致,存在跨域 
http://www.abc.com:80/   访问   http://www.abc.com:81    端口不一致,存在跨域 

为了解决跨域,有以下解决方案:

1、CorsFilter解决。
2、JsonP解决。

CorsFilter配置文件:

1、导入CorsFilter的依赖。

		<dependency>
			<groupId>com.thetransactioncompany</groupId>
			<artifactId>cors-filter</artifactId>
			<version>2.5</version>
			<scope>runtime</scope>
		</dependency>

2、在web.xml文件中增加。

         <filter>
		<filter-name>CORS</filter-name>
		<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
		<init-param>
			<param-name>cors.allowOrigin</param-name>
			<param-value>*</param-value>
		</init-param>
		<init-param>
			<param-name>cors.supportedMethods</param-name>
			<param-value>GET, POST, HEAD, PUT, DELETE</param-value>
		</init-param>
		<init-param>
			<param-name>cors.supportedHeaders</param-name>
			<param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value>
		</init-param>
		<init-param>
			<param-name>cors.exposedHeaders</param-name>
			<param-value>Set-Cookie</param-value>
		</init-param>
		<init-param>
			<param-name>cors.supportsCredentials</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>

	<filter-mapping>
		<filter-name>CORS</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping> 

JsonP,可以看之前发过的JsonP文章:

1、在提供者中添加该依赖。

		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.47</version>
		</dependency>

2、修改提供者的controller,参数内需要加上calback(回掉函数,该函数从jsp中接收的),将返回结果改为Json格式的字符串,这里使用导入的依赖中的 JSON.toJSONString() 来将要返回的对象转为Json格式的字符串。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值