當前位置:編程學習大全網 - 編程語言 - 程序員幹活:什麽是REST架構和K&T決策

程序員幹活:什麽是REST架構和K&T決策

壹、REST是什麽

REST是英文Representational State Transfer的縮寫,中文翻譯為“表述性狀態轉移”,他是由Roy Thomas Fielding博士在他的論文 《Architectural Styles and the Design of Network-based Software Architectures》中提出的壹個術語。REST本身只是為分布式超媒體系統設計的壹種架構風格,而不是標準。?基於Web的架構,實際上就是各種規範的集合,這些規範***同組成了Web架構。比如Http協議,比如客戶端服務器模式,這些都是規範。每當我們在原有規 範的基礎上增加新的規範,就會形成新的架構。而REST正是這樣壹種架構,他結合了壹系列的規範,而形成了壹種新的基於Web的架構風格。?傳統的Web應用大都是B/S架構,它包括了如下壹些規範 :

客戶-服務器?這種規範的提出,改善了用戶接口跨多個平臺的可移植性,並且通過簡化服務器組件,改善了系統的可伸縮性。最為關鍵的是通過分離用戶接口和數據存儲這兩個關註點,使得不同用戶終端享受相同數據成為了可能。

無狀態性?無 狀態性是在客戶-服務器約束的基礎上添加的又壹層規範。他要求通信必須在本質上是無狀態的,即從客戶到服務器的每個request都必須包含理解該 request所必須的所有信息。這個規範改善了系統的可見性(無狀態性使得客戶端和服務器端不必保存對方的詳細信息,服務器只需要處理當前 request,而不必了解所有的request歷史),可靠性(無狀態性減少了服務器從局部錯誤中恢復的任務量),可伸縮性(無狀態性使得服務器端可以 很容易的釋放資源,因為服務器端不必在多個request中保存狀態)

同時,這種規範的缺點也是顯而易見得,由於不能將狀態數據保存在服務器上的***享上 下文中,因此增加了在壹系列request中發送重復數據的開銷,嚴重的降低了效率。

緩存?為 了改善無狀態性帶來的網絡的低效性,我們填加了緩存約束。緩存約束允許隱式或顯式地標記壹個response中的數據,這樣就賦予了客戶端緩存 response數據的功能,這樣就可以為以後的request***用緩存的數據,部分或全部的消除壹部分交互,增加了網絡的效率。但是用於客戶端緩存了信 息,也就同時增加了客戶端與服務器數據不壹致的可能,從而降低了可靠性。

B/S架構的優點是其部署非常方便,但在用戶體驗方面卻不是很理想。為了改善這種情況,我們引入了REST。?REST在原有的架構上增加了三個新規範:統壹接口,分層系統和按需代碼。?統壹接口REST 架構風格的核心特征就是強調組件之間有壹個統壹的接口,這表現在REST世界裏,網絡上所有的事物都被抽象為資源,而REST就是通過通用的鏈接器接口對 資源進行操作。這樣設計的好處是保證系統提供的服務都是解耦的,極大的簡化了系統,從而改善了系統的交互性和可重用性。並且REST針對Web的常見情況 做了優化,使得REST接口被設計為可以高效的轉移大粒度的超媒體數據,這也就導致了REST接口對其它的架構並不是最優的。

分層系統?分層系統規則的加入提高了各種層次之間的獨立性,為整個系統的復雜性設置了邊界,通過封裝遺留的服務,使新的服務器免受遺留客戶端的影響,這也就提高了系統的可伸縮性。

按需代碼?REST允許對客戶端功能進行擴展。比如,通過下載並執行applet或腳本形式的代碼,來擴展客戶端功能。但這在改善系統可擴展性的同時,也降低了可見性。所以它只是REST的壹個可選的約束。?使用REST架構對於開發人員來 說,關心的是如何使用REST架構,這裏我們來簡單談談這個問題。REST不僅僅是壹種嶄新的架構,它帶來的更是壹種全新的Web開發過程中的思維方式: 通過URL來設計系統結構。

