1.RESTful架构

本人也是刚接触ASP.NET开发,以下为自己简单的理解,并做了一些记录,表述不当或者错误之处还请指正,在此谢过。

首先,REST(REpresentational State Transfer)翻译为表述性状态转移,它是一种架构风格,而不是一种架构本身,具有这种架构风格的架构就称为RESTful架构。

RESTful架构是面向资源的。网络上的任意一个实体,包括图片、电影、音乐等等都是一种资源,在该架构中,每一个资源都有一个对应的URI来标识。HTTP协议是无状态的,无状态简单而言就是说服务器不会为了下一次连接而保存客户端这一次连接所传输的信息,所以如果客户端想要操作服务器端的状态或资源,就必须通过资源所对应的URI来进行(HTTP的)CURD(Create,Update,Read,Delete)操作,而这些操作中资源是以他们的某种表现形式来传输的,比如Html、JSON、XML等,或者二进制格式等,因而这样就形成了(资源的)表述性状态转移。同时,REST最重要的一个特点就是客户端与服务器之间的请求和交互是无状态的。这一点也得到了解释。

接下来,REST架构风格其实是定义了一系列的约束条件,要符合REST风格,就必须满足如下这几点:

1.Uniform Interface(统一的接口):定义客户端和服务器之间的接口,简化和降低了架构的耦合程度

2.Stateless(无状态):服务器端不保留客户端的状态

3.Client-Server(客户端-服务器模式):假定系统是不相连的,统一的接口才是客户端与服务器之间的链接

4.Cacheable(可缓存):服务器端的响应,比如返回的各种资源,在客户端是要能缓存的

5.Layered System(分层系统):通过限制组件的行为,将架构分解为若干等级的层,将组件对系统的知识限制在单一的层内,为系统的复杂性设置了边界,从而提高了底层的独立性,中间组件还能够通过支持跨多个网络和处理器的负载均衡来改善系统的可伸缩性

6.Code on Demand(按需代码,此条件非必须)

 

2.SOA架构

SOA(Service-Oriented Architecture),面向服务的体系结构,它是一个组件模型,它将应用程序之间的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。

传统的“单一的应用程序”,它把将各种功能整合到一起的代码与每个单独的功能的实现代码混合在了一起,这样各功能组件之间的耦合度高,一是不方便代码的复用,二是维护起来不方便,一个功能组件的更新都可能要涉及到整个应用程序的大改。

而区别于单一的应用程序,SOA将不同的功能组件视为一种服务,它将每一种服务单独进行封装,我感觉有点类似OOP中类的概念,这样不同的组件之间的耦合程度降低,代码的复用程度也变高,具有很多好处。

SOA架构中的三种不同的角色:

服务提供者:发布服务,并对服务的请求进行响应

服务注册中心:注册已经发布的Web Service,对其进行分类,并提供搜索服务

服务请求者:利用服务中心查找服务,并使用该服务

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

WSDL:Web服务描述语言,Web Services Description Language

UDDI:统一描述、发现和集成,Universal Description Discovery and Integration

WSDL用来描述服务,UDDI用来注册和查找服务,而SOAP作为传输层,用来在消费这和服务者之间传送消息,一个消费者可以在UDDI注册表查找服务,取得服务的WSDL描述,然后通过SOAP来调用该服务。

