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 模式
說明:只使用相同輸入參數呼叫多次並不會帶來副作用的操作,白話一點叫做快取。
元哥的筆記