日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

面向服務(wù)及其在互聯(lián)系統(tǒng)策略中的角_.Net教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:使用Data Access Application Block 得到存儲(chǔ)過程的返回值
今天有位朋友問我如何在Data Access Application Block中得到存儲(chǔ)的過程的返回值,我才發(fā)現(xiàn)自己以前寫的文章中確實(shí)沒提到這方面的問題,現(xiàn)在來補(bǔ)充一下,具體的解決方法如下: 1、首先建立一

面向服務(wù)的業(yè)務(wù)環(huán)境

面向服務(wù)是一種創(chuàng)建分布式系統(tǒng)的方法。在它最抽象的層面,面向服務(wù)作為一個(gè)服務(wù)提供程序,包含了一切——從大型機(jī)應(yīng)用程序到打印機(jī)到碼頭工作人員到隔夜交貨公司。服務(wù)提供程序通過接口公開了功能。面向服務(wù)的體系結(jié)構(gòu)與這些功能和接口進(jìn)行了映射,這樣它們就可以編制到流程里。這種服務(wù)模型是“不規(guī)則的”:新形成的流程本身就是一個(gè)服務(wù),它公開了一種全新的聚合功能。

這種服務(wù)模型的基礎(chǔ)是接口與實(shí)現(xiàn)之間的分離。服務(wù)的調(diào)用者只需要(只應(yīng)該)了解接口;實(shí)現(xiàn)過程可以隨著時(shí)間而發(fā)展,而不會(huì)干擾到此服務(wù)的客戶。有趣的是,許多實(shí)現(xiàn)工具都可以提供相同的接口;面向服務(wù)的幾個(gè)關(guān)鍵利益來源于從如何提供功能的角度對(duì)功能進(jìn)行抽象化。

對(duì),這就是面向服務(wù)。那么面向服務(wù)都對(duì)誰(shuí)有幫助呢?

看到一個(gè)雞蛋,農(nóng)民可能會(huì)想到一只小雞;廚師可能會(huì)想到一盤煎蛋卷;小孩可能會(huì)想到一個(gè)五光十色的復(fù)活節(jié)裝飾品。面向服務(wù)就是一個(gè)雞蛋。

對(duì)于開發(fā)人員和解決方案架構(gòu)師而言,面向服務(wù)是一種創(chuàng)建動(dòng)態(tài)的協(xié)作應(yīng)用程序的方法。通過支持運(yùn)行時(shí)選擇的功能提供程序,面向服務(wù)允許應(yīng)用程序?qū)μ囟I(yè)務(wù)流程的內(nèi)容和環(huán)境具有敏感性,并隨著時(shí)間的推移適度地合并新的功能提供程序。

對(duì)于IT經(jīng)理而言,面向服務(wù)是一種有效的集成現(xiàn)代企業(yè)數(shù)據(jù)中心的各種典型系統(tǒng)的方法。面向服務(wù)提供了一個(gè)模型,可將多個(gè)系統(tǒng)的信息和業(yè)務(wù)邏輯聚合到一個(gè)單獨(dú)的接口中,這樣就可以通過通用的、一致的接口集處理各種冗余的系統(tǒng)。

對(duì)于首席信息官而言,面向服務(wù)是一種在不禁止部署新功能的情況下保護(hù)現(xiàn)有IT投資的方法。通過在基于功能的接口之后封裝業(yè)務(wù)應(yīng)用程序,該服務(wù)模型允許對(duì)關(guān)鍵任務(wù)應(yīng)用程序進(jìn)行控制性訪問,同時(shí)它還創(chuàng)造了在此接口之后持續(xù)改善實(shí)現(xiàn)過程的機(jī)會(huì)。面向服務(wù)使投資避免了紛繁的變化。

對(duì)于業(yè)務(wù)分析師而言,面向服務(wù)是一種使信息技術(shù)投資更符合業(yè)務(wù)策略的方法。通過將員工、外部功能提供程序和自動(dòng)化系統(tǒng)映射到一個(gè)單獨(dú)的模型中,分析師可以更好地理解與人、系統(tǒng)和來源的投資相關(guān)的成本權(quán)衡。

對(duì)于Microsoft Corporation而言,面向服務(wù)是創(chuàng)建互聯(lián)系統(tǒng)的一個(gè)重要前提�;ヂ�(lián)系統(tǒng)屬于應(yīng)用程序,它們可利用網(wǎng)絡(luò)來鏈接推動(dòng)業(yè)務(wù)流程的執(zhí)行者和系統(tǒng)。你可以在一種特殊的應(yīng)用程序模型上構(gòu)建互聯(lián)系統(tǒng),這種模型超越了任何設(shè)備,適度地跨越了邊界,并抑制了同步性的限制。通過將一系列服務(wù)和設(shè)備集中到了一起,互聯(lián)系統(tǒng)可以比過去的分離的應(yīng)用程序更有效地應(yīng)對(duì)業(yè)務(wù)挑戰(zhàn)。

企業(yè)的IT部門需要獲得更深入的業(yè)務(wù)活動(dòng)洞察,在此需求的帶動(dòng)下,它們正在尋找有效、簡(jiǎn)便的方法來集成它們的應(yīng)用程序組合。其目標(biāo)是透明性和一致性:

•對(duì)于我們的客戶和業(yè)務(wù)關(guān)系,我們是否具有一致的觀點(diǎn)(它能夠讓我們以最佳的方式服務(wù)于它們的需求和呈現(xiàn)我們的產(chǎn)品)?

•我們所有的業(yè)務(wù)流程是否都符合組織要求和政府規(guī)定?

•我們的系統(tǒng)是否能夠針對(duì)我們的業(yè)務(wù)目標(biāo)有效地提供價(jià)值?

•我們的技術(shù)投資能夠?qū)崿F(xiàn)一般任務(wù)的自動(dòng)化,并對(duì)我們的員工的工作進(jìn)行配合,從而克服復(fù)雜的挑戰(zhàn),這能否使我們最大限度地提高生產(chǎn)力?

為了實(shí)現(xiàn)透明性和一致性,組織必須創(chuàng)建各種連接機(jī)制。它們必須連接系統(tǒng),以創(chuàng)建一致的信息管理程序。它們必須連接人和技術(shù)功能,以創(chuàng)建一致的業(yè)務(wù)流程。它們必須連接工作人員,以創(chuàng)建協(xié)作的工作團(tuán)隊(duì)。它們必須連接組織,以創(chuàng)建有效的價(jià)值鏈。

通用的功能調(diào)用模型是面向服務(wù)的重點(diǎn),而面向服務(wù)是有效的互聯(lián)系統(tǒng)策略的核心。

服務(wù)和互聯(lián)系統(tǒng)

在計(jì)算機(jī)組件模型的環(huán)境下,服務(wù)是一種通過交換消息進(jìn)行通信的程序。換句話說,服務(wù)是一組應(yīng)用邏輯,它接收和發(fā)送的消息完整地定義了它的接口。

通過以可擴(kuò)展標(biāo)記語(yǔ)言(XML)為基礎(chǔ)開發(fā)消息標(biāo)準(zhǔn),面向服務(wù)正迅速成為構(gòu)建互聯(lián)系統(tǒng)的主流方法。

在連接各種不同的系統(tǒng)的過程中,其固有的挑戰(zhàn)是特定平臺(tái)的信息和過程模型的轉(zhuǎn)換。在理想的世界里,我們將擁有:

•標(biāo)準(zhǔn)語(yǔ)法,在此可以明確地表達(dá)來自所有系統(tǒng)的信息。

•標(biāo)準(zhǔn)語(yǔ)義模型,各組織可以通過一種一致的語(yǔ)言表達(dá)它們的業(yè)務(wù)實(shí)踐方法。

•標(biāo)準(zhǔn)協(xié)議,可以跨越操作環(huán)境和組織之間的邊界傳遞信息。

•標(biāo)準(zhǔn)方法,用來綁定行為和業(yè)務(wù)文檔。

在理想的世界里,我們的所有系統(tǒng)都將說這種“世界語(yǔ)”(除了它們自身的語(yǔ)言之外),這樣它們就可以在它們的本地環(huán)境之外進(jìn)行通信。

XML、XSD、WSDL、UDDI以及WS-*規(guī)范,比如WS-Security和WS-Policy,是這種不斷發(fā)展的通用語(yǔ)言的第一批模型。

