2014-01-22 20 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