0

我想要一个客户端应用程序和 Web 应用程序(或服务,没有 UI),我想从我的桌面应用程序中连接到所述 Web 服务,并有两个同时的网络流,其中一个用于上传数据和读取它们在服务器上,另一个用于向客户端应用程序发送内容。

我不是在寻找一个使用比 WCF 或其他任何东西更多的解决方案,我只是想要一种在 Web 服务器和我的客户端应用程序之间创建连接并交换纯二进制数据的方法。我会自己实现协议,我不是在寻找 WCF 提供的任何实体或封装。

我什至不知道什么项目类型是这里的最佳选择。我想过空的 ASP.NET 应用程序可能会在 FTP 上上传,但我不知道下一步应该做什么才能使应用程序可连接。我当然不是要求完整的解决方案,而是一些专注于如何在服务器和客户端之间建立简单明了的连接的文章。我希望服务器能够立即更新客户端,反之亦然,这就是为什么我正在寻找一种拥有流的方法。

编辑:我不妨说该服务旨在放置在 ASP.NET 主机上,如果有任何限制或任何东西,我不知道端口如何在这些上工作。

4

4 回答 4

1

“Web 服务”和“网络流”是不相容的概念。Web 服务(理想情况下)是无状态且断开连接的——因此无论底层网络如何工作,它们都可以工作。消息仅从客户端到服务器交换,并封装在 HTTP 请求/响应对中。因此,“网络服务”。

如果您想交换“纯二进制数据”(如您所说),那么您只需要使用套接字(或使用 .NET 的 TcpClient,它将套接字封装在更易于使用的 API 中)。ASP.NET 不适合这样做。

从技术上讲,您可以拥有一个使用在 ASP.NET 主机进程中运行的套接字的应用程序,但这可能无法正常工作,具体取决于安全性的设置方式,并且它还受 ASP.NET 进程生命周期的约束(因此它由 IIS 和可以随时关闭或回收而不会发出警告)。

于 2012-07-31T22:30:51.447 回答
0

看看 MVC4 APIController。除了方法返回 XML 或 JSON(或您喜欢的任何其他内容)之外,它的工作方式与普通 MVC 非常相似。

例如

/api/Users/Get

会返回类似的东西

{
    {"Username":"Bob", "Id":3},
    {"Username":"Steve", "Id":4}
}

您还可以使用特殊的返回类型返回文件和其他流。您甚至可以通过使用模型获得强类型、经过验证的输入。

这里有一个示例,它显示了完整的 CRUD 控制器和来自 JS 的示例 AJAX 调用,您可以在桌面应用程序中复制它们

于 2012-07-31T22:35:30.617 回答
0

您不想为此使用 ASP.NET Web 服务 (ASMX)。这是一项遗留技术,不应用于新开发。

为什么不想使用 WCF?你认为这太复杂了吗?关于 WCF 的事情是它消除了创建自己的协议的复杂性。

另外,您使用的是哪个版本的 .NET?使用 .NET 4.0 配置 WCF 变得更加容易。

于 2012-07-31T22:36:37.607 回答
0

这是使用 WCF的简单双工示例。试试看,检查你的性能是否足够,尝试使用替代绑定(如 net.tcp)。WCF 是一个非常好用的工具。一旦熟悉了它,你就会爱上它。

另请查看Learning WCF中关于 WCF 中的绑定的章节

于 2012-07-31T22:56:22.443 回答