我负责为类似打印机的设备开发软件,我正在使用C#/。Net和WPF。我们现在有必要使这个软件具有网络功能,以便可以通过本地网络远程控制设备。
我目前的想法是实现某种通过网络调用我们软件的API函数的方法。这可以通过客户端DLL来完成,该DLL发送API的命令并接收它们的响应以及设备软件发布的任何事件。
到目前为止,我只使用TCP / IP进行基于套接字的通信,其中我通过网络明确发送字符串并在另一端接收它们。我是完全同步完成的。但是对于新的实现,我将需要异步调用API来查询状态,发出事件等等。看起来使用基于套接字的通信需要付出相当大的努力(我错了吗?)。我将不得不避免过多的自定义实现,因为我受到实施的时间限制。
在我的搜索中,我发现在ASP.Net中使用SOAP的可能性,从这个CodeProject post开始,似乎是我正在寻找的,并且似乎并不太复杂,无法实现。但是在我的Visual Studio 2015安装中,我无法找到他们在那里使用的项目类型,这是一个“ASP.Net Web服务”。
我现在的问题是:
鉴于我选择的技术(.Net),这是否是实现最有效的方式,我的想法是什么?是否仍可以在Visual Studio 2015中执行此操作?
更新
一如既往,我发现其中一个问题:以下是如何在Visual Studio 2015中创建“ASP.Net Web服务”的说明,我已经测试过它。问题是,这是否是我需要的最佳方式。
答案 0 :(得分:0)
我认为使用web api会有更好的运气。调用基于REST的api对网络来说负载较轻,通常更容易设置。从非基于Microsoft的客户端调用也更容易,并且通常需要较少的编码才能开始。
Here是一个使用.Net Core创建RESTful web api的好教程。如果您有PluralSight订阅,他们会在Web Api上有许多教程。如果您没有订阅,那么这笔钱是值得的。
Web Api和WCF是两个完全不同的框架。 WCF使用基于XML的SOAP,这意味着发送信息所需的字节数远远大于Web Api中的RESTful服务。编写和部署Web Api应用程序和客户端比在WCF中编写等效文件更容易 。