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来调用该服务。