【发布时间】:2015-04-03 17:02:01
【问题描述】:
上下文:我有几个嵌入式设备通过 RS232 连接到计算机。在这台计算机上,我将创建一个可以控制这些设备的程序,向各个设备发送命令以更改其配置或检索给定时间跨度的记录数据等。
我希望该程序中的所有功能也可用于网络上的其他计算机。为了“概念验证”,我制作了一个简单的 WCF 服务,其功能如下:
void SetTime(string comPort, DateTime time)
DateTime GetTime(string comPort)
List<string> GetSensors(string comPort)
List<LoggedValue> GetLoggedData(string comPort, string sensorName, DateTime start, DateTime stop)
void RestartDevice(string comPort)
我喜欢 WCF 的地方在于,您可以在 Visual Studio 中自动为服务创建代理类,并且可以直接使用服务中定义的自定义类,例如 LoggedValue。
但是,我看到很多关于 WCF 过于复杂且开销很大的说法,而 asp.net Web API(或 mvc Web API 2 或其他任何名称)是创建 API 的方法,它是调用简单(简单的 HTTP 请求)和低开销。虽然我同意这两点,但我觉得你失去了 WCF 中强类型类的很多优势。
另外,我发现“CRUD”-操作并不总是能很好地转化为我想做的所有事情;我永远不会做任何Create 或Delete 操作,唯一的Update 将更改配置值,例如设置记录间隔。在 API 中调用不会返回值的函数,例如 void RestartDevice(string comPort),对于 web api 来说似乎也不自然(你会怎么做?)
由于我对这两种技术都没有太多经验,因此哪个方向看起来最适合使用?这不是一个会被很多客户端访问的服务,请求率会很低。
【问题讨论】:
-
视情况而定。 WCF 仍然是要走的路,因为它为您提供了诸如合同绑定、要使用的协议等选项......其中 WebAPI 只是真正用于客户端 JSON(我认为您也可以更改可以发送的数据类型/receive 但 JSON 是主要的)HTTP 调用......这很好,并且真正针对移动世界比什么都重要。考虑到开发人员可以用它做的事情,WCF 仍然是恕我直言的方法。
标签: .net wcf architecture asp.net-web-api