My business processes need to tap into resources, and each activity requires the invocation of IT functionality; I want that functionality to be available in a flexible, replaceable way.
Top-down
Tool-based MDA
I want to define a model (business model) and then let my tools generate the detail for me.
Top-down
Wrap legacy
I have existing systems I have been investing heaviliy on, but they are not resilient. I want new functionality added quickly, but these systems are partitioned. They are silos where functions are locked into them.
Bottom-up
Componentize legacy
Decompose the monolithic legacy systems into modules using compiler-based tools.
Bottom-up
Data-driven
Provide access to information using services without having to expose schemas or implementation decisions on the provider side.
Data-focused
Message-driven
"Just want to have these systems integrate, communicate, over standard, non-proprietary protocols."
Service-Oriented Integration of Applications and Systems
Hard-coded (not a pattern, but a point in time state)
Point in time; low risk; low-changing, high-performance systems
Distributed; multi-point of access
Point-to-point exposure
Expose existing functionality rapidly; unlock value fast; access embedded functionality
Wrap a legacy function and make it callable through Web services
Service adaptor
Consumer needs access to functionality that is not service-enabled ( access to a legacy system through a service invocation, for example -- a Web service)
Access a service using its proxy if you do not have direct access to the service provider?s service description and are unable to directly invoke the service
Service proxy
Provides consumers with an SOA interface
Provide flexibility in the choice of the service provider
Remote service strategy
Provides flexibility in changing service providers based on quality of service or functionality considerations. This opens up possibilities in expediting mergers and acquisitions and flexible alteration of the provider when you consolidate application portfolios.
Eliminate redundant functionality; refactor and consolidate or, in some cases, replace existing systems
Single point of access
Provides one access point to a number of potential variants in functionality. A service strategy often requires a single point of access.
One project or LOB at a time, yet relies on others for some functions not yet exposed as services
Virtual provider
Non-existent providers; ramp up service critical mass
Single point of access
Service integrator
Routing, transformation
General enterprise integration approach
Enterprise service bus
Mediation; routing; transformation, policies, rules, events; inside the organization or between partners in ecosystem/value-net
The Nirvana of SOA; dynamic reconfiguration through context-aware services relying on business domain specific capabilities
Integrated service ecosystem
Provides dynamic configuration capabilities to a set of semantically interrelated industry specific business partners that leverage and recombine the ecosystem capabilities to provide greater value to themselves and the ecosystem as a whole
Often an initial challenge is the concrete determination of the value proposition for using SOA within a project, line of business, or organization. This has to do with flexibility and the ability to alter the actual service provider who implements a service once their quality of service dwindles or they fail to provide the required functionality. This flexibility, which is the primary value of SOA, is overcome by understanding the steps in achieving flexibility through a remote service strategy. There are two more challenges that we describe and overcome with the use of patterns presented here.
SOA is a journey of gradual, small transformations that increasingly decouple service descriptions from service implementations offered by multiple service providers. The solutions below are descriptions of how these issues have been recurrently solved and may serve as a pattern to help you on your next project. Like any other pattern, these must also be adapted to fit the context and the forces that shape your individual problem space: the tradeoffs and considerations of your project, whether organizational or technical, make a difference, and you can determine if you need to skip a step from one pattern to another or to partially implement the pattern
The purely object-oriented strategy pattern primarily relies on inheritance-based polymorphism to create a family of interchangeable algorithms that are swapped out based on context. Rather than have an object hierarchy, in an SOA context, we need to be able to change the service provider with minimal or no impact on the consumer?s perception of the service, thus varying the actual implementer of the service description. The implementer may, in most cases, be a provider of a remote unit of functionality, somewhere in the internal network or Internet. Therefore, for example, a service provider for a VerifyAddress service in an OrderEntry application may need to be changed because our quality of service needs have changed due to higher transaction volumes or security constraints. Or, the provider has decided to charge twice the amount for the same basic service, which we have relied on, in the past. Now, we would like to have the flexibility of changing service providers with IT and Business impunity, which means minimal changes to IT systems and no impact on the business or customer experience in their online shopping experience.
SOA 鐨勪竴涓娊璞¤鐐瑰皢瀹冩弿榪頒負涓庝笟鍔¤繃紼嬬粨鍚堝湪涓璧風殑鍚堟垚鏈嶅姟鐨勯儴鍒嗗垎灞傛灦鏋勩?鍥?3 鍛堢幇浜嗚繖縐嶇被鍨嬬殑鏋舵瀯銆?
鏈嶅姟鍜岀粍寤轟箣闂寸殑鍏崇郴鏄紝浼佷笟綰х殑緇勪歡錛堝ぇ綺掑害鐨勪紒涓氭垨鑰呬笟鍔$嚎緇勪歡錛夊疄鐜拌鏈嶅姟騫朵笖璐熻矗鎻愪緵瀹冧滑鐨勫姛鑳藉拰緇存寔瀹冧滑鐨勬湇鍔¤川閲忋傞氳繃緇勫悎榪欎簺鍏紑鐨勬湇鍔″埌鍚堟垚鐨勫簲鐢ㄧ▼搴忥紝灝卞彲浠ユ敮鎸佷笟鍔¤繃紼嬫祦銆傜患鍚堢殑鏋舵瀯閫氳繃浣跨敤 Enterprise Service Bus錛圗SB錛夋敮鎸佽繖浜涙湇鍔°佺粍浠跺拰嫻佺▼鐨勮礬鐢便佷腑浠嬪拰杞寲銆備負浜嗘湇鍔¤川閲忓拰闈炲姛鑳芥х殑闇姹傦紝蹇呴』鐩戣鍜岀鐞嗗凡緇忛儴緗茬殑鏈嶅姟銆?/p>
]]>(杞?鎮ㄧ殑 SOA 鍚堝茍鎴愪笁緇寸殑鏁村悎涓績浠ユ彁楂橀熷害鍜屽彲闈犳?http://www.shnenglu.com/tanxiuguang123/archive/2006/04/24/6172.htmlTory Tory Mon, 24 Apr 2006 06:37:00 GMThttp://www.shnenglu.com/tanxiuguang123/archive/2006/04/24/6172.htmlhttp://www.shnenglu.com/tanxiuguang123/comments/6172.htmlhttp://www.shnenglu.com/tanxiuguang123/archive/2006/04/24/6172.html#Feedback0http://www.shnenglu.com/tanxiuguang123/comments/commentRss/6172.htmlhttp://www.shnenglu.com/tanxiuguang123/services/trackbacks/6172.html鍦ㄦ湰鏂囦腑錛屾垜灝嗚皥璁哄浣曞皢 Web 鏈嶅姟鍙婇潪 Web 鏈嶅姟鐨勫閲?SOA 鍚堝茍鎴愪笁緇寸殑鏁村悎涓績鏉ヨ繛鎺ュ悇縐嶅悗绔紒涓氫富鏈虹郴緇燂紝鍖呮嫭錛?/p>
SOA 鏁村悎涓績鏄?Web 鏈嶅姟涓庨潪 Web 鏈嶅姟鐨勫悎騫剁殑 SOA 涓庡悗绔紒涓氱郴緇熺殑闆嗘垚銆傚畠浣垮緱 Web 鏈嶅姟鍙婇潪 Web 鏈嶅姟鑳藉涓庤繍琛屽湪涓嶅悓騫沖彴涓婄殑鏈嶅姟鍣ㄣ佷富鏈哄拰寰満涓婄殑浼佷笟緋葷粺浜や簰銆?/p>
鐒惰岋紝SOA 鏁村悎涓績涓嶅悓浜庨潰鍚戞湇鍔$殑鏁村悎錛坰ervice-oriented integration錛孲OI錛夈係OI 灝?Web 鏈嶅姟涓庤繍琛屽湪涓嶅悓騫沖彴涓婄殑涓繪満緋葷粺鐩告暣鍚堛傚畠浣垮緱 Web 鏈嶅姟鑳藉閫氳繃緗戝叧涓庝富鏈轟氦浜掋傛偍闇瑕?ASP.Net 鎴栧叾瀹冩妧鏈幏鍙栫綉鍏蟲潵鎵ц鏅氱殑 Web 鏈嶅姟銆?/p>
SOA 鏄熀浜庝竴濂椾笟鍔℃祦紼嬬殑 Web 鏈嶅姟鐨勪氦浜掔殑浣撶郴緇撴瀯銆傛偍鍙互鍦ㄧ涓涓?SOA 涓幏鍙?Web 鏈嶅姟鏉ュ湪絎簩涓?SOA 涓鐢ㄤ唬琛?Web 鏈嶅姟鐨勬湇鍔°俉eb 鏈嶅姟鍙兘鐢變竴浜涘皬鐨?Web 鏈嶅姟緇勬垚錛屽畠浠皢鏈嶅姟浼犻掔粰瀹㈡埛銆?/p>
絎洓灞傚悜鎮ㄥ睍紺轟簡閭d簺鏈嶅姟鏄浣曟牴鎹竴濂椾笟鍔℃祦紼嬩粠涓涓祦鍚戝彟涓涓殑銆傛洿楂樹竴灞傞氳繃榪滅▼闂ㄦ埛緗戠珯 Web 鏈嶅姟錛圵eb Services for Remote Portlet錛學SRP錛夋爣鍑嗘垨鍏跺畠闈㈠悜浜虹殑琛ㄧず灞傜殑鏂規硶鏉ュ皢 Web 鏈嶅姟搴旂敤浜庡簲鐢ㄧ▼搴忔帴鍙d腑銆?/p>
浜岀淮闈欐佺殑 SOA 鍙兘鏄湁闂鐨勩傚垢濂斤紝鏁村悎涓績鐨勫彂灞曟剰鍛崇潃 SOA 灝嗗彉鎴愪笁緇村姩鎬佺殑銆?/p>
鍦ㄤ笁緇翠腑蹇冧腑鎮ㄥ彲浠ュ叡浜殑 SOA 鐨勬暟鐩緷璧栦簬欏圭洰澶嶆潅鎬с佸悎騫墮棶棰樺強涓氬姟嫻佺▼涓殑鍒╁紛銆傚悜鎮ㄩ伩鍏?SOA 鐨勮繃閲忓紑閿涓鏍鳳紝鎮ㄩ渶瑕佺‘淇濆湪寮鍙戠殑鏁翠釜鐢熷懡鍛ㄦ湡涓笉浼氬湪涓夌淮絀洪棿涓彂鐢熶腑蹇冭秴璐熻嵎鐨勯棶棰樸傛偍搴斿綋鍦ㄥ懆鏈熺殑姣忎釜鏃跺埢閮芥祴璇曡秴璐熻嵎銆?/p>
鍦ㄤ笁緇翠腑蹇冧腑鍚堝茍 SOA 闇瑕侀鍏堣鍒掓潵璁劇疆寮鍙戝拰鍏變韓鐨?SOA 鐨勬暟鐩檺鍒躲傛偍搴斿綋鍚屼笟鍔″垎鏋愬笀寮鍙戠粍浜ゆ祦鏈夊叧鍚勭鍚堝茍闂鐨勪俊鎭傛偍灝嗗彂鐜拌В鍐沖悎騫墮棶棰樹細浣挎偍寮鍙戜笁緇翠腑蹇冪殑宸ヤ綔鍙樺緱闈炲父瀹規槗銆傛偍鍙互寮鍙戝湪涓績鍙鐢ㄥ拰鍏變韓鐨?SOA銆傚垎鏋愬笀灝嗗彂鐜拌В鍐寵闂浼氫嬌浠栦滑鐨勮璁″拰鍒嗘瀽涓夌淮絀洪棿鐨勪腑蹇冪殑宸ヤ綔鍙樺緱闈炲父瀹規槗銆備粬浠彲浠ョ‘瀹氬湪涓嶄細瀵艱嚧涓績瓚呰礋鑽風殑鍓嶆彁涓嬪摢涓富鏈虹郴緇熷彲浠ヨ繛鎺ュ埌涓績銆?/p>
涓婇潰鍒楀嚭鐨勬墍鏈夐泦鎴愭柟寮忓湪浠諱綍浼佷笟涓兘鏈変竴瀹氱▼搴︾殑浣撶幇錛屽敖綆″湪鏌愪簺鎯呭喌涓嬪畠浠彲鑳芥槸綆鍖栫殑錛屾垨鑰呮病鏈夋槑紜湴榪涜瀹氫箟錛涘洜鑰岋紝鍦ㄧ潃鎵嬭璁℃柊鐨勪綋緋葷粨鏋勬鏋舵椂錛屾偍蹇呴』鍏ㄩ潰鐨勮冭檻瀹冧滑銆傜壒瀹氱殑 IT 鐜鍙兘鍙湁寰堝皯鐨勬暟鎹簮綾誨瀷錛屽洜姝わ紝娑堟伅闆嗘垚鍙兘浼氬緢綆鍗曘傚悓鏍峰湴錛屽簲鐢ㄧ▼搴忚繛鎺ョ殑浣滅敤鍩熷彲鑳戒篃寰堟湁闄愩傝櫧鐒跺姝わ紝濡傛灉甯屾湜妗嗘灦鑳藉闅忕潃浼佷笟鐨勬垚闀垮拰鍙樺寲鎴愬姛鍦扮戶緇緱浠ヤ繚鎸侊紝鍒欐鏋朵腑鐨勯泦鎴愬姛鑳戒粛鐒跺繀欏葷敱鏈嶅姟鎻愪緵錛岃屼笉鏄敱鐗瑰畾鐨勫簲鐢ㄧ▼搴忔潵瀹屾垚銆?/p>