SOA的学习笔记之一

SOA的定义,面向服务的架构,参考:

https://en.wikipedia.org/wiki/Service-oriented_architecture

service-oriented architecture (SOA) is an architectural pattern in computer software design in which application components provide services to other components via acommunications protocol, typically over a network. The principles of service-orientation are independent of any vendor, product or technology.


了解一下SOA

http://www-01.ibm.com/software/solutions/soa/,这个帖子讲的比较清楚。

http://www.ibm.com/developerworks/cn/webservices/ws-esb1/,这个帖子讲的是ESB。

http://www.dimuthu.org/blog/2008/09/20/soa-way-of-writing-php/comment-page-1/,这个博客写的有些内容呢,用一种形象化的方式进行了表达,但是正确与否还需要验证一下,当时感觉到有意思是因为不理解SOA。

SOAP和WSDL,http://baike.baidu.com/link?url=YL6_DPwNcY6_3OYFPaDEeqqQjlZBqPn8bel_HRXYt_pq-pZEkfvey6ux3_Trx-wLvP1jE0j_Abp0DWDvDPjO1cbB-HbsZzRxI7yhXFAphoi

http://www.ibm.com/developerworks/cn/webservices/ws-arcsoa1/,架构设计师与SOA。

对Java和WebSphere的理解。

收费和性能参考:

http://www.360doc.com/content/12/0214/14/8101845_186556865.shtml,这个帖子讲了Java应用服务器的特点。

Overview[edit]

Services are unassociatedloosely coupled units of functionality that are self-contained. Each service implements at least one action, such as submitting an online application for an account, retrieving an online bank statement or modifying an online booking or airline ticket order. Within an SOA, services use defined protocols that describe how services pass and parse messages using description metadata, which in sufficient details describes not only the characteristics of these services, but also the data that drives them. Programmers have made extensive use of XML in SOA to structure data that they wrap in a nearly exhaustive description-container. Analogously, the Web Services Description Language (WSDL) typically describes the services themselves, while SOAP (originally Simple Object Access Protocol) describes the communications protocols. SOA depends on data and services that are described by metadata that should meet the following two criteria:

  1. The metadata should be provided in a form that software systems can use to configure dynamically by discovery and incorporation of defined services, and also to maintain coherence and integrity. For example, metadata could be used by other applications, like a catalogue, to perform auto discovery of services without modifying the functional contract of a service.
  2. The metadata should be provided in a form that system designers can understand and manage with a reasonable expenditure of cost and effort.

The purpose of SOA is to allow users to combine together fairly large chunks of functionality to form ad hoc applications built almost entirely from existing software services. The larger the chunks, the fewer the interfaces required to implement any given set of functionality; however, very large chunks of functionality may not prove sufficiently granular for easy reuse. Each interface brings with it some amount of processing overhead, so there is a performance consideration in choosing the granularity of services.

SOA as an architecture relies on service-orientation as its fundamental design principle. If a service presents a simple interface that abstracts away its underlying complexity, then users can access independent services without knowledge of the service's platform implementation.[6]

原本我们的设计应该被成为面向业务,接口是为了满足业务的需要而设计的,那么面向服务应该这样理解,我们面向业务的接口逻辑中可能应该包含几个可以单独分离出来的可以发布出来的公共的服务,那么一个业务逻辑就可以通过去调用这些公共服务的接口来组合完成。

那我感觉,要是这样的话,粒度(granularity)应该是变小啊?

self-contained应该怎么理解呢?

Within an SOA, services use defined protocols that describe how services pass and parse messages using description metadata, which in sufficient details describes not only the characteristics of these services, but also the data that drives them. 

意思应该是可以去获取对于这个service的描述,纵然之前你不知道这个service如何使用,但是你也可以通过一种很简单和约定好的方式去获取该service的规格(specification)说明。

the expenditure of cose and effort

expenditure

  • n. 支出,花费;经费,消费额

ad hoc的概念:

https://en.wikipedia.org/wiki/Ad_hoc,ad hoc网络指的是无计划或者缺少计划,自己成长起来的网络。

committee和commission的区别,难道都是当委员会讲吗?

参考:http://painintheenglish.com/case/3801

A committee is a group of people who meet and deliberate according to fixed rules in order to make a decision or produce a document as a group. A commission is a group of people who are entrusted (that is the etymology) by a government to carry out a task. Sometimes the task is a specific one (like ascertaining a particular fact or resolving a particular problem) and sometimes the task is more long-term (like the SEC, that is, Securities and Exchange Commission). A commission is usually distinct from other kinds of agency in two ways: it has no single, permanent administrator, and it has no independent or constitutional authority of its own—it operates under the authority of another part of the government. Of course, a commission can be a committee (like the 9/11 Commission), but very few committees are commissions, and some commissions are not committees.

个人的理解:SOA的学习就像当年的面向对象编程。原本的过程化编程,将很多代码都固化了,而面向对象的编程则是将其中很多具有独立意义的代码块独立出来,这些代码块就叫做对象,通过对这些对象的调用来完成业务。

SOA呢,则是将很多固化流程的业务流,分解成很多具有独立意义的服务,最终的业务,通过对这些业务的调用来完成。

PS:介绍SOA有几本好书,例如《SOA Design Patterns》和《SOA Principles os Service Design》,两本都是英文原版,粗粗一看,有很多生词不认识,那是不是现在我们就没法去写SOA了呢—应该不是吧,其实我们在没有彻底掌握C语言的时候就已经在使用C语言了,我们在没有搞明白面向对象的概念时,就已经在创建一个个的对象了,在没有理解设计模式的时候,已经写了很多年的代码了。如果因为没搞清楚而不前行,肯定是不对的,我以前就犯过这样的错误,条件摆在这里,我们只能边学些边前进。我以前因为没有彻底搞清楚而不前进,但是又没有肯专下心来,逐步去研究,因为存在时间和精力有限的客观条件,导致事情就没有往下继续进行,这样不对;但是我身边认识的一些人,在没有评估和研究清楚的情况下,盲目使用,没有认真去研究跟进,态度也是不对的。要怀有敬畏之心,然后谨慎使用。


上面一段摘自李刚的《轻量级JavaEE 企业应用实践(第4版)》,这就是我欣赏李刚的原因之一,反观我身边多少程序员,哪里有这种态度!

多少人告诉你,“掌握这些细节没用的......”。

身边有多少人在买椟还珠,我的一个朋友,看书从来不看前言,但其实我发现很多书,最精彩、最有含金量的内容却是在前言。

还有一些人,在没有工具的情况下是什么也做不了的,过度依赖各种工具,还在不断炫耀自己的这种高效。

https://en.wikipedia.org/wiki/Business-IT_alignment



posted on 2015-12-25 11:55  chaiyu2002  阅读(158)  评论(0编辑  收藏  举报

导航