在REST中,所有的URL都對應著資源,只要URL的設計是良好的,那麽其呈現的系統結構也就是良好的。這點和TDD (Test Driven Development)很相似,他是通過測試用例來設計系統的接口,每壹個測試用例都表示壹系列用戶的需求。開發人員不需要壹開始就編寫功能,而只需要 把需要實現的功能通過測試用例的形式表現出來即可。這個和REST中通過URL設計系統結構的方式類似,我們只需要根據需求設計出合理地URL,這些 URL不壹定非要鏈接到指定的頁面或者完成壹些行為,只要它們能夠直觀的表現出系統的用戶接口。

根據這些URL,我們就可以方便的設計系統結構。從 REST架構的概念上來看,所有能夠被抽象成資源的東西都可以被指定為壹個URL,而開發人員所需要做的工作就是如何能把用戶需求抽象為資源,以及如何抽 象的精確。因為對資源抽象的越為精確,對REST的應用來說就越好。這個和傳統MVC開發模式中基於Action的思想差別就非常大。設計良好的URL, 不但對於開發人員來說可以更明確的認識系統結構,對使用者來說也方便記憶和識別資源,因為URL足夠簡單和有意義。按照以往的設計模式,很多URL後面都 是壹堆參數,對於使用者來說也是很不方便的。?既然REST這 麽好用,那麽是不是所有的Web應用都能采取此種架構呢?答案是否定的。我們知道,直到現在為止,MVC(Model-View-Controller) 模式依然是Web開發最普遍的模式,絕大多數的公司和開發人員都采取此種架構來開發Web應用,並且其思維方式也停留於此。

MVC模式由數據,視圖和控制 器構成,通過事件(Event)觸發Controller來改變Model和View。加上Webwork,Struts等開源框架的加入,MVC開發模 式已經相當成熟,其思想根本就是基於Action來驅動。從開發人員角度上來說,貿然接受壹個新的架構會帶來風險,其中的不確定因素太多。並且REST新的思維方式是把所有用戶需求抽象為資源,這在實際開發中是比較難做到的,因為並不是所有的用戶需求都能被抽象為資源,這樣也就是說不是整個系統的結構都能 通過REST的來表現。

所以在開發中,我們需要根據以上2點來在REST和MVC中做出選擇。我們認為比較好的辦法是混用REST和MVC,因為這適合絕 大多數的Web應用開發,開發人員只需要對比較容易能夠抽象為資源的用戶需求采取REST的開發模式,而對其它需求采取MVC開發即可。這裏需要提到的就是ROR(Ruby on Rails)框架,這是壹個基於Ruby語言的越來越流行的Web開發框架,它極大的提高了Web開發的速度。更為重要的是,ROR(從1.2版本起)框 架是第壹個引入REST做為核心思想的Web開發框架,它提供了對REST最好的支持,也是當今最成功的應用REST的Web開發框架。實際上,ROR的 REST實現就是REST和MVC混用,開發人員采用ROR框架,可以更快更好的構建Web應用。?對開發人員來說,REST不僅僅在Web開發上貢獻了自己的力量,同時也讓我們學到了如何把軟件工程原則系統地應用於對壹個真實軟件的設計和評估上。

二、什麽是K&T決策

KT決策法是最負盛名的決策模型,由美國蘭德公司的凱普納(Kepner)和特雷高(Benjamin B.Tregoe)二人合創研究發明。KT是凱普納和特雷高兩個英文文字的字頭。

發明此模型的蘭德公司,是美國最重要的以軍事為主的綜合性戰略研究機構,可以說是當今美國乃至世界最負盛名的決策咨詢機構。蘭德公司在1970年創辦了蘭德研究學院,它是當今世界決策分析的最高學府,以培養高級決策者為宗旨,並頒發了全球第壹個決策分析博士學位。蘭德公司學員已遍布美國政界、商界。

