面向服务的一般原则---摘自《SOA概念、技术与设计》第八章
		
		
				在第
				3章
				中我们建立了不止一个
				
						
								
										
												
														SOA
												
										
								
						
				
				定义。也有不止一个掌控定义面向服务背后原则的标准体。同样,对于面向服务的组成,也有许多源自公开的
				IT
				组织、厂商及咨询机构观点。
				
						
				
		
		
				据称面向服务的根源在于软件工程理论所谓的“关注点分离”。这一理论基于这样的观念:将一个大的问题分解为一系列单个关注点是有益的。这使得逻辑将需要解决的问题分解成更小的、相关片段的集合。每一段逻辑处理一个特定的关注点。
				
						
				
		
		
				这个理论已经被不同的开发平台以不同的方式实现。例如,面向对象的编程与基于组件的编程方法,通过使用对象、类和组件而实现了关注点分离。
				
						
				
		
		
				面向服务能够被视作以截然不同的方式来实现关注点分离。面向服务原则提供了一个支持此理论的方法,同时实现了一种基本范式,在此基础上可构建诸多当代
				
						
								
										
												
														SOA
												
										
								
						
				
				特征。实际上,如果你再次研究这些特征,将会注意到数个(直接或间接)与关注点分离理论有联系。
		
		
		
				如前所述,没有官方的面向服务原则。然而,却有一些最常与面向服务关联的原则。现将这些原则罗列如下,本节将做进一步描述。
				
						
				
		
		
				
						l
				
				
						服务可复用
				
				
				
				不管是否存在即时复用的机会,服务被设计为支持潜在可复用。
				
						
				
		
		
				
						l
				
				
						服务共享一个正式契约
				
				
				
				为了与服务交互,只需要共享描述每个服务信息交换术语定义的正式契约。
				
						
				
		
		
				
						l
				
				
						服务是松散耦合的
				
				
				
				服务被设计为无需紧密的、跨服务的依赖而交互。
				
						
				
		
		
				
						l
				
				
						服务是底层逻辑的抽象
				
				
				
				只有经由服务契约所暴露的部分服务对于外部世界是可见的。契约之外所表达的底层逻辑是不可见的,且与服务请求者无关。
				
						
				
		
		
				
						l
				
				
						服务是可组合的
				
				
				
				服务可能组合其他服务。这允许表示不同粒度的逻辑,并促进复用及抽象层的创建。
				
						
				
		
		
				
						l
				
				
						服务是自治的
				
				
						
						
				
				逻辑由服务所控制,并位于一个清晰的边界内。服务已经在这个边界内被控制,并且不依赖于执行其控制的其他服务。
				
						
				
		
		
				
						l
				
				
						服务是无状态的
				
				
				
				服务应当不需要管理状态信息,因此能够其维持松耦合性。服务应当尽可能设计成无状态的,即便这意味着要将状态管理移至别处。
				
						
				
		
		
				
						l
				
				
						服务是可发现的
				
				
				
				服务应当允许其描述被发现,并被人工和可能会利用其逻辑的服务请求者所理解。
				
						
								
						
				
		
		
				在这八条原则中,自治性、松散耦合、抽象、以及需要正式契约被视为形成
				
						
								
										
												
														SOA
												
										
								
						
				
				根本基础的核心原则。如同在本章后面面向服务原则内部如何关联一节所解释,这四个原则直接支持其他原则(及其相互之间)的实现。
				
						
				
		
		还有其他与服务和面向服务相关的一般品质。示例包括自描述的和粗粒度的接口设计特征。我们更多地将这些作为服务的设计指导方针,并且因此在
		
				
						
								第
						
						15
						
								章
						
				
		
		作为设计指导方针的部分进行探讨
		.