以廣泛支持的標(biāo)準(zhǔn)為基礎(chǔ)的虛擬平臺(tái)提供了互操作性,如果沒有這種互操作性,面向服務(wù)就將是一門需要大量的協(xié)議設(shè)計(jì)專業(yè)知識(shí)的晦澀難懂的學(xué)科,同時(shí)它也將是一種不可靠的投資回報(bào)。如果沒有Web服務(wù)跨越各種異類平臺(tái)連接你的企業(yè)功能,面向服務(wù)對(duì)你和你的組織的價(jià)值就將大幅度減少。

客戶端是互聯(lián)系統(tǒng)的一個(gè)非常重要但是卻經(jīng)常受到忽略的元素。服務(wù)只有在受到調(diào)用時(shí)才會(huì)引起注意。不同的交互要求需要支持各種不同的客戶端模式。Web服務(wù)的客戶端包括:

•具有豐富用戶體驗(yàn)的智能應(yīng)用程序—它們是具有以下特性的解決方案:與一個(gè)或許多服務(wù)進(jìn)行交互;對(duì)它們檢索的信息進(jìn)行智能緩存;既提供了良好的交互性,又對(duì)離線信息處理提供了支持。

•智能設(shè)備—它們是包括以下范圍的解決方案:從自助式電話亭到手持式庫(kù)存跟蹤技術(shù)到智能電話聯(lián)系人管理。

•Web用戶界面(UI)—它們屬于企業(yè)門戶解決方案,這些解決方案對(duì)業(yè)務(wù)與員工和組與組之間的交互進(jìn)行了統(tǒng)一和協(xié)調(diào)。

•自動(dòng)化系統(tǒng)—它們屬于客戶端,這些客戶端一般不呈現(xiàn)UI,除非需要引發(fā)異常。

•流程編制服務(wù)——它們是調(diào)用其它服務(wù)來提供聚合的功能的服務(wù)。

不斷發(fā)展的Web服務(wù)標(biāo)準(zhǔn)和實(shí)現(xiàn)它們的平臺(tái)必須支持客戶端驅(qū)動(dòng)的概念,例如緩存雜注、資源約束設(shè)備的頁(yè)響應(yīng)以及長(zhǎng)期運(yùn)行的交互過程的對(duì)話環(huán)境管理。

即使面向服務(wù)的熱情支持者對(duì)于該模型的范圍也無法達(dá)成一致。爭(zhēng)論主要集中在以下問題上:“面向服務(wù)的基礎(chǔ)還有什么?”(“你想用這些雞蛋做什么?”)下面讓我們探討與此爭(zhēng)論相關(guān)的幾個(gè)服務(wù)友好的概念:

•企業(yè)體系結(jié)構(gòu)—對(duì)組織的目標(biāo)、優(yōu)先級(jí)、資源和流程進(jìn)行系統(tǒng)建模,以實(shí)現(xiàn)有控制的改進(jìn)所需的自我意識(shí)。

•企業(yè)信息集成—為業(yè)務(wù)實(shí)體(復(fù)雜的“類型”,例如“客戶”、“員工”和“采購(gòu)訂單”)創(chuàng)建一套組織標(biāo)準(zhǔn),它們由你的應(yīng)用程序組合進(jìn)行操作。

•面向流程—使業(yè)務(wù)流程成為你的企業(yè)體系結(jié)構(gòu)和信息技術(shù)組合的設(shè)計(jì)重點(diǎn)。

•業(yè)務(wù)流程編制—這種模型可支持靈活的業(yè)務(wù)流程,因?yàn)樗鼈兡軌蚴沽鞒讨械牟襟E排序盡可能地實(shí)現(xiàn)輕便性和適應(yīng)性。

•事件驅(qū)動(dòng)的體系結(jié)構(gòu)—在這種模型中,業(yè)務(wù)事件(例如,部件到達(dá)碼頭或?qū)Πl(fā)票付款)可觸發(fā)消息發(fā)送到訂閱服務(wù),這樣它們就可以采取適當(dāng)?shù)拇胧?/p>

•虛擬企業(yè)—將業(yè)務(wù)流程視為價(jià)值鏈,這種價(jià)值鏈能夠跨越組織進(jìn)行擴(kuò)展,這樣每個(gè)組織就可以集中精力開發(fā)其核心功能,并將非核心功能外包給外部服務(wù)提供商。

•面向方面—提供了一種一致地處理橫切關(guān)注點(diǎn)(例如,業(yè)務(wù)活動(dòng)監(jiān)控、服務(wù)訪問控制和消息傳遞的可靠性)的方法。

•基于人員的工作流管理—協(xié)調(diào)信息工作者和他們與業(yè)務(wù)流程的交互作用,以提高效率并實(shí)現(xiàn)對(duì)客戶需求的響應(yīng)。

•非居間化—跨越業(yè)務(wù)邊界自動(dòng)交換非異常信息,以消除信息工作者執(zhí)行常規(guī)任務(wù)的需求,例如,通過書面(傳真、郵件、電子郵件)或口頭的信息交換進(jìn)行數(shù)據(jù)輸入。

•靈活性—這種系統(tǒng)的設(shè)計(jì)是為了響應(yīng)業(yè)務(wù)請(qǐng)求的特殊環(huán)境和內(nèi)容,以及業(yè)務(wù)要求和業(yè)務(wù)策略的更廣泛的變化。

