我对WCF (或rest,或Json )相当陌生,我希望对要定义的方法有一些专家意见。
简单介绍一下webservice应该公开的内容:我正在构建domotica软件(可以控制ZWave网络的软件),它具有不同的界面( GUI应用程序、用于配置的web服务器以及用于控制网络的平板/电话)。
webservice是一个中心应用程序,它有一个可以与ZWave设备交互的控制器,它公开了一个WCF Json服务,以便客户端可以在ZWave网络上进行查询和控制。
WCF接口上的简单方法:
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, UriTemplate = "getnodes")]
public List<Node> GetNodes()
{
// ... retrieve all nodes from ZWave Controller
}
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, UriTemplate = "getnode/{id}")]
public Node GetNode(uint id)
{
// ... retrieve specific node
}我想知道的是,API在POST/PUT方法方面应该如何“特定”。客户端需要与节点进行交互,例如设置节点名称、设置节点所在的空间、打开/关闭节点、设置昏暗数量等。
我定义了一个方法如下:
[WebInvoke(Method = "PUT", RequestFormat = WebMessageFormat.Json, UriTemplate = "setnodename")]
public void SetNodeName(NodeNewName nodeNewName)
{
// .. sets the name of the node, as specified in the passed object
}但是,这确实会导致许多不同的方法和特定的类(因为我在上面为每个方法和类指定了一个简短的功能列表)。
这就是该走的路吗?还是应该有一个方法UpdateNode和一个更通用的类作为参数,它只指定需要更新的属性?或者,是否有某种指导方针可以帮助我为我的help服务定义一个可靠的设计?
我搜索了很多关于这个主题的文章,并且我读了一些关于WCF设计指南的文章,但是并没有真正涉及到这个部分。(或者我不是这个特定话题上最好的谷歌人,因为我是WCF/REST/Json/等等的新手)。
希望有人能理解我在寻找什么,并能在我的路上帮助我。
非常感谢!
发布于 2015-10-19 22:13:18
我认为你应该尽可能多地采用具体的方法。
通过在服务接口中定义什么是可能的,什么是不可能的,您可以使客户端具有编译时检查和类型安全性。(假设它们遵循接口定义!)
如果您使用自己的通用对象或语言使用更流畅的查询/更新语法,则会使客户端更容易出错,例如,我不知道,尝试“调暗水龙头”。
这将产生一个运行时错误,您将不得不将其传输回客户端,并且客户端必须对其进行解码和操作。整个过程都难多了。
https://softwareengineering.stackexchange.com/questions/300190
复制相似问题