KT法是壹種思考系統,它把發現問題分為界定問題和分析原因兩步。KT決策法已經被翻譯成17種語言,並被全世界許多國家成千上萬企業員工和經理人們所使用。

二、K&T決策什麽時候用

很簡單,做決策的時候使用。KT法能幫助提供沒有偏見的決策分析。KT決策法的使用者可以根據清晰明確的目標對各選擇方案進行註意評估,從而優化最終決策結果。作為壹項結構化的決策方法,它對決策相關各要素壹壹進行識辨和排序;作為壹項管理工具,KT決策法的價值在於:它能夠有效限制誤導決策的各項故意的或無意的偏見;作為壹項通用的決策方法,它可以廣泛應用於各個領域,如市場、選址等等。

三、K&T決策的基本結構

K&T決策法基本結構有問題分析、狀況評估、決策分析、潛在問題分析四項。這四項可以是壹個循環,也可以獨立存在。

1、問題分析:

目的在於找出問題的真正原因。問題的產生,通常來自基本條件水平的改變。進行問題分析可以參照以下5個步驟:

1)敘述偏離情況

這個敘述要能清除指出,預探討的某壹方面失常的情形,要把問題說的更精確壹些,因為所有的後來工作,都是根據它來解決問題方向的 。

2)指明問題描述

這是問題的規格,必須清楚描述出 事、時、地、物四個層面。

i>確認

什麽事情?或是什麽人?

ii>地點

在什麽地方觀察到?

iii>時間

什麽時候發生?

iv>廣度

發生的程度範圍有多廣?多嚴重?

3)找出可能原因

從四個問題中找出“有何不同”,比較“已發生”和“未發生”狀況,找出數量和品質的不同處,特別是已發生的部分,繼而推導出壹切合理的可能原因。註意這壹步只是找出可能的合理的原因,並不是選擇問題的真正原因。

4)檢驗可能原因

對每壹個不同處的變化,都要問:“如果它是真正原因,如何解釋問題的每壹個層面呢?”

5)證明真正原因

壹旦妳找出壹個最有可能的原因,就必須繼續追究幾個問題,或是做壹個正反變化的實驗說明,最好在實際工作環境內進行,證明這項可能的原因確實產生了所觀察的結果,同時也能證明解決問題的方法,自然也能提供改正的行動。

如果證明是失敗的,有可能是妳收集到的資料不全;或者堆關鍵性的不同,認識不夠;或者在實驗步驟中,被假設問題歪曲了判斷。

2、狀況評估

目的在於排列出處理的優先順序。是在分析的過程中,必須找出相關事項,分割成可以管理的部分,進而設定優先順序,有效管理許多同時進行的活動。狀況評估的四個步驟:

1)找出有關事項

要對妳的工作環境加以調查,找出所有需要采取行動的事項,包括列出目前偏離的情況、威脅和機會、進度和目標的比較、預測未來是否是意料之外的事、尋找改善方法等。在思考討論過程裏,要不斷用問題來搜尋,例如,什麽地方沒有達到標準?哪些是目前必須做的?哪些在決策後必須實行的?

2)分解相關事項

就是將有關事項分解為可以管理的部分,定義更清楚的相關事項,並列出必須解決的額外有關事項。

3)設定優先順序

經過分解後的相關事項可能很多,必須排列出優先順序。次序排列可以采用使用且有系統的設定方法,包括了解這壹事項對生產力、人員、資源的影響有多嚴重?

3、決策分析

目的在於如何解決問題。決策分析的運作技巧:

1)決策名稱聲明

決策的聲明,就是決策的名稱,作為以後要做的壹切事情的焦點,並選擇制定範圍,指出某種行動以及想要的結果或目的。

2)建立決策目標

它包括兩個範疇:必要目標和需要目標。必要目標決定誰上場踢球,需要目標決定誰贏球。

3)目標分類權衡

按重要性依次打分。

4)導出選擇方案

得分高的方案將被確定為嘗試性選擇。