•模型驅(qū)動(dòng)的開發(fā)—通過高級(jí)(通常是圖形化的)語(yǔ)言驅(qū)動(dòng)解決方案的開發(fā)流程,這種語(yǔ)言與正在實(shí)現(xiàn)自動(dòng)化的業(yè)務(wù)流程進(jìn)行了更緊密的綁定(例如,與Visual C#相比)。

Microsoft將靈活性和面向方面視為面向服務(wù)在業(yè)務(wù)和技術(shù)方面取得成功的關(guān)鍵因素;在本論文中,將不斷地圍繞這些主題進(jìn)行討論。不干預(yù)性是面向服務(wù)解決方案的一個(gè)非常普通的目標(biāo),因此它可能被視作該體系結(jié)構(gòu)的一個(gè)隱含收益。其它任何概念都是對(duì)面向服務(wù)的補(bǔ)充,它們可能(或不會(huì))對(duì)你的互聯(lián)系統(tǒng)策略起到關(guān)鍵作用。

你的互聯(lián)系統(tǒng)策略需要成為一種應(yīng)對(duì)機(jī)會(huì)和難題的標(biāo)準(zhǔn)方法,它們保證了你的IT投資的最佳回報(bào)。服務(wù)和支持模型的交換使用是無限制的,但是發(fā)展的實(shí)例應(yīng)該證明它具有啟發(fā)意義。

第一步:爬

Typhoon Taylor是Rum Island Industries(RII)的信息樞紐。每份訂單和發(fā)貨報(bào)告都要經(jīng)過他的辦公桌,他必須確保數(shù)據(jù)輸入到了主機(jī)里。但是,在RII被Worldwide Spirits(WWS)收購(gòu)之后,Typhoon發(fā)現(xiàn)他必須將相同的信息輸入到RII操作系統(tǒng)和WWS企業(yè)資源計(jì)劃(ERP)系統(tǒng)中;不同的信息模型不斷地造成數(shù)據(jù)輸入錯(cuò)誤,它們導(dǎo)致了兩個(gè)系統(tǒng)之間的數(shù)據(jù)不一致。

Typhoon與他的IT搭檔Daiquiri Jones討論了這種情況。Daiquiri不想破壞主機(jī)應(yīng)用程序,但是她又無法獲得WWS ERP系統(tǒng)的修改權(quán)限,因此她建議在兩個(gè)系統(tǒng)之前添加一個(gè)服務(wù)層。

通過與Typhoon合作,Daiquiri定義了一個(gè)PurchaseOrder(采購(gòu)訂單)文檔,它包含了該操作系統(tǒng)或ERP系統(tǒng)需要的全部信息,同時(shí)它又對(duì)二者都需要的公共元素進(jìn)行了映射。然后,Daiquiri將這份草案交給會(huì)計(jì)部門的Hurricane Harris和客服部門的Salty Robinson過目。根據(jù)他們的反饋意見,她又在PurchaseOrder架構(gòu)上添加了若干元素,以便支持Hurricane和Salty的需求。

通過再次與Typhoon合作,Daiquiri確定了兩項(xiàng)服務(wù):

•NewOrder(新訂單):接收采購(gòu)訂單文檔,并更新兩個(gè)后端系統(tǒng)。

•ProcessShipment(進(jìn)行發(fā)貨):接收Shipment(發(fā)貨)文檔,將它與訂單相關(guān)聯(lián),然后更新后端系統(tǒng)。

通過利用DB2數(shù)據(jù)庫(kù)和WWS ERP系統(tǒng)現(xiàn)有的適配器,并使用ASP.NET為Typhoon迅速編制一個(gè)用戶接口,Daiquiri在BizTalk Server 2004中實(shí)現(xiàn)了這些服務(wù)。

Typhoon非常高興。此后,他只需要輸入一次數(shù)據(jù),而且信息不一致的問題也解決了。

第二步:走

然而,Salty和Hurricane卻剛剛開始感覺到麻煩。

由于運(yùn)輸途中海浪很大,經(jīng)常會(huì)打碎幾個(gè)瓶子,每當(dāng)出現(xiàn)這種情況時(shí),Salty就不得不處理客戶的投訴。面對(duì)各種不同的系統(tǒng),Salty甚至不知道該從哪里提取客戶數(shù)據(jù);另外,在客戶需要緊急更換貨物時(shí),他必須與Typhoon協(xié)商酒產(chǎn)品脫離包裝線的改向問題。

對(duì)于Daiquiri來說,為Salty提供Typhoon用來檢查訂單完成情況的GetPurchaseOrder (獲得采購(gòu)訂單)接口非常容易,但是Typhoon堅(jiān)持認(rèn)為,在沒有他的批準(zhǔn)的情況下,Salty無權(quán)擅自更新訂單。因此,Daiquiri為PurchaseOrder業(yè)務(wù)服務(wù)定義了一套角色,并將Salty映射為“讀取者”的角色。

Daiquiri還擬訂了一份新的CustomerCredit(客戶信用)提案,Salty可以用它來處理關(guān)于產(chǎn)品破損的投訴,但是當(dāng)Hurricane看到這份文檔時(shí),她變得非常憤怒。這份提案根本沒有考慮到Sarbanes-Oxley的合規(guī)性問題。“我們作為一家固定而松散的私人公司的日子已經(jīng)結(jié)束了!”她咆哮說。因此,通過使用WWS會(huì)計(jì)部門已經(jīng)采用的架構(gòu),Daiquiri又重新確定了CustomerCredit文檔包含的各項(xiàng)元素,并收入了RegulatoryCompliance(合規(guī)性)元素。

在發(fā)貨過程中重新排列客戶的優(yōu)先次序變得更加復(fù)雜,但它也是一次解決問題的機(jī)會(huì),在Rum Island(拉姆島),長(zhǎng)期以來這個(gè)問題一直限制著生產(chǎn)力的發(fā)展,客戶對(duì)這個(gè)問題也非常關(guān)心。

通過與Typhoon、Salty以及發(fā)貨部門的Mojito Moore進(jìn)行合作,Daiquiri重新設(shè)計(jì)了Shipment的架構(gòu),以包含對(duì)于Customers(客戶)和PurchaseOrders的綁定。然后,她為Shipment文檔實(shí)現(xiàn)了一個(gè)優(yōu)先級(jí)隊(duì)列,這樣Mojito就會(huì)知道下一個(gè)離線的集裝箱應(yīng)該發(fā)往哪里。(Mojito被映射為隊(duì)列接口的“寫入者”角色,因此他可以根據(jù)離港的貨船來優(yōu)化隊(duì)列。)

Daiquiri定義了一個(gè)工作流,當(dāng)Salty調(diào)用ReprioritizeShipmentQueue(重新排列發(fā)貨隊(duì)列的優(yōu)先次序)接口時(shí),此接口會(huì)把相關(guān)請(qǐng)求發(fā)送給Typhoon審核,這樣工作流就會(huì)得到實(shí)例化。

以前的某些工作流程需要手動(dòng)完成,這會(huì)牽涉到Typhoon、Mojito和Salty之間的不準(zhǔn)確通信,而現(xiàn)在,這種工作流程可以非常順利地進(jìn)行。當(dāng)然,每當(dāng)Typhoon否決了Salty的一個(gè)請(qǐng)求時(shí),Salty還是會(huì)發(fā)脾氣。

第三步:跑

當(dāng)Daiquiri的預(yù)算再一次被削減時(shí),她意識(shí)到她必須擁有找到資金的創(chuàng)造力。她投入大量資金購(gòu)買了一條通向WWS的長(zhǎng)途電纜,但是這條電纜每天只有幾百KB的電子數(shù)據(jù)交換(EDI)流量。如果……

在WWS總部,Martini Wilson已經(jīng)創(chuàng)建了可提高EDI流量的XML架構(gòu);他需要它們將傳入的EDI消息轉(zhuǎn)換為符合《美國(guó)愛國(guó)者法案》(USA PATRIOT Act)的數(shù)據(jù)包。通過使用加密的Web服務(wù)調(diào)用功能,而不是使用專用的EDI電纜,WSS的大部分子公司都可以降低成本,他同意這一點(diǎn),因此他實(shí)現(xiàn)了一項(xiàng)可將請(qǐng)求映射到EDI處理管道的網(wǎng)關(guān)服務(wù)。

通過利用她的新基礎(chǔ)結(jié)構(gòu)和專業(yè)知識(shí),Daiquiri還向Rum Island的甘蔗供應(yīng)商推薦了一組服務(wù)接口。Beachcomber Perry是這項(xiàng)服務(wù)的受益者之一,他感到非常興奮;他已經(jīng)厭倦了整天與種植園主和船長(zhǎng)在電話里打交道。當(dāng)然,Mojito也參加了這項(xiàng)活動(dòng)。通過使用這種改善的信息,他可以安排相同的貨船來運(yùn)糖,以便釀酒。Rum Island的庫(kù)存管理從沒像現(xiàn)在這樣好過。

某些種植者和船員對(duì)這種變化進(jìn)行了抵制,但是這僅僅意味著他們以后在Rum Island看到的業(yè)務(wù)將越來越少。

面向服務(wù)的技術(shù)

Microsoft對(duì)于面向服務(wù)的投入

1999年9月,當(dāng)時(shí)的Microsoft總裁(現(xiàn)在的首席執(zhí)行官)Steve Ballmer首先公開探討了“軟件即服務(wù)”的挑戰(zhàn),并第一次引入了Web服務(wù)的概念。隨著Internet的成熟,一種新的編程模型很快就會(huì)出現(xiàn),這一點(diǎn)很明顯;在這種模型里,軟件組件將可以跨越廣域網(wǎng)、跨越平臺(tái)、跨越組織邊界進(jìn)行調(diào)用。到底是什么使這種編程模型成為了一種值得信任的業(yè)務(wù)應(yīng)用平臺(tái)?

2000年6月,這種新興的策略獲得了一個(gè)名字:“Microsoft .NET”。

緊接著是一段調(diào)整期,與Microsoft有關(guān)的組織紛紛對(duì)自身進(jìn)行調(diào)整,以應(yīng)對(duì).NET提出的新挑戰(zhàn)。出現(xiàn)了一系列與XML Web服務(wù)相關(guān)的面向服務(wù)策略,無論是對(duì)于你現(xiàn)有的Microsoft產(chǎn)品,還是對(duì)于你的組織技術(shù)組合中的所有其它資產(chǎn),它們都充當(dāng)了連接Microsoft產(chǎn)品的一致性策略。

Microsoft認(rèn)識(shí)到,為了使技術(shù)發(fā)展到與業(yè)務(wù)流程相關(guān)的下一階段,使技術(shù)繼續(xù)促進(jìn)員工生產(chǎn)力方面的收益,必須跨越相關(guān)的邊界。其中一個(gè)邊界完全來自于技術(shù)人員自身的構(gòu)成:各執(zhí)行平臺(tái)之間的邊界。Microsoft致力于與其它平臺(tái)供應(yīng)商進(jìn)行合作,以便與他們聯(lián)手將這座墻推倒。

通過與BEA Systems Inc.、IBM Corp.、TIBCO Software Inc.、VeriSign Inc.以及其它技術(shù)供應(yīng)商進(jìn)行合作,Microsoft創(chuàng)建了一種流程,它可以擴(kuò)展SOAP消息的跨平臺(tái)功能,并實(shí)現(xiàn)競(jìng)爭(zhēng)規(guī)范的合理化。這些規(guī)范以一種免除版稅的方式發(fā)布到了標(biāo)準(zhǔn)的體系中。通過不斷的努力,這些競(jìng)爭(zhēng)組織達(dá)成了合作,為它們的客戶提供了互操作性,這種互操作性對(duì)于實(shí)現(xiàn)全局消息起到了關(guān)鍵作用。

由于認(rèn)識(shí)到了這些規(guī)范的不足——早期的標(biāo)準(zhǔn)無法在實(shí)現(xiàn)過程中取得互操作性,Microsoft、IBM和其他贊助商合作創(chuàng)建了Web服務(wù)互操作性組織(WS-I)。WS-I為Web服務(wù)標(biāo)準(zhǔn)的通用解釋提供了一個(gè)論壇,這樣技術(shù)客戶就可以相信WS-Security的兩種實(shí)現(xiàn)過程其實(shí)將會(huì)實(shí)現(xiàn)互操作。WS-I成立于2002年2月,現(xiàn)在它已經(jīng)擁有了接近150個(gè)成員,這些成員包括了各種不同的組織機(jī)構(gòu):從系統(tǒng)供應(yīng)商到系統(tǒng)集成商到解決方案提供商到保健服務(wù)提供商到政府機(jī)構(gòu)。America Online Inc.、BEA、Fujitsu、HP、NEC Corp.、Oracle Corp.、SAP AG、Siebel Systems Inc.、Sun Microsystems Inc.和TIBCO都是WS-I的成員。

在此基礎(chǔ)之上,Microsoft又將基于標(biāo)準(zhǔn)的互操作性置入了它的企業(yè)計(jì)算產(chǎn)品系列中。

面向服務(wù)的目前狀況

Microsoft平臺(tái)支持創(chuàng)建符合WS-I Basic Profile 1.0的服務(wù)和解決方案,同時(shí)它也支持對(duì)高級(jí)的WS-* Web服務(wù)規(guī)范進(jìn)行早期的采用。

使用ASP.NET對(duì)于Web服務(wù)的支持是Microsoft平臺(tái)上創(chuàng)建Web服務(wù)的主要方法,ASP.NET Web服務(wù)俗稱為“.asmx”或“ASMX”,這是因?yàn)閂isual Studio對(duì)這些可執(zhí)行文件使用了這種文件擴(kuò)展名。

