如何在Web应用程序中实现TCP / IP响应器“服务”

时间:2011-11-25 16:46:42

标签: c# asp.net architecture

我正在为我正在进行的项目提供以下架构。

Architecture Drawing

我的问题是如何开始实施TCP / IP响应器部分。 如果图表难以阅读,它的功能是等待订单查看客户端的连接,然后通知客户端收到的订单。

我在想一个队列,但不幸的是我不知道这样的东西会适合VS2008的层次结构。

如果它是ASP.NET网页的一部分,我应该使用应用程序启动事件来启动TCP IP响应程序吗?

这不是一个Web服务,因为那些响应http请求......

2 个答案:

答案 0 :(得分:4)

如果我必须实现你的“TCP响应者”,我可能会将它作为一个Windows服务实现,并让ASP.NET应用程序和Winform客户端联系它(例如,以避免回收ASP.NET的问题等)

也就是说,我可以想到更多更简单的方法来获得您想要达到的效果(让winform客户了解新订单),例如

  • 如您所述使用队列。 Windows附带MSMQ(您需要在添加Windows功能时启用它)。使用C#is fairly easy中的MSMQ。您还可以use WCF if you like
  • 公开http endpoint on the client并让客户端通过调用其中一个页面通知ASP.NET服务器正在侦听的位置
  • 将订单写入数据库并从客户端/使用System.Data.SqlClient.SqlDependency进行轮询以了解何时发生更改

甚至将命令写入带有FileSystemWatcher的共享文件夹上的文件也行不通(虽然我可能不建议这样做)

答案 1 :(得分:1)

你为什么不使用http?您已经拥有了http服务器,因此您不需要任何TCP响应程序 - 只需在客户端进行http轮询即可。 如果您不想要轮询或拥有太多客户端,那么您可以使用SignalR之类的东西进行通知。