asp.net webservice是否有类似于应用程序启动和应用程序变量的内容?
我正在开发一个webservice,它会在调用时通过tcp连接通知另一个程序。我的问题是在哪里存储打开的TCP连接。我理解Web服务的方式是,它们以每个HTTP请求开始和结束,没有用于应用程序范围变量的空间,如开放式TCP连接。asp.net webservice是否有类似于应用程序启动和应用程序变量的内容?
如果我错了,请纠正我。
具体来说,在asmx文件的哪个部分或其外部应该放置用于监听传入tcp流量的代码?
您可以将tcp连接作为服务类的静态成员,并创建一个处理实例的静态构造函数。
这将在处理Web服务的第一次访问之前创建tcp连接,然后只要宿主进程正在运行,就会持续连接。这种方法唯一的缺点是tcp连接是全过程的。如果您在同一进程中托管两个Web服务实例(很不可能),它们将共享相同的tcp连接。
为所有Web服务实例提供一个tcp连接正是我想要的。谢谢你的提示! – lowerkey 2012-01-29 16:29:19
Global.asax中的应用程序事件应为在IIS中作为应用程序托管的Web服务触发。你可以使用这些。请记住,即使在同一应用程序中访问网页而不访问Web服务,它们也会触发。
幸运的是,你错了。
广泛应用的事件做火,再加上你有访问所有asp.net容器,应用程序级的变量Application
容器,用于会话级变量Session
容器(如果该客户端支持cookie,会话ID甚至可以通过cookie传递)和Items
容器用于请求级变量。
但是,这是否有助于您存储额外的tcp侦听器(如果我理解正确的话)是另一个故事,并不明显。
您是否知道ASMX是传统技术,不应该用于新开发? – 2012-01-29 15:49:28
我不知道。我使用的是Visual Studio 2008,因为一位MS代表在一天的课堂上发布了它。 Web服务仍然相对较小,我可以使用其他什么? – lowerkey 2012-01-29 16:28:12
另外,你有参考吗? – lowerkey 2012-01-29 16:31:19