传统的单体架构
一个归档包(例如 war 格式或者 Jar 格式)包含了应用所有功能的应用程序,我们通常称之为单体应用,也称之为单体应用架构,这是一种比较传统的架构风格。
SOA 架构
SOA 是 Service-Oriented Architecture 的英文缩写,就是面向服务的架构。这里的服务可以理 解为 service 层业务服务。将系统拆分为不同的服务单元,通过网络协议服务单元之间进行 通信。服务单元完成一个特定功能(如:验证、支付、登录等等),通过服务单元之间的集成 组成完整的应用程序。
SOA 架构中由两个重要的角色: 服务提供者(Provider)和服务使用者(Consumer)。
实现rpc的方式及介绍
1、Rmi
在某个java虚拟机上调用另一个java虚拟机中的对象上的方法,被称之为远程调用。
RMI 相关 API 总结
2、WebService
Web service 是一个平台独立的,低耦合的 web 的应用程序用于开发分布式的互操作的应用程序。
Web Service 技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。
SOAP(Simple Object Access Protocol) 简单对象访问协议:
SOAP=http+xml
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格式的字符串。