RESTful架构及SOA架构简单解析的更多相关文章

  1. 软件架构的演进,了解单体架构,垂直架构,SOA架构和微服务架构的变化历程

    软件架构演进 软件架构的发展经历了从单体结构.垂直架构.SOA架构到微服务架构的过程,博客里写到了这四种架它们的特点以及优缺点分析,个人学习之用,仅供参考! 1.1.1      单体架构 特点: 1 ...

  2. 微服务架构 vs. SOA架构

    面向服务架构(SOA)已经存在有些年头了,这是一种用于设计软件的伟大原则.在SOA中,所有组件都是独立自主的,并能为其他组件提供服务.要替换掉系统中的某些部分而不对整个系统造成较大的影响本是个难题,然 ...

  3. 微服务理论之五:微服务架构 vs. SOA架构

    一.面向服务的架构SOA 面向服务的架构是一种软件体系结构,应用程序的不同组件通过网络上的通信协议向其他组件提供服务.通信可以是简单的数据传递,也可以是两个或多个服务彼此协调连接.这些独特的服务执行一 ...

  4. SpringCloud微服务架构和SOA架构

    1,传统的三层架构 在传统的架构中,SSH,SSM,主要分为web 控制层,业务逻辑层,数据库访问层,单点项目,项目没有拆分,所有的开发任务全部写在一个项目中,耦合度比价高,如果程序中的一个功能出现了 ...

  5. 单体架构、SOA架构、微服务架构

  6. 企业SOA架构设计理论

    SOA简介 SOA(Service-Oriented Architecture,面向服务架构)是一种将信息系统模块化为服务的架构风格.拥有了服务之后,我们就可以迅速地将这些服务按不同方式重新组合,从而 ...

  7. 搭建一个BS 的简单SOA 架构(直接通过jquery 调用后台的 wcf 服务的架构)(第一天)

    亲们!还在用传统的三层架构吗?你还在对SOA架构 不了解吗? 那就赶快来学习下一个 比较简单的SOA的架构吧!我会手把手的 教会你们怎么搭建这个 简单的SOA的架构. 其中用的技术点保证  WCF,a ...

  8. 大型互联网架构概述 关于架构的架构目标 典型实现 DNS CDN LB WEB APP SOA MQ CACHE STORAGE

    大型互联网架构概述 目录 架构目标 典型实现 DNS CDN LB WEB APP SOA MQ CACHE STORAGE 本文旨在简单介绍大型互联网的架构和核心组件实现原理. 理论上讲,从安装配置 ...

  9. 论SOA架构的几种主要开发方式

    转: http://blog.csdn.net/chenleixing/article/details/44926955  面向服务架构soa以其独特的优势越来越受到企业的重视,它可以根据需求通过网络 ...

随机推荐

  1. Ldap用户登陆操作系统提示Permission denied, please try again.

    昨天一个同事he告诉我他的ldap账户无法登录系统,提示Permission denied, please try again 解决方法: 先在百度上找了下别人的博客参考了下 https://blog ...

  2. poj 2259 Team Queue

    Team Queue Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 2977   Accepted: 1092 Descri ...

  3. android添加系统(服务、应用)

    1. 添加系统服务 1.1 添加方式1:(不加入servicemanager统一管理的) 看Android6.0.1 init.rc解析中的第2章和第3章 方式1: 1). 写一个测试脚本test.s ...

  4. ansible roles 目录规范

    我的ansible roles项目的目录结构: (ansible_venv) [root@localhost ansible_home]# tree ansible_playbooks/ ansibl ...

  5. window.location.href.substr(window.location.href.length - 6)

    if (window.location.href.substr(window.location.href.length - 6) == "flag=1") { var tOptio ...

  6. table表格中 ,点击checkbox 的value值 相加

    <!DOCTYPE html> <html> <head> <title>简单的行列相加求和处理</title> <script sr ...

  7. C++测验代码

    /* 返回字符串前n位和返回整数前n位 */ #include <iostream> unsigned long left(unsigned long num, int n); char ...

  8. Shiro - web应用

    先不谈Spring,首先试着用最简易的方式将Shiro集成到web应用. 即使用一些Servlet ContextListener.Filter.ini这些简单的配置完成与web应用的集成. web. ...

  9. JDK12 concurrenthashmap源码阅读

           本文部分照片和代码分析来自文末参考资料        java8中的concurrenthashmap的方法逻辑和注解有些问题,建议看最新的JDK版本        建议阅读 concu ...

  10. .net面试题升级版

    1.列举ASP.NET页面之间传值的几种方式. 答:使用QueryString,如.../id=1;response.Redirect() 使用Session 使用Server.Transfer 使用 ...