【发布时间】:2017-07-27 21:52:38
【问题描述】:
我需要在 ASP.net Web 应用程序中进行一些 TCP 通信。
我已经构建了我的代码的工作原型,它使用 winforms 与服务器通信。我现在将在我的网络应用程序中实现此代码,但我不确定最好的方法是什么。
这个问题专门针对与 ASP 页面生命周期相关的线程生命周期。
我正在考虑启动一个执行 TCP 连接并监听来自 TCP 服务器的事件的线程。
如果我确实从我的 ASP.net Web 应用程序中生成了一个线程,那么这个线程的生命周期是什么?当重新创建页面生命周期和回发、刷新等时,它会继续“孤立”运行吗?或者当在回发/刷新时重新创建生命周期时,页面会以某种方式清理它吗?
我希望运行我的线程,直到我想手动停止它。
我正在尝试不同的选项,但我想获得一些关于实现最终结果的“正确”方法的想法。
(附注:我的线程将使用来自 TCP 服务器的相关数据更新应用程序变量)。要在此 Web 应用的多个页面中使用的数据。
我的其他想法是运行一个独立的桌面应用程序/服务来收集数据并将其合并到 IIS 应用程序池会话中。 (但这是我最后的手段)
【问题讨论】:
-
您最好将其托管在 Windows 服务中而不是在 Asp.Net 中,这样您就不必担心 appdomain 会定期卸载。你最后的手段实际上应该是你的第一个手段。
-
在 IIS 中运行的网站不适合这样做。创建一个连接到 TCP 主机并在本地保存更新(某种数据库?)的服务,然后让网站查询。
-
谢谢大家。我知道我最后的手段应该是我的第一个(在一个完美的世界里)。然而,我想做的是压缩我的应用程序足迹。在某个时候,我想将此应用程序作为产品提供,并且我不希望需要处理不同的组件。特别是在可能托管的环境中。如果事实证明这是一个问题,我将恢复为单独的服务。谢谢。
标签: c# asp.net .net multithreading tcp