2010-04-08 55 views
1

這個問題是關於「信息性消息」,並讓它們以一致的方式從「後端」流向「前端」。簡單的問題是「你怎麼做」?WCF涉及返回的信息性消息

背景:使用WCF調用後端服務

Web應用程序。

在後臺服務中可能會發生「消息」。現在,這個「消息」的原因可能是多種原因,但是對於這個討論,讓我們假定查看了一段數據,並且確定調用者應該得到關於它的一些信息。

此「信息」消息可能會在保存期間發生,也可能在檢索信息期間發生。同樣,這裏的信息並不重要,但是在一些不同的情況下有一些信息性的信息要回饋。

從團隊的角度來看,我們都希望始終以標準方式返回這些「消息」。現在,過去這種「標準方式」已經由不同的人以不同的方式完成了。

這裏有一些可能性:

1)每個操作都在一個包含這些消息

2)每個方法返回這些消息......但是,歸根結底是「裁判」的參數,這只是一種作品的「保存」方法,因爲人們會認爲「檢索」方法應該返回實際數據而不是郵件

3)某些方法使用調用上下文以免「污染」所有消息簽名;不過,在圖片中使用WCF會讓事情變得複雜。也就是說,回到郵件頭上?

問: 回到我的問題,然後...怎麼別人返回「消息」,比如什麼如上所述回通過一個應用程序的層次,在WCF並返回給調用者?

回答

0

我想你基本上有這樣兩個正確方法:

  1. 一個InfoMessage : string字段添加到您的所有DataContracts,能容納的信息消息(或沒有)回從服務器

  2. 如果您不想將其添加到DataContracts中,請在消息返回給客戶端之前創建一個在服務器上填充的標頭,並且在客戶端上,可以檢查該標頭並在存在的情況下檢索該標頭

爲了自動將標題添加到WCF消息中,通常使用MessageInspectors的機制 - 可以通過操作契約上的屬性配置或添加的小塊代碼,該標記將添加標題結束,然後檢查該報頭的傳入消息(並在另一端提取它,如果存在)。

有一些相當不錯的博客文章在那裏的向您展示如何創建一個消息檢查:

這些大多走從客戶端到服務器,例如客戶端會沿着一個標題發送一些包含該服務的「元信息」 - 但它也可以很好地工作。

退房相關的兩個接口來實現: