2014-01-22 48 views
1

我目前正在C#中設計一個REST WVF web服務,該服務將被MVC網站使用,並且只是混淆了一點。假設我有兩種簽名方法在REST服務中使用請求/響應

public bool IsEmailAvailable(string email address) { ... } 

public DbUser GetUser(object id) { ... } 

我可以只保留上面的服務接口和實現嗎?有人向我提到有關設計它更像

public IsEmailAvailableResponse IsEmailAvailable(IsEmailAvailableRequest request) { ... } 

public GetUserResponse GetUser(GetUserRequest request) { ... } 

每種方式實施它的優點和缺點是什麼?

回答

3

這是有人是個聰明人。遠程接口非常重要,第二個版本更易於維護。您可以在不中斷更改的情況下將其他參數添加到Request | Response中。這是基於消息的風格。

至於我,即使是第二個版本也不是好的選擇。第二個版本包含太具體的方法。遠程接口應根據parametric polymorphism,所以這種API將是穩定和靈活

因此,基於REST的API應該是這樣的:

object Get(object request); 
object Post(object request); 
object Put(object request); 
object Delete(object request); 
etc.. 

不幸的是,WCF不支持通過這種接口默認情況下,但我們可以使用Message代替對象並獲得相同的結果。

看看下面的文章瞭解更多詳情:Building RESTful Message Based Web Services with WCF