2008-09-02 113 views
9

在編寫Web服務時,如何構建返回值?你如何處理錯誤狀況(預期的和意外的)?如果你像int那樣簡單地返回一些東西,你只需要返回它,或者將它嵌入到一個更復雜的對象中?一個服務中的所有Web方法是否返回單個類的實例,或者是否爲每個方法創建自定義的返回值類?什麼是Web方法返回值的優秀設計模式?

回答

8

我喜歡請求/響應對象模式,在這裏你將參數封裝到一個[Operation] Request類中,該類具有簡單的公共屬性。

有點像AddCustomerRequest,它會返回AddCustomerResponse。

響應可以包括有關操作成功/失敗的信息,UI可能使用的任何消息,例如可能添加的客戶的ID。

另一個好的模式是使這些都來自一個簡單的IMessage接口,其中您的一般終點是類似Process(params IMessage []消息)的東西......這種方式,你可以在同一時間傳遞多個操作網絡請求。

1

本答的+1。

此外,我建議考慮通用回覆允許多個錯誤/警告項目,以使回覆儘可能全面和可行。 (你想使用在第一個錯誤消息之後停止的編譯器,或者儘可能告訴你的編譯器嗎?)

1

如果您使用SOAP Web服務,那麼SOAP faults是返回錯誤詳細信息的標準方法,故障信息可以返回任何你喜歡的附加細節。

0

肥皂故障是呼叫應用程序是Soap客戶端的標準做法。有些情況下,例如使用XMLHTTP的COM客戶端,其中Soap被解析爲XML,並且Soap錯誤不易被處理。不能投票,但@Ben Scheirman的另一個+1。