BizTalk Server 2004允許將編制服務(wù)公開為Web服務(wù),對(duì)于缺乏本地Web服務(wù)支持的業(yè)務(wù)應(yīng)用程序,這大大加快了Web服務(wù)網(wǎng)關(guān)的開發(fā)過程。

在Web Services Enhancements for Microsoft .NET (WSE)中,可以使用早期實(shí)現(xiàn)的高級(jí)Web服務(wù)功能,例如,使用了WS-Addressing規(guī)范的復(fù)雜消息路由,以及WS-Security規(guī)范的消息級(jí)安全性。WSE是一種技術(shù)預(yù)覽程序,可用于特定的客戶——這些客戶希望以推薦的標(biāo)準(zhǔn)為基礎(chǔ)對(duì)技術(shù)進(jìn)行實(shí)驗(yàn)。

對(duì)于從我們的操作系統(tǒng)(Windows XP、Windows Server 2003和Windows CE)和Microsoft Office系統(tǒng)調(diào)用Web服務(wù),Microsoft提供了豐富的支持。

Microsoft Office InfoPath 2003是Microsoft Office系統(tǒng)中提供的一個(gè)新組件,它支持將圖式化的表單用作包含后端服務(wù)的交互模型。InfoPath已經(jīng)證明它在結(jié)構(gòu)化的協(xié)作方案(從人力資源注冊(cè)到合同協(xié)商)中是非常有用的。

Office的另一個(gè)新組件是Microsoft Office Information Bridge Framework (IBF),有了它,就可以通過Web服務(wù)訪問信息。IBF是Visual Studio .NET的一個(gè)外接程序,它使開發(fā)人員可以創(chuàng)建基于Web服務(wù)的解決方案,這種解決方案能夠訪問企業(yè)業(yè)務(wù)數(shù)據(jù),例如銷售額、庫(kù)存數(shù)字、客戶信息等等。在Word、Excel和Outlook的2003版中,可以直接查看這些信息。IBF能夠讓信息工作者在不離開他們熟悉的Office應(yīng)用程序的情況下檢索和操作信息,從而增強(qiáng)了他們的生產(chǎn)力。

Visual Studio為企業(yè)的行業(yè)應(yīng)用程序提供了最佳的開發(fā)環(huán)境,它一直保留了這種傳統(tǒng)。Visual Studio .NET支持Web服務(wù)的實(shí)例包括:

•服務(wù)部署

•XSD創(chuàng)作

•WSDL的自動(dòng)生成

•UDDI注冊(cè)

•數(shù)據(jù)中心部署包

•通過UDDI發(fā)現(xiàn)客戶端服務(wù)

•客戶端服務(wù)綁定

•服務(wù)代理的自動(dòng)生成

同時(shí),Microsoft正努力提供必要的指導(dǎo),以便開發(fā)人員完善創(chuàng)建過程。傳統(tǒng)上,MSDN為開發(fā)人員提供了較為完善的指導(dǎo)材料,Microsoft對(duì)這些指導(dǎo)材料進(jìn)行了擴(kuò)展,它以書籍、白皮書、參考應(yīng)用程序和模式庫(kù)的形式提供了體系結(jié)構(gòu)指導(dǎo)。Microsoft的模式與實(shí)踐門戶(http://www.microsoft.com/practices/)是體系結(jié)構(gòu)指導(dǎo)的入口,從信息設(shè)計(jì)到解決方案體系結(jié)構(gòu)到解決方案建模(目的是將這些解決方案部署到企業(yè)的數(shù)據(jù)中心中),這些指導(dǎo)材料包含了非常豐富的內(nèi)容。

使用SQL Server 2005和Visual Studio .NET 2005實(shí)現(xiàn)面向服務(wù)Microsoft SQL Server 2005 (代號(hào)為“Yukon”)和Visual Studio .NET 2005 (代號(hào)為“Whidbey”)將是2005年發(fā)布的兩項(xiàng)關(guān)鍵技術(shù)。

對(duì)于需要應(yīng)對(duì)特殊挑戰(zhàn)(使用Web服務(wù)設(shè)計(jì)分布式系統(tǒng))的架構(gòu)師,Visual Studio將引入一種新的建模畫布。另外,Visual Studio還將附帶兩個(gè)使用了此畫布的設(shè)計(jì)工具:

•邏輯應(yīng)用程序設(shè)計(jì)器,可用來對(duì)面向服務(wù)的解決方案的各個(gè)組件以及它們之間的交互作用進(jìn)行建模。

•邏輯數(shù)據(jù)中心設(shè)計(jì)器,可用來對(duì)部署服務(wù)的處理器以及這些處理器的防火墻所在的安全區(qū)域進(jìn)行建模。

這些建模工具主要是為了支持解決方案架構(gòu)師和系統(tǒng)架構(gòu)師之間的初期通信,從而保證設(shè)計(jì)階段能夠完整地考慮到解決方案的操作要求。Microsoft不斷地接到以下的客戶反饋:由于部署問題,許多項(xiàng)目都延期進(jìn)行,并且超過了預(yù)算;如果事先進(jìn)行更好的建模,這些問題本來都是可以避免的。

雙方的設(shè)計(jì)師都以系統(tǒng)定義模型(SDM)為目標(biāo),SDM是一種XML架構(gòu),可描述軟件組件、計(jì)算機(jī)硬件、網(wǎng)絡(luò)和交互模型。作為一種用來描述和分析互聯(lián)系統(tǒng)的建模語(yǔ)言,SDM是動(dòng)態(tài)系統(tǒng)計(jì)劃的技術(shù)基礎(chǔ)(參見下文)。

SQL Server 2005具有很多改進(jìn)之處,其中之一是加強(qiáng)了對(duì)于XML和Web服務(wù)的支持。SQL將提供:

•XML文檔的本地存儲(chǔ)。

•支持XQuery搜索這些文檔。

•在XML中返回結(jié)果集。

•將存儲(chǔ)過程公開為Web服務(wù)。

SQL Server中的若干體系結(jié)構(gòu)元素將支持面向服務(wù)的數(shù)據(jù)中心內(nèi)的解決方案:

•通知服務(wù)可用于發(fā)布和訂閱信息源。

•報(bào)表服務(wù)可執(zhí)行計(jì)劃的查詢,并針對(duì)分析結(jié)果產(chǎn)生XML格式的通知。

•SQL Service Broker可用來支持在分布式數(shù)據(jù)模型上設(shè)計(jì)的服務(wù),包括超標(biāo)量的信息存儲(chǔ)庫(kù)。

使用“Indigo”和Windows “Longhorn”實(shí)現(xiàn)面向服務(wù)

“Indigo”將成為Microsoft對(duì)于互操作性消息的投資的高峰:

•它將成為Microsoft對(duì)于高級(jí)Web服務(wù)(WS-*規(guī)范)的實(shí)現(xiàn)。

•它將成為Microsoft用于分布式計(jì)算(從進(jìn)程間通信到跨組織的Web服務(wù)調(diào)用)的統(tǒng)一消息堆棧。

•它將成為Microsoft用來開發(fā)面向服務(wù)的業(yè)務(wù)應(yīng)用程序的模型和框架。

根據(jù)協(xié)定、消息、通道和服務(wù)的面向服務(wù)概念,“Indigo”將提供一個(gè)編程模型和一個(gè)消息實(shí)現(xiàn)程序。“Indigo”將支持更安全、可靠的交易信息交換和功能調(diào)用,同時(shí)它們應(yīng)該符合各參與組織聲明的交換政策。

“Indigo”技術(shù)將包含到“Longhorn”客戶端發(fā)行版中,同時(shí)可供Windows XP和Windows Server 2003使用。

下一代Windows客戶端(代號(hào)為“Longhorn”)將引入創(chuàng)新技術(shù),它們將擴(kuò)展桌面參與面向服務(wù)的業(yè)務(wù)協(xié)作的能力。

“Longhorn”將引入XAML,這是一種基于XML的標(biāo)記語(yǔ)言,可用于智能的Windows應(yīng)用程序。與HTML一樣,XAML使用了一種描述UI元素的聲明語(yǔ)法,相對(duì)于過程聲明,它可以非常容易地通過編程方式進(jìn)行生成和分析。這種創(chuàng)新將允許用戶接口更好地反映它們表示的信息,這是因?yàn)閁I能夠基于交互狀態(tài)以編程方式生成。

