最近的应用,需要自己建立一个服务,通过这个服务(client或server)去访问第三方的socket(对方支持client或server模式)。
考虑到,简单的实现是定义一个winservice,但又觉得这个service不是自己想要的(维护起来不方便),因此冒出了基于Web应用构建Socket服务的念头。
1、socket的启动:
在Application_Start时,建立静态服务对象,或实现TcpClient或实现TcpListener。
这个是已经实现了的,基本上能跑起来。
2、服务的运行问题:
a、运行过程中,可能出现各种意外,比如对方意外,己方意外,需要重新启动监听或通知对方继续监听。
b、如果Web应用基于多进程的实现
3、Web请求对服务的访问问题。
这个问题已经解决。
提一个可能要考虑的问题点
iis会定时回收连接,当你的web主体运行被回收之后,任何企图自己启动的代码,都不可执行。
还有通过web应用做socket接收的话,对应的客户端应该要实现web的协议然后再是你的socket自定协议把,有点繁琐
不一定是websocket,也可以是普通的socket,目前考虑的是普通的socket。
IIS的定时回收是个大问题,目前考虑的方案是:
设定站点始终运行的,即便IIS回收,也会自动启动。
@519740105: 题外话,iis的回收可以通过glabal里面监听closed事件,然后自己访问自己,就永远停不下来了,哈哈
你打算用iis的话,那还是要实现http协议监听请求的回复啊,之类的。
可以考虑用windows服务开发,同时,看下服务与桌面交互(已经支持了,我最近也在往这方面改写程序)
如果是介意开发nio繁琐的话,可以用第三方的,类似supersocket/dotnetty之类的