需要考慮嘗試性選擇方案的風險。如果風險過高,則放棄,考慮下壹個得分高的備選方案。

4、潛在問題分析

目的在於找出後遺癥,有以下5個分析步驟:

1)行動方案說明

找出計劃,方案的弱點,按時間順序逐項觀察,並將計劃的每壹步制定出來。當計劃定下來後,可能會發生問題的地方或是弱點就會暴露出來。例如室外活動,天氣、混亂、設備等。

2)預料問題次序

接著,從這些弱點中找出對作業可能產生相當大的影響,而且現在就應該采取行動應付的“特定潛在問題”。要找出特定的潛在問題,必須明確指出個別事情的時間、地點、程度等情況,對於可能出差錯的事情。可以根據事情的發生幾率和嚴重性,設定先後次序。

3)預料可能原因

在特定潛在問題中,分析可能原因,並評估發生幾率高低。比如遊客多,設備少,可能造成堵塞和混亂的幾率。

4)選擇預防行動

5)提供進展資料

進展要有跟蹤。

四、K&T決策如何使用

1、明確課題

2、分析原因

3、制定方案

4、潛在問題分析

5、做出決策並執行

五、實例分析

讓我們來看壹個例子:某公司搬遷的KT決策分析

某公司為擴大營業並節省房租,將於半年後,從市區搬至郊區。消息公布壹周,即發生嚴重情況,有30%的員工提出辭呈。該如何利用KT決策法來解決這壹問題呢?

1、分析問題

分析問題的目的在於找出問題的真正原因。通常地說,有三種情況需要掌握原因:

出現問題時;想采取對策時;為防止未來出現風險時。

此公司搬遷的案例,顯然屬於第壹種情況。針對此次狀況,分析問題產生的原因有以下幾種:

①交通不便②家人反對(與交通不便有關)③借機離職④自擡身價(經了解並無此事)⑤異議騷動(因負面謠言所致)⑥相關謠言

2、評估狀況

評估狀況的目的在於排列出處理的優先順序。分析的過程中,必須找出相關事項,分割成可以管理的部分,進而設定優先順序,有效管理許多同時進行的活動。

在此公司的搬遷中,評估狀況如下:

①相關謠言可能引起擴大效應,應列為最優先處理項目。②交通不便需求明確,立即處理③借機離職根據了解評估,並不多。

3、制定方案

制定方案的目的在於解決問題。方案是解決課題的途徑,好的方案應當帶來好的效果。為了探求好的方案,必須在決策分析中體現創新精神,並盡可能窮盡可行的方案。制定方案中包括的工作有:

①設定目的:明確為什麽選擇方案。②設定目標:目標是目的要達到的具體水平和完成標準。③創造方案:根據目的、目標要求創造方案,並經常地返回目標去考慮。④比較選擇:按照目標,比較各備選方案,從中選擇最佳方案。⑤預防風險:具體預測所選方案的風險並改善方案,當不能防止重大風險時,應重新創造方案。

針對此公司情況,制定如下方案:

①相關謠言立即召開說明會,澄清謠言;在會中描繪公司未來遠景。②交通不便設立交通車;提供交通津貼。③借機離職留才/個案輔導面談;流才/人力需求重新評估。

4、分析潛在問題

分析潛在問題的目的在於找出後遺癥。這是壹種能改變和改善未來的思考方式,也是壹種保護性的方法,能確定未來跟想要塑造的壹樣美好。很多問題的解決可能帶來相關問題的產生,企業決策中的大多數問題之間是有相關關系的,好的決策不僅要解決目前的問題,還要考慮潛在的問題。

分析此公司的潛在問題如下:

①相關謠言較無後遺癥②交通不便增加公司成本,且有交通事故風險及補助區域認定問題。③借機離職留才/可能會增加支出;流才/必須重新招聘訓練新人。

5、執行並跟蹤進展

  • 上一篇:熊貓病毒真可惡!能查出來是誰制作的?
  • 下一篇:SW指揮全攻略
  • copyright 2024編程學習大全網