首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WCF服务设计

WCF服务设计
EN

Software Engineering用户
提问于 2015-10-18 18:44:51
回答 1查看 979关注 0票数 1

我对WCF (或rest,或Json )相当陌生,我希望对要定义的方法有一些专家意见。

简单介绍一下webservice应该公开的内容:我正在构建domotica软件(可以控制ZWave网络的软件),它具有不同的界面( GUI应用程序、用于配置的web服务器以及用于控制网络的平板/电话)。

webservice是一个中心应用程序,它有一个可以与ZWave设备交互的控制器,它公开了一个WCF Json服务,以便客户端可以在ZWave网络上进行查询和控制。

WCF接口上的简单方法:

代码语言:javascript
复制
    [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方法方面应该如何“特定”。客户端需要与节点进行交互,例如设置节点名称、设置节点所在的空间、打开/关闭节点、设置昏暗数量等。

我定义了一个方法如下:

代码语言:javascript
复制
    [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/等等的新手)。

希望有人能理解我在寻找什么,并能在我的路上帮助我。

非常感谢!

EN

回答 1

Software Engineering用户

发布于 2015-10-19 22:13:18

我认为你应该尽可能多地采用具体的方法。

通过在服务接口中定义什么是可能的,什么是不可能的,您可以使客户端具有编译时检查和类型安全性。(假设它们遵循接口定义!)

如果您使用自己的通用对象或语言使用更流畅的查询/更新语法,则会使客户端更容易出错,例如,我不知道,尝试“调暗水龙头”。

这将产生一个运行时错误,您将不得不将其传输回客户端,并且客户端必须对其进行解码和操作。整个过程都难多了。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/300190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档