|
由于WCF采用.NET托管語言(C#和NET)作為其主要的編程語言,注定以了基于WCF的編程方式不可能很復雜。同時,WCF設計的一個目的就是提供基于非業務邏輯的通信實現,為編程人員提供一套簡單易用的應用編程接口(API)。WCF編程模式的簡單性同樣體現在異常處理上面,本篇文章的主要目的就是對WCF基于異常處理的編程模式做一個簡單的介紹。
一、當異常從服務端拋出
對于一個典型的WCF服務調用,我個人傾向于將潛在拋出的異常費為兩種類型:應用異常(Application Exception)和基礎結構(Infrastructure Exception)。前者為應用級別,主要體現為執行某個服務操作的業務邏輯拋出的異常;而后者則是業務無關的,通過WCF本身的基礎架構拋出,主要體現在對象的序列化、消息的處理、消息傳輸和消息的分發等等。在這里我們更多地關注與應用異常。
首先,我們在不做任何異常處理相關操作的情況下,看看如果在服務端執行某個服務操作的過程中拋出異常后,客戶端會得到怎樣的結果。我們通過實例的形式來演示這中場景。處于簡單和易于理解考慮,我們照例沿用計算服務的例子。
我們照例采用典型的四層結構(Contract、Service、Hosting和Client),具體的層次在VS解決方案的劃分如圖1所示:
圖1 異常拋出實例解決方案結構
下面代碼片斷表示服務契約(ICalculator)和服務類型(CalculatorService)的定義。為了簡潔,在服務契約接口中,我們僅僅定義了唯一一個用于進行兩個整數觸發預算的方法Divide。服務契約和服務類型類型分別定義在項目Contracts和Services中。
1: using System.ServiceModel;
2: namespace Artech.WcfServices.Contracts
3: {
4: [ServiceContract(Namespace = "http://www.artech.com/")]
5: public interface ICalculator
6: {
7: [OperationContract]
8: int Divide(int x, int y);
9: }
10: }
NET技術:WCF基本異常處理模式[上篇],轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。