WinFX完成了到Windows中的托管代碼的過渡,這種過渡是從2002年Visual Studio .NET的引入開始的。WinFX是下一代的系統(tǒng)編程接口。在面向服務(wù)方面,WinFX統(tǒng)一了Microsoft的多個(gè)消息模型,以檢索自Web服務(wù)的信息為基礎(chǔ)對(duì)代碼訪問的安全性提供了支持,并向應(yīng)用程序開發(fā)人員公開了“Indigo”消息堆棧的功能。

通過動(dòng)態(tài)系統(tǒng)計(jì)劃(DSI),Microsoft正在努力提高IT的生產(chǎn)力,并降低與面向服務(wù)的系統(tǒng)的設(shè)計(jì)、部署和分布式操作相關(guān)的成本。作為此計(jì)劃的一部分,系統(tǒng)定義模型(SDM)是一項(xiàng)核心技術(shù),通過為應(yīng)用程序、系統(tǒng)和交互操作定義通用的語(yǔ)義,它使面向服務(wù)的規(guī)則可以應(yīng)用到系統(tǒng)管理中。通過使用這種通用的領(lǐng)域特定語(yǔ)言,應(yīng)用程序可以表達(dá)它們的技術(shù)要求,比如CPU周期、內(nèi)存容量和存儲(chǔ)容量,同時(shí)系統(tǒng)還可以對(duì)其資源進(jìn)行描述。這種新的建模技術(shù)將能夠使業(yè)務(wù)更迅速地推出面向服務(wù)的應(yīng)用程序,這種應(yīng)用程序更容易部署,管理費(fèi)用也更低。DSI是Microsoft和業(yè)界共同努力的結(jié)果,它將對(duì)軟件開發(fā)工具和應(yīng)用程序、操作系統(tǒng)、管理解決方案及硬件平臺(tái)產(chǎn)生深遠(yuǎn)的影響。欲了解DSI的詳細(xì)信息,請(qǐng)參見http://www.microsoft.com/dsi/。

創(chuàng)建面向服務(wù)的解決方案

并不是所有的Web服務(wù)都是平等創(chuàng)建的。一個(gè)雞蛋可能變成美味可口的蛋奶酥;但是如果將它放在荷蘭辣醬油上,就將變成一次讓人反胃的品嘗;或者,如果掉在了地上,它就會(huì)變成一團(tuán)粘糊糊的東西。每個(gè)人都可以通過服務(wù)構(gòu)建任何事物:好的,壞的,或丑陋的。

在策劃企業(yè)服務(wù)組合時(shí),需要面對(duì)三個(gè)基本的挑戰(zhàn):

•面向服務(wù)的分析—為了支持組織的業(yè)務(wù)優(yōu)先級(jí),應(yīng)該創(chuàng)建哪些服務(wù)?

•服務(wù)設(shè)計(jì)—應(yīng)該怎樣創(chuàng)建每項(xiàng)服務(wù)?

•服務(wù)管理—為了支持業(yè)務(wù)服務(wù),應(yīng)該部署哪些基礎(chǔ)結(jié)構(gòu)服務(wù)?了解和處理異常需要哪些支持?

本章節(jié)將探討所有這些挑戰(zhàn),并進(jìn)行總體的指導(dǎo),告訴你現(xiàn)在應(yīng)該怎樣做才能獲得面向服務(wù)帶來的直接收益;同時(shí),它還為你提供了一些提示,這樣你就可以預(yù)測(cè)完成互聯(lián)系統(tǒng)策略所需的未來投資。

面向服務(wù)的分析

面向服務(wù)的體系結(jié)構(gòu)是組織機(jī)構(gòu)業(yè)務(wù)流程的建模藝術(shù),同時(shí)它也是網(wǎng)絡(luò)可尋址的業(yè)務(wù)組件的結(jié)構(gòu)完善的組合。

真正的挑戰(zhàn)來自于那個(gè)看似平常的修飾語(yǔ):結(jié)構(gòu)完善的。在確定對(duì)組織功能的建模起關(guān)鍵作用的信息集(請(qǐng)將它作為“結(jié)構(gòu)化業(yè)務(wù)文檔”的一個(gè)令人討厭的同義詞來閱讀)和行為時(shí),總有一種“翻江倒海”的誘惑——設(shè)法為組織的所有行為創(chuàng)建一個(gè)完整的自上而下的視圖,并在一個(gè)一致的企業(yè)體系結(jié)構(gòu)中對(duì)其進(jìn)行建模。同時(shí),那些需要解決方案的業(yè)務(wù)單位目前正通過技術(shù)和業(yè)務(wù)流程重組投資而迅速發(fā)展。

“權(quán)宜之計(jì)”是一個(gè)強(qiáng)大的動(dòng)力。利用它,但是也要對(duì)它進(jìn)行適度的控制。在不斷的嘗試中學(xué)會(huì)爬;在不斷的交流中學(xué)會(huì)走;在不斷的協(xié)作中學(xué)會(huì)跑。

應(yīng)該怎樣權(quán)宜性地定義一個(gè)服務(wù)組合呢?這里有幾個(gè)原則。

設(shè)計(jì)長(zhǎng)期穩(wěn)定的服務(wù),設(shè)計(jì)靈活應(yīng)變的系統(tǒng)

在一個(gè)企業(yè)服務(wù)體系結(jié)構(gòu)中,功能服務(wù)是構(gòu)成業(yè)務(wù)流程和業(yè)務(wù)系統(tǒng)的組件。對(duì)服務(wù)接口進(jìn)行建模,從而緊密地結(jié)合業(yè)務(wù)功能模型,這是一個(gè)重要的最佳實(shí)踐方法。例如,大多數(shù)制造商都有接收訂購(gòu)請(qǐng)求的業(yè)務(wù)需求;定義一個(gè)描述訂購(gòu)請(qǐng)求的信息集和一個(gè)接收此信息集實(shí)例的終點(diǎn),即可構(gòu)成一個(gè)井然有序的服務(wù)范例。

業(yè)務(wù)流程遠(yuǎn)比它們處理的信息不穩(wěn)定。在流程中,操作者(人)的判斷甚至是一時(shí)沖動(dòng)都會(huì)對(duì)處理操作造成很大的影響,同時(shí)各種服務(wù)異常情況也會(huì)對(duì)業(yè)務(wù)實(shí)例造成干擾。每個(gè)業(yè)務(wù)流程實(shí)例都可以構(gòu)成一條穿過你的服務(wù)組合的唯一路線。

因此,系統(tǒng)必須具有靈活性。流程的編制應(yīng)該易于修改,甚至是完全動(dòng)態(tài)的。對(duì)于成功的業(yè)務(wù)系統(tǒng)而言,將硬編碼的業(yè)務(wù)流程排入已編譯的可執(zhí)行文件是一種反模式。

事件驅(qū)動(dòng)的體系結(jié)構(gòu)的概念對(duì)于有效的流程設(shè)計(jì)具有指導(dǎo)意義。流程應(yīng)該能夠洞察推動(dòng)其發(fā)展或使其脫離正常路線的業(yè)務(wù)事件。當(dāng)異常事件使某個(gè)流程脫離正常的軌道時(shí),應(yīng)該努力使流程恢復(fù)正常,并使其返回主要的軌道;如果對(duì)整個(gè)流程進(jìn)行人工監(jiān)控,將導(dǎo)致流程成本的激增,甚至遠(yuǎn)遠(yuǎn)超過流程本身帶給組織的價(jià)值。

