關於Messaging Pattern

Enterprise Architecture

Messaging Patten在分散式應用程式當中一群相關關聯的設計,常被稱為Messaging。

用途:專門統一的形式解決眾多彼此分離系統中共享資料的問題。

以下介紹幾種常用的模式

Document Message 模式

說明:是專門採用統一、靈活的方法服務通訊。

主要是不使用RPC風格參數化方法來暴露API,而是採用物件的方式。

以下的程式碼

Customer[] RetrieveCustomers(string country);
Customer[] RetrieveCustomers(string country,string postalCode);
Customer[] RetrieveCustomers(string country,string postalCode,string street);

上面的方法使用三種不同方式來取用客戶資料、國家、國家代碼,資訊。這種方法變成難以維護,也不利於API上去呼叫它們。

Document Message 模式是專門將訊息封裝到文件檔案中形成一個更簡單服務簽名,簡化通訊,以下就可以看出所以然。

Customer[] FindBy(CustomerSearchRequest request);

public class CustomerSearchReqeust
{
    public string Country { get; set; }
    public string PostalCode { get; set; }
    public string Street { get; set; }
}

Request-Reponse模式

說明:確保回應跟請求一樣使用Document Message模式

透過下面範例

CustomerSearchResponse RetrieveCustomers(CustomerSearchReqeust request);

Reservation模式

說明:在某些情境碰上一次複雜的流程(為了完成某個流程,需要發送多條訊息)期間有必要維持長流程。

例子:酒店房間預訂、航班座位預訂、會議室排程以上很常用在這個模式中。

用途:為了第一個請求而指派一個預訂號碼,在一定時間內之後超時,這樣它就不會無限制持有資源。

Idempotent 模式

說明:只使用相同輸入參數呼叫多次並不會帶來副作用的操作,白話一點叫做快取。

元哥的筆記