ASP.NET中使用socket通讯的有关问题
ASP.NET中使用socket通讯的问题
现在小弟的项目中有若干台客户机通过SOCKET向服务器交互数据,客户机每隔10s钟发送一个连接请求到服务器,服务器上有网站来展示和交互这些数据,现在遇到了一些问题。
1.直接在aspx.cs中用socket监听貌似不行?因为socket要循环检测是否是自己想要的客户机,在这过程中如果客户关闭页面,是不是会导致socket连接无法正常关闭?
2.想到的另一种方案就是把socket写成服务程序独立于网站之外,网站如果有交互请求,先写入数据库,服务程序遍历数据库,然后再进行通讯,但这种方式的效率是否太低了?有无更好的方法?
以上可能有错,还望各位不吝赐教
------解决思路----------------------
可以使用wcf、https进行传送数据,你这种网页一直打开着才接受数据的方式,不妥。
------解决思路----------------------
用ASP.NET SignalR?
http://signalr.net/
What is ASP.NET SignalR
ASP.NET SignalR is a new library for ASP.NET developers that makes it incredibly simple to add real-time web functionality to your applications. What is "real-time web" functionality? It's the ability to have your server-side code push content to the connected clients as it happens, in real-time.
You may have heard of WebSockets, a new HTML5 API that enables bi-directional communication between the browser and server. SignalR will use WebSockets under the covers when it's available, and gracefully fallback to other techniques and technologies when it isn't, while your application code stays the same.
SignalR also provides a very simple, high-level API for doing server to client RPC (call JavaScript functions in your clients' browsers from server-side .NET code) in your ASP.NET application, as well as adding useful hooks for connection management, e.g. connect/disconnect events, grouping connections, authorization.
------解决思路----------------------
你既然都用上了html5的websocket 那你的浏览器就可以直接跟最顶级的gameservice(socketserver)通讯了.
你中间哪些东西有什么用?
有直达的车你不坐,非得坐一段倒一段坐一段倒一段坐一段倒一段,既浪费了钱,又浪费了时间.何苦呢?
所以有这样架构的,只是为了证明"我会设计,我会架构,我懂很多"而已.
------解决思路----------------------
在Gloax文件中写个客户端SOCKET就行了,页面调用socket发送
我刚刚做了项目
------解决思路----------------------
你提出“网站如果有交互请求”这个用例说明,实际上如果我理解为你只会编写asp.net程序,这样就能把你的纠结理解透彻了。
仅仅会asp.net程序员怎么能设计一个双向通讯服务呢?你应该让那些习惯于设计真正的windows服务的人来设计这个东西。仅仅靠会点asp.net的人,是不能设计开发服务器系统的。
现在小弟的项目中有若干台客户机通过SOCKET向服务器交互数据,客户机每隔10s钟发送一个连接请求到服务器,服务器上有网站来展示和交互这些数据,现在遇到了一些问题。
1.直接在aspx.cs中用socket监听貌似不行?因为socket要循环检测是否是自己想要的客户机,在这过程中如果客户关闭页面,是不是会导致socket连接无法正常关闭?
2.想到的另一种方案就是把socket写成服务程序独立于网站之外,网站如果有交互请求,先写入数据库,服务程序遍历数据库,然后再进行通讯,但这种方式的效率是否太低了?有无更好的方法?
以上可能有错,还望各位不吝赐教
------解决思路----------------------
可以使用wcf、https进行传送数据,你这种网页一直打开着才接受数据的方式,不妥。
------解决思路----------------------
用ASP.NET SignalR?
http://signalr.net/
What is ASP.NET SignalR
ASP.NET SignalR is a new library for ASP.NET developers that makes it incredibly simple to add real-time web functionality to your applications. What is "real-time web" functionality? It's the ability to have your server-side code push content to the connected clients as it happens, in real-time.
You may have heard of WebSockets, a new HTML5 API that enables bi-directional communication between the browser and server. SignalR will use WebSockets under the covers when it's available, and gracefully fallback to other techniques and technologies when it isn't, while your application code stays the same.
SignalR also provides a very simple, high-level API for doing server to client RPC (call JavaScript functions in your clients' browsers from server-side .NET code) in your ASP.NET application, as well as adding useful hooks for connection management, e.g. connect/disconnect events, grouping connections, authorization.
------解决思路----------------------
你既然都用上了html5的websocket 那你的浏览器就可以直接跟最顶级的gameservice(socketserver)通讯了.
你中间哪些东西有什么用?
有直达的车你不坐,非得坐一段倒一段坐一段倒一段坐一段倒一段,既浪费了钱,又浪费了时间.何苦呢?
所以有这样架构的,只是为了证明"我会设计,我会架构,我懂很多"而已.
------解决思路----------------------
在Gloax文件中写个客户端SOCKET就行了,页面调用socket发送
我刚刚做了项目
------解决思路----------------------
你提出“网站如果有交互请求”这个用例说明,实际上如果我理解为你只会编写asp.net程序,这样就能把你的纠结理解透彻了。
仅仅会asp.net程序员怎么能设计一个双向通讯服务呢?你应该让那些习惯于设计真正的windows服务的人来设计这个东西。仅仅靠会点asp.net的人,是不能设计开发服务器系统的。