從全局著眼,從局部著手

大多數(shù)組織都擁有幾個(gè)(也許多達(dá)10個(gè))關(guān)鍵實(shí)體,這些實(shí)體在它們的核心業(yè)務(wù)流程里運(yùn)行。一般的例子包括Customer(客戶)、Employee(員工)和BusinessTransaction(業(yè)務(wù)交易,或通稱為PurchaseOrder(采購(gòu)訂單))。應(yīng)努力對(duì)這幾個(gè)關(guān)鍵實(shí)體進(jìn)行定義,以創(chuàng)建實(shí)體類型的組織模式,并開發(fā)實(shí)體建模的專業(yè)知識(shí)。同時(shí),還應(yīng)參閱關(guān)于指導(dǎo)和重復(fù)使用的正式標(biāo)準(zhǔn)和實(shí)際標(biāo)準(zhǔn)(如果你所在的垂直行業(yè)中存在著任何滿足要求的標(biāo)準(zhǔn),那么就可以使用此標(biāo)準(zhǔn))。

我們已經(jīng)建立了專業(yè)知識(shí)和一組觀點(diǎn),下面我們要更加深入地探討如何應(yīng)對(duì)業(yè)務(wù)機(jī)會(huì)和難題:

•確定進(jìn)行改進(jìn)的關(guān)鍵機(jī)會(huì)。

•對(duì)目前的業(yè)務(wù)方案進(jìn)行建模,并適當(dāng)參考現(xiàn)有的標(biāo)準(zhǔn)。

•與三到四個(gè)相關(guān)業(yè)務(wù)科目的專家一起檢查此模型。

•根據(jù)他們的反饋擴(kuò)展和修改此模型。

•開發(fā)業(yè)務(wù)服務(wù)。

•重復(fù)以上步驟。

結(jié)果將不會(huì)很完美。稍后就會(huì)發(fā)現(xiàn)某些業(yè)務(wù)案例需要附加的信息。必須向業(yè)務(wù)流程模型中添加步驟。不過,有了下一條原則,你就可以對(duì)變化做好充分的準(zhǔn)備。

對(duì)于可擴(kuò)展性的設(shè)計(jì)

在時(shí)間的考驗(yàn)下,任何對(duì)于要求的理解都是不充分的。為了進(jìn)一步證明你的服務(wù)和解決方案,你必須將可擴(kuò)展性設(shè)計(jì)進(jìn)來。可擴(kuò)展性有兩個(gè)關(guān)鍵領(lǐng)域:實(shí)體可擴(kuò)展性和行為可擴(kuò)展性。

在實(shí)體中擴(kuò)展模式化信息的主要原則是容納一系列可能包含任何內(nèi)容的Extension(擴(kuò)展名)元素。這些元素通常都會(huì)使用一個(gè)名稱來鑒別自己,并引用它們自己的架構(gòu)。通過在實(shí)體定義中包含這種支持功能,你就可以創(chuàng)建多態(tài)實(shí)體。一個(gè)已擴(kuò)展的Employee實(shí)體仍然可以由任何了解基礎(chǔ)實(shí)體的服務(wù)進(jìn)行操作,不過它也可以支持那些了解實(shí)體的服務(wù)(也就是稱為TravelProfile(旅游資料)的擴(kuò)展名)進(jìn)行擴(kuò)展處理。

不同的地區(qū)需要不同的信息。例如,一個(gè)稅號(hào)在不同的國(guó)家可能會(huì)有不同的構(gòu)成方式。請(qǐng)勿將社會(huì)保險(xiǎn)號(hào)作為你的Employee實(shí)體中的頂級(jí)元素;正確的做法是,包含一個(gè)可能將其子類型標(biāo)記為“US-SSN”的TaxID(稅號(hào))元素。

與面向?qū)ο蟛煌�,面向服�?wù)對(duì)行為進(jìn)行了延遲的綁定——只有在實(shí)體被傳送到一個(gè)知道如何處理其內(nèi)部包含的信息的服務(wù)時(shí),實(shí)體的“行為”才會(huì)得到綁定。

因此,可通過操作實(shí)體增加價(jià)值的公開服務(wù)基本上實(shí)現(xiàn)了行為可擴(kuò)展性。如果要將新的行為綁定到實(shí)體上,可以使用很多有效的模式,但是本文不會(huì)介紹這些模式,因?yàn)樗鼈兂隽吮疚挠懻摰姆秶�。不過,一個(gè)具有指導(dǎo)意義的實(shí)例是,一個(gè)服務(wù)充當(dāng)了另一個(gè)服務(wù)(該服務(wù)能夠操作較大實(shí)體的元素)的門面。VerifyEmployeeAddress(驗(yàn)證員工地址)也許可以接收Employee實(shí)體,并提取它的Address(地址)元素,然后將它傳送到更通用的VerifyAddress(驗(yàn)證地址)服務(wù)中,VerifyAddress服務(wù)是由合適的國(guó)家郵政服務(wù)提供的。

另外,一個(gè)關(guān)鍵的指導(dǎo)原則是從標(biāo)準(zhǔn)化的元素組成實(shí)體,從而最大限度地提高實(shí)用服務(wù)的可重用性和通用信息元素處理的一致性。

分開的功能和操作關(guān)注點(diǎn)

請(qǐng)將你的業(yè)務(wù)服務(wù)和基礎(chǔ)結(jié)構(gòu)服務(wù)都視作提供的功能�;A(chǔ)結(jié)構(gòu)服務(wù)提供了橫向的功能,它也被稱作橫切關(guān)注點(diǎn)或方面(比較深?yuàn)W)。

在進(jìn)行面向服務(wù)的分析時(shí),你的挑戰(zhàn)是如何確定這些橫切關(guān)注點(diǎn)并把它們從你的業(yè)務(wù)實(shí)體中分解出來。你最需要的是單獨(dú)實(shí)現(xiàn)每個(gè)基礎(chǔ)結(jié)構(gòu)服務(wù),它們可以通過管道傳送,以滿足特殊消息交換的總體操作要求。

你的基礎(chǔ)結(jié)構(gòu)服務(wù)組合可能會(huì)成為購(gòu)買和創(chuàng)建行為的綜合體,如果在市場(chǎng)上可以獲得合適的實(shí)現(xiàn)工具,它就將以購(gòu)買為主。下面的“服務(wù)管理”一節(jié)將更詳細(xì)地討論這個(gè)主題。

牢記客戶

進(jìn)行以用戶為中心的設(shè)計(jì)練習(xí)是面向服務(wù)的分析的一個(gè)重要部分。這些服務(wù)有哪些用例?它們將由誰(shuí)調(diào)用,為什么?用戶將會(huì)在哪些角色里訪問這些服務(wù)?誰(shuí)可以調(diào)用服務(wù),誰(shuí)又不可以?需要支持哪些類型的設(shè)備和體驗(yàn)?為了簡(jiǎn)化從所有這些設(shè)備到服務(wù)的訪問,我們是否需要開發(fā)服務(wù)代理?

為客戶操作進(jìn)行信息建模時(shí),需要考慮以下幾個(gè)方面:

•只能使用XSD類型(以及由XSD類型組成的復(fù)雜類型);不要通過特定平臺(tái)的數(shù)據(jù)編碼將你自己綁定到操作平臺(tái)上。

•架構(gòu)應(yīng)該表現(xiàn)出對(duì)于數(shù)據(jù)值的約束,以允許客戶端在提交更新請(qǐng)求之前對(duì)其進(jìn)行驗(yàn)證;客戶端的驗(yàn)證可大大減少服務(wù)拒絕請(qǐng)求由于數(shù)據(jù)值超出限制所帶來的成本和阻礙。(當(dāng)然,即使在發(fā)布約束時(shí),服務(wù)仍然需要驗(yàn)證數(shù)據(jù)值。)

•參考信息應(yīng)該具有時(shí)間戳或版本標(biāo)記,以支持緩存、增量更新和連續(xù)的更新請(qǐng)求。

在服務(wù)可用時(shí),你的組織里的聰明人會(huì)找到辦法來使用它。請(qǐng)不要假設(shè)你在設(shè)計(jì)階段所能夠確定的客戶是所有將會(huì)調(diào)用此服務(wù)的客戶。請(qǐng)不要寄希望于客戶對(duì)服務(wù)協(xié)定會(huì)有更深入的理解,也不要相信客戶只會(huì)向服務(wù)發(fā)送有效的請(qǐng)求。

服務(wù)設(shè)計(jì)

