CCR 簡介
Concurrency and Coordination Runtime (CCR) 是 Managed 程式碼庫,屬於動態
連結程式庫 (DLL),可以從任何以 .NET Common Language Runtime (CLR) 為目標的語言
存取。
CCR 可以滿足服務導向應用程式的需求,管理非同步作業、應付並行處理、利用平行
硬體,並處理部分失敗。它讓使用者能夠設定應用程式,以便讓軟體模組或元件鬆散結
合,也就是說,模組和元件可以獨立開發,然後建立有關其執行階段環境及其他元件的
最低假設。這種手法改變使用者思考程式的方式,從開始設計程序到應付並行處理、失
敗和隔離,都以一致的方式進行。
問題領域
‧ 非同步 - 在鬆散結合的軟體元件之間進行通訊時,例如程式跨整個網路執行,
‧
‧ 或使用者介面 (UI) 程式碼與使用者輸入和檔案 I/O 子系統之間通訊,非同步作業可
以讓程式碼縮放更好、更有回應,而且能跨多項作業應付失敗。但是,
‧
‧ 非同步程式設計在相當程度上減低了使用者程式碼的可讀性,因為邏輯經常在回呼與
引發作業的程式碼之間分割開來。此外,跨多項未完成的作業正確處理
‧
‧ 失敗,幾乎是不可能的任務。
‧ 並行處理 - 需要更妥善利用多項執行資源的程式碼,必須分割成獨立的邏輯區
‧
‧ 段,以便平行執行,並在必要時進行通訊,以便從組合的執行產生結果。邏輯
‧
‧ 區段經常是由執行緒 OS 基本項目擷取,這是長時間執行的反覆運算。由於執行緒效
能影響執行緒啟動,執行緒會長期處於作用中。因而不得不採取特定模
‧
‧ 式。程式碼是建構為長序列,使用封鎖或同步呼叫,一次只處理一件事。此外,
‧
‧ 執行緒認定之間的主要通訊是共用的記憶體,迫使程式設計人員使用非常明確
‧
‧ 而容易出錯的方法,同步處理該共用記憶體的存取。
‧ 協調與失敗處理 - 元件之間的協調是大型軟體程式最複雜的部分。互動模式不相符,
例如物件上的呼叫方法與使用 OS 信號基本變數與使用佇列加上信號,會導致程式碼無法
讀取,在其中執行階段會因協調作法不同而大幅改變行為表現。更重要的是,錯誤處理手
法都沒有完善定義,而且一樣也是差異極大。
應用程式模型
CCR 很適合用於將元件分割成片段而只透過訊息互動的應用程式模型。這種模型中的元件
需要有方法在訊息之間進行協調、應付複雜的失敗情況,並有效處理非同步程式設計。這
種應用程式模型也很類似異質性硬體整合的方式,以及網路應用程式建置的方式。大部分
軟體程式都有相同的需求,從傳統用戶端 PC 程式到伺服器應用程式,到在網頁瀏覽器執
行的小程式都一樣。軟體需要協調使用者輸入、儲存輸入/輸出和 UI 呈現。雖然以多層
大部分是同步處理應用程式程式碼介面來掩藏,非同步是無可避免的,因為裝置是以不同
的速度運作,可用的資源有極大差異,而我們一般都知道如何使用佇列來進行隔離。
以下各節簡介 CCR 程式設計模型及其實作,以有效、穩定而可擴充的方式,解決上述各
方面問題。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.204.124.170
※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1472475616.A.BED.html
噓
08/29 21:00, , 1F
08/29 21:00, 1F
→
08/29 21:00, , 2F
08/29 21:00, 2F
噓
08/29 21:01, , 3F
08/29 21:01, 3F
推
08/29 21:01, , 4F
08/29 21:01, 4F
噓
08/29 21:01, , 5F
08/29 21:01, 5F
噓
08/29 21:01, , 6F
08/29 21:01, 6F
噓
08/29 21:01, , 7F
08/29 21:01, 7F
→
08/29 21:01, , 8F
08/29 21:01, 8F
噓
08/29 21:01, , 9F
08/29 21:01, 9F
噓
08/29 21:01, , 10F
08/29 21:01, 10F
→
08/29 21:02, , 11F
08/29 21:02, 11F
→
08/29 21:02, , 12F
08/29 21:02, 12F
噓
08/29 21:05, , 13F
08/29 21:05, 13F
噓
08/29 21:08, , 14F
08/29 21:08, 14F
→
08/29 21:22, , 15F
08/29 21:22, 15F
推
08/29 21:29, , 16F
08/29 21:29, 16F
→
08/29 21:35, , 17F
08/29 21:35, 17F
噓
08/29 21:46, , 18F
08/29 21:46, 18F