面向服務(wù)是創(chuàng)建分布式系統(tǒng)的最佳實(shí)踐方法的發(fā)展和完善。與此相同,它的模式來自于分布式對(duì)象技術(shù)和面向消息的中間件解決方案的成功之處,同時(shí)它也確定了這些體系結(jié)構(gòu)的不完善之處導(dǎo)致的反模式。“Indigo”小組的Don Box確定了在考慮面向服務(wù)時(shí)要牢記的四個(gè)原則:

•原則1:邊界是顯式的。通過邊界后面的顯式消息傳遞方式,服務(wù)可以進(jìn)行交互。對(duì)于服務(wù)邊界之后的空間,我們不做任何假設(shè)。跨越服務(wù)邊界可能需要很高的成本(例如,你可能需要擴(kuò)展地域、可靠的邊界或執(zhí)行環(huán)境)。通過在服務(wù)之間正式地傳遞已定義的消息,我們明確地決定調(diào)用服務(wù)。顯式的邊界使我們可以正式地展示獨(dú)立于實(shí)現(xiàn)過程的交互操作——我們不必明確地選擇實(shí)現(xiàn)其它服務(wù)所使用的平臺(tái)、中間件或編碼語(yǔ)言。

•原則2:服務(wù)是自治的。作為獨(dú)立的實(shí)體,服務(wù)采取了合理的行為。對(duì)于服務(wù)邊界之間的空間,我們不做任何假設(shè)。在面向服務(wù)的環(huán)境中,并沒有主導(dǎo)的權(quán)威。服務(wù)的部署、版本控制和管理都是獨(dú)立的。執(zhí)行服務(wù)的拓?fù)淇赡軙?huì)(也必將會(huì))不斷地發(fā)展。服務(wù)應(yīng)該預(yù)料到對(duì)等的服務(wù)可能會(huì)(也必將會(huì))失效,而且它可能會(huì)(也必將會(huì))收到殘缺的或惡意的消息。應(yīng)該使用冗余和故障轉(zhuǎn)移等技術(shù)來創(chuàng)建服務(wù),以避免服務(wù)失效。

•原則3:服務(wù)對(duì)架構(gòu)和協(xié)定(而不是類)進(jìn)行共享。服務(wù)只在其使用架構(gòu)的結(jié)構(gòu)表達(dá)式和使用協(xié)定的行為表達(dá)式上進(jìn)行交互。服務(wù)的協(xié)定描述了消息的結(jié)構(gòu)和消息的排序約束。表達(dá)式的形式使機(jī)器可以驗(yàn)證傳入的消息,這樣我們就可以保護(hù)服務(wù)的完整性。在時(shí)間變化時(shí),協(xié)定和架構(gòu)必須保持穩(wěn)定,因此靈活地創(chuàng)建它們(例如,通過在架構(gòu)中使用xsd:any)很重要。

•原則4:服務(wù)的兼容性是以策略為基礎(chǔ)的。服務(wù)提供者和服務(wù)消費(fèi)者都具有與跨邊界交互相關(guān)的策略——操作要求。提供端策略的一個(gè)簡(jiǎn)單示例是,服務(wù)可能需要調(diào)用者在服務(wù)提供者那里擁有有效的帳戶。從消費(fèi)端的角度來說,組織可能需要對(duì)跨越Internet的服務(wù)調(diào)用進(jìn)行加密,這樣它就只能使用可提供安全性增強(qiáng)的雙向數(shù)據(jù)交換功能的服務(wù)。服務(wù)使用了機(jī)器可讀的策略表達(dá)式來表現(xiàn)其功能和要求。策略斷言是由一個(gè)穩(wěn)定的全局唯一名稱來標(biāo)識(shí)的。單獨(dú)的策略斷言對(duì)于整個(gè)系統(tǒng)而言是難以理解的;服務(wù)必須能夠滿足彼此的策略要求。

在你的服務(wù)邊界上進(jìn)行的通信應(yīng)該支持以上的原則。對(duì)于面向服務(wù)的環(huán)境中存在的服務(wù),這些原則需要它們之間的架構(gòu)、協(xié)定和策略的正規(guī)表達(dá)式�?梢蚤_發(fā)專門為眼前的問題創(chuàng)建的機(jī)制,以表示服務(wù)的邊界,但是這些機(jī)制僅限于創(chuàng)造者的影響范圍之內(nèi)。例如,如果你開發(fā)了一種系統(tǒng),這種系統(tǒng)能夠以一種特殊的方式表示架構(gòu)和協(xié)定,而只有你的部門才能識(shí)別這種表示方式,那么你就避免了你的服務(wù)在你的部門之外被使用。

為了充分實(shí)現(xiàn)面向服務(wù)帶來的利益,你的服務(wù)邊界表達(dá)式必須得到最廣泛的采用,并具有最高的互操作性。本行業(yè)已將SOAP消息中傳播的WS-*協(xié)議明確選定為服務(wù)的互操作性標(biāo)準(zhǔn)。在實(shí)際應(yīng)用時(shí),面向服務(wù)需要獲得Web服務(wù)和SOAP消息,并使用WS-*協(xié)議。

選擇一項(xiàng)支持面向服務(wù)的消息技術(shù)就相當(dāng)于選擇了一項(xiàng)能夠支持SOAP和WS-*協(xié)議的消息技術(shù)。在目前發(fā)布的Microsoft技術(shù)中,這項(xiàng)技術(shù)指的是ASP.NET中的.asmx。如果你需要支持不斷發(fā)展的WS協(xié)議,請(qǐng)結(jié)合WSE使用.asmx。如果要以一種互操作的方式公開架構(gòu)、協(xié)定和策略,并且此過程要獨(dú)立于實(shí)現(xiàn)過程,那么請(qǐng)選擇.asmx,因?yàn)樗谀壳暗腗icrosoft消息技術(shù)中提供的支持是最好的。

服務(wù)邊界的重點(diǎn)在于,在邊界內(nèi)可以使用任何實(shí)現(xiàn)工具。如果你通過ASMX和/或WSE正式指定了你的服務(wù)邊界,那么你就可以在這些邊界內(nèi)選用任何技術(shù)或消息堆棧執(zhí)行處理和數(shù)據(jù)交換。為了實(shí)現(xiàn)簡(jiǎn)單性和一致性,我們推薦保留此服務(wù)模型,并結(jié)合服務(wù)邊界使用ASMX。不過,無論是為了支持特定的功能,還是為了支持現(xiàn)有部署工具的使用,MSMQ、Remoting或Enterprise Services都是服務(wù)邊界內(nèi)的合理選擇。如果要實(shí)現(xiàn)服務(wù)的邊界接口,這些技術(shù)就不適用了。

服務(wù)管理

SOAP規(guī)范的精妙之處在于,它允許從服務(wù)的操作要求(例如,與傳送消息相關(guān)的指令和對(duì)服務(wù)的授權(quán)訪問)中明確地分離服務(wù)的功能要求(服務(wù)將要處理的業(yè)務(wù)信息)。SOAP消息的正文滿足了功能要求;SOAP消息標(biāo)題中的元素滿足了操作要求。

就保持這種方式。如果你支持消息登錄到你的Employee實(shí)體中,你就需要?jiǎng)?chuàng)建一個(gè)可以分析Employee實(shí)體的消息登錄實(shí)現(xiàn)工具。如果你擁有這樣一個(gè)通用的消息登錄實(shí)現(xiàn)工具——它可以在SOAP標(biāo)題里定位合適的元素,而不用去管SOAP正文里包含了什么,你的工作就會(huì)方便很多。

可互操作的基礎(chǔ)結(jié)構(gòu)服務(wù)的開發(fā)和維護(hù)是一個(gè)成本很高的項(xiàng)目�;赪S-*規(guī)范創(chuàng)建值得信任的服務(wù)實(shí)現(xiàn)工具,對(duì)它們進(jìn)行測(cè)試并將測(cè)試結(jié)果與所有合作伙伴組織使用的實(shí)現(xiàn)工具相比較,將會(huì)超出大多數(shù)IT預(yù)算的范圍。系統(tǒng)供應(yīng)商可以跨越更廣闊的用戶群利用這些開發(fā)成本,并針對(duì)其他供應(yīng)商的補(bǔ)充技術(shù)測(cè)試互操作性。在創(chuàng)建這些服務(wù)(而不是從系統(tǒng)供應(yīng)商處獲得這些服務(wù))之前,各個(gè)組織應(yīng)該進(jìn)行認(rèn)真的思考。

那么,在系統(tǒng)供應(yīng)商仍然把持著WS-*規(guī)范的實(shí)現(xiàn)工具的情況下,為了滿足目前的操作要求,IT部門應(yīng)該怎樣做呢?

折衷。使用能夠最有效地滿足你的需求的現(xiàn)有技術(shù),如果本地服務(wù)技術(shù)具有可用性并得到了你的系統(tǒng)供應(yīng)商的充分支持,那么就計(jì)劃向本地服務(wù)技術(shù)進(jìn)行移植。如果你需要保證傳輸?shù)陌踩�,�?qǐng)使用HTTPS;如果你需要可靠的消息功能,請(qǐng)使用MSMQ。

某些操作要求將會(huì)簡(jiǎn)化組織的服務(wù)組合,但是并不會(huì)得到系統(tǒng)供應(yīng)商的良好支持。一部分示例可能來自于垂直行業(yè)的需求,例如,在汽車行業(yè)中需要跟蹤零部件的來源;同時(shí),其它示例可能是完全組織化的,比如主動(dòng)的跟蹤調(diào)查計(jì)劃,其目的是在雇傭和提拔員工的過程中保證平等的機(jī)會(huì)。

當(dāng)你需要設(shè)計(jì)和創(chuàng)建這些服務(wù)時(shí),請(qǐng)參照供應(yīng)商的WS-*協(xié)議實(shí)現(xiàn)工具中出現(xiàn)的模式:

•與相關(guān)的集團(tuán)進(jìn)行合作,以有效地收集需求;對(duì)于垂直行業(yè)的需求,可與貿(mào)易伙伴甚至是競(jìng)爭(zhēng)對(duì)手合作。

•為SOAP標(biāo)題定義架構(gòu),這種SOAP標(biāo)題可以附加到任何消息上,以傳送操作信息。

•考慮一組可有效地重復(fù)利用的關(guān)注點(diǎn)和因素。例如,一條包含保健信息的消息可能需要傳達(dá)多個(gè)具有相似結(jié)構(gòu)的隱私聲明。

•通過重復(fù)利用處理了真正的橫向關(guān)注點(diǎn)(比如對(duì)于物理地址的描述)的工作成果來構(gòu)成你的架構(gòu)。

•重復(fù)構(gòu)建過程;在時(shí)間和預(yù)算允許的情況下,努力構(gòu)建你的消息基礎(chǔ)結(jié)構(gòu)。

面向服務(wù)的解決方案的模式

那么,為了創(chuàng)建互聯(lián)系統(tǒng),你現(xiàn)在應(yīng)該怎樣做呢?是否應(yīng)該立即著手圍繞面向服務(wù)的模型重新設(shè)計(jì)你的整個(gè)應(yīng)用程序組合?還是應(yīng)該先觀望一下?

Microsoft自身的經(jīng)驗(yàn)通過我們的客戶和合作伙伴的經(jīng)驗(yàn)得到了加強(qiáng),它提出了一個(gè)更適當(dāng)?shù)姆椒ā,F(xiàn)在,對(duì)于許多的業(yè)務(wù)和技術(shù)模式,面向服務(wù)都提供了明確的利益。

最普遍的模式是信息集成,它在Rum Island crawl(爬)方案中得到了描述。由于技術(shù)體系結(jié)構(gòu)在過去的30年里不斷地發(fā)展,組織開始管理或獲得大量的分布式冗余數(shù)據(jù)。例如,一個(gè)客戶的完整描述信息可能會(huì)傳播到一打業(yè)務(wù)應(yīng)用程序和數(shù)據(jù)庫(kù)。這種信息很難完全同步,為了實(shí)現(xiàn)最佳的客戶(或合作伙伴或員工)交互而進(jìn)行的信息聚合也無法得到足夠的支持。信息集成服務(wù)是一種有效的方法,它可以使用這些關(guān)鍵實(shí)體的統(tǒng)一視圖來表示你的應(yīng)用程序組合,并保證你的所有后端系統(tǒng)之間的信息的一致性。Microsoft的內(nèi)部項(xiàng)目Alchemy就成功地克服了我們?cè)诠拘畔⒋鎯?chǔ)區(qū)問題上的挑戰(zhàn)。信息集成項(xiàng)目可以從戰(zhàn)術(shù)角度(比如Rum Island的例子)到廣泛的戰(zhàn)略角度(逐漸深入的信息訪問再設(shè)計(jì)和跨企業(yè)管理)運(yùn)行。

傳統(tǒng)集成模式描述了對(duì)于服務(wù)的戰(zhàn)術(shù)性使用,其目的是保留對(duì)業(yè)務(wù)應(yīng)用程序的現(xiàn)有投資,同時(shí)擴(kuò)展它們實(shí)現(xiàn)的功能。例如,為了符合新的規(guī)定,服務(wù)可能會(huì)在現(xiàn)有的ERP包前增加支持功能。應(yīng)用程序也將得到重新設(shè)計(jì),以便與服務(wù)交換消息,服務(wù)將會(huì)提取與合規(guī)性有關(guān)的數(shù)據(jù),然后向ERP包發(fā)送請(qǐng)求。

上一個(gè)例子提出了一個(gè)更廣泛的面向服務(wù)模式:流程管理。在此模式中,“標(biāo)題”元素用來傳送關(guān)鍵的業(yè)務(wù)元數(shù)據(jù)——從客戶請(qǐng)求的周轉(zhuǎn)時(shí)間到特殊業(yè)務(wù)決策批準(zhǔn)者的身份�;A(chǔ)結(jié)構(gòu)服務(wù)將會(huì)捕捉到此元數(shù)據(jù),以用于實(shí)時(shí)分析和/或聚合分析。“本地服務(wù)”流程將會(huì)把此信息包含在SOAP標(biāo)題中,非本地應(yīng)用程序則需要進(jìn)行重新設(shè)計(jì),以便將元數(shù)據(jù)作為消息傳送到管理服務(wù)器。

另一個(gè)略有不同的模式(或者可以直接稱為派生的模式)是一致的訪問——在一組不同的應(yīng)用程序需要連接關(guān)鍵的后端資源時(shí),使用服務(wù)層來保證各種操作要求得到一致的執(zhí)行。通過命令所有訪問通過一個(gè)服務(wù)接口進(jìn)行路由,組織可以執(zhí)行一致的訪問授權(quán)、成本分配和負(fù)載管理。

許多服務(wù)都提供了某種形式的資源虛擬化。這里有一些例子:

•區(qū)分上下文和區(qū)分內(nèi)容的請(qǐng)求路由,比如向指定地區(qū)的農(nóng)場(chǎng)房地產(chǎn)專業(yè)代理商發(fā)送房地產(chǎn)咨詢問題。

•到分區(qū)信息存儲(chǔ)區(qū)的請(qǐng)求路由(請(qǐng)求者無須了解分區(qū)方案)。

•跨越可用資源的負(fù)載平衡請(qǐng)求——從客戶服務(wù)代表到流視頻源。

最后,各組織都非常成功地使用這些服務(wù)實(shí)現(xiàn)了流程具體化。目前,通過使用Web服務(wù),使用者可以安全地協(xié)商工資單處理情況、員工費(fèi)用報(bào)銷和后勤支持等事宜。移動(dòng)電話服務(wù)提供商和Internet門戶使用Web服務(wù)來聚合各種內(nèi)容。需要面對(duì)客戶的組織使用Web服務(wù)來創(chuàng)建合成的報(bào)價(jià)材料,比如包含了飛機(jī)票價(jià)和租車價(jià)格的信息包。基于目前的技術(shù)堆棧,流程具體化取得成功的關(guān)鍵是對(duì)你自己的要求進(jìn)行管理——根據(jù)現(xiàn)有技術(shù)的限制,折衷處理你的要求,這樣你就無須使用你的利潤(rùn)或儲(chǔ)備資金來創(chuàng)建將會(huì)在幾年之內(nèi)更換的基礎(chǔ)結(jié)構(gòu)服務(wù)。

這些只是高級(jí)模式的幾個(gè)例子,你的組織目前可能會(huì)用到這些高級(jí)模式。你了解你自己的業(yè)務(wù);互聯(lián)系統(tǒng)怎樣才能幫助你呢?

分享:ASP.NET2.0服務(wù)器控件之捕獲回傳事件
1、實(shí)現(xiàn)捕獲回傳事件 如果服務(wù)器控件需要捕獲來自客戶端的回傳事件,并想為該回傳事件自定義服務(wù)器端事件處理邏輯,那么控件必須實(shí)現(xiàn) System.Web.UI.IPostBackEventHandler接口。下面列舉了該

來源:模板無憂//所屬分類:.Net教程/更新時(shí)間:2008-08-22
相關(guān).Net教程