摘要:
一般在传统网页中注册用户信息都是通过post或ajax提交到页面处理,到了HTML5后我们有另一种方法就是通过websocket进行数据交互.websocket在数据交互有着传统网页所不具备的灵活性,通过Websocket建立长连接后服务器可以直接向client发送数据,而每次数据交互没有必要带上大量的http头信息.websocket协议本身支持两种数据格式文本和流,通过文本json的方式和javascript交互是一件非常简单事情,通过json网页和Websocket通讯就非常便利,但要达到这个便利性我们还是要做简单的一些包装还好现有的json在各平台的组件都比较成熟.通过分析json数据 阅读全文
摘要:
其实我一直想不明白HTML5包装个应用层办议作为Socket通过基础目的是为了什么,其实直接支持Socket tcp相对来说更加简单灵活.既然标准已经制定而浏览器也支持那对于我们开发者来说只能用的分.最新版本的WebSocket协议于2011-12其标准规范已经明确下来,所以现在可以根据这标准进行相应的开发.详细参考http://datatracker.ietf.org/doc/rfc6455/?include_text=1WebSocket协议主要分为两部分,第一部分是连接许可验证和验证后的数据交互.连接许可验证比较简单,由Client发送一个类似于HTTP的请求,服务端获取请求后根据请求的 阅读全文
摘要:
WebSocket是HTML5里提供的一种便于TCP长连接通讯的协议机制,随着HTML5的普及这种技术的使用会变得越来越广泛,由于Beetle可以灵活地扩展不同的协议,那自然而然对WebSocket支持也是一件非常简单的事情.对于WebSocket的协议分析处理就不详细描述可以参考下载程序有完整协议包代码,如果想更详细了解Websocket的协议可以到这里:http://datatracker.ietf.org/doc/rfc6455/?include_text=1下面讲述如何使用Beetle非常方便地实现一个基于WebSocket的Hello wold程序.服务端代码 class Pr... 阅读全文
摘要:
在有些场中存在着大量的消息广播转发,为了了解.net socket tcp在这方面的性能表现,所以做了一个比较极端信息广播转发强度测试.测试场景是以400个连接信息相互广播为测试用例就是当其中一个连接发送消息到服务端就会转发到其他连接上,测试情况分别是每个连接每秒广播2,5和10次,其服务器每秒的信息转发量分别320000,800000和1600000.测试的硬件分别是一台win2008服务器,1台WIN2003和两个vm win2003.测试交互的消息如下:class Po : IMessage { public int ID; public short X... 阅读全文
摘要:
当一个aspx页面请求处理包括大量的IO工作,而这些IO资源又非常有限的情况下,那这个页面在对面大量请求的时候就有可能导致大量线程等待处理,从而使应用程序线程开销过多影响整体的处理效能.在这种情况我们更希望通过一个队列的机制控制处理线程的开销来实现更高效的处理效能.因此.net提供IHttpAsyncHandler来解决这些事情,但有个问题就是实现一个IHttpAsyncHandler意味着要自己要实现自己的处理过程,并不能对已经实现功能的.aspx进行控制.但通过反编译.net代码来看可以实现一个IHttpAsyncHandler接管现有的.aspx页面实现异步处理,又不需要修改现有页面实现 阅读全文
摘要:
有此时候我们需要大概计算一些过程在1秒中处理的数量,.net虽然提供了一些计时方法如Stopwatch计算代码运行所损耗的时间,但并没有提供每秒执行的计数.为了方便解决这种需要因此实现了一个简单秒计数器来完成这些功能,也顺便分享这样一个小小的类.使用秒计数器假设我们现在有两个线程处理方法,而方法里是不停地去处理一些东西,我们需要计算每个方法每秒处理的数量是多少可以这样做. mCounter = new SecondCounter(); mTest1 = mCounter.Add("Test1"); mTest2 = mCounter.Add("Test2" 阅读全文
摘要:
之前的章节里已经讲述了Beetle对不同应用协议的扩展和处理,在这章会讲解Beetle实现一个比较通用的应用协议HTTP扩展.组件对于HTTP协 议的扩展也是一件非常简单的事情,同时也能得到组件出色的性能和稳定性所支持.不过在实现之前必须对HTTP协议组成部分有个大概的了解.HTTP协议主 要由两大部分组件分别是消息头和消息体,消息头是必须的有于描述获取相关内容和附带的一些属性如:GET /images/logo.gif HTTP/1.1,通过回车换行符来标记消息头结束.对于消息休则是可选的如果存在消息体必须在消息头里标识Content-Length.对于HTTP 更详细的内容可以查看http 阅读全文
摘要:
阅读全文
摘要:
在上一编 文章里分享了自定义实现一个高效的String Split方法,接下来同样分享一下String相关操作的函数Replace.通过反编译查看String的Replace方法是内置实现无法查看具体 实现源码,因此无法推断出String的Replace方法实现如何;不过出于好奇自己手动去实现一个对应的Replace函数,从测试情况来看其效率相对来说比String的Replace方法要好些.测试描述为了让测试更全面所以进行不同内容替换和处理的不同次数添加到测试中.测试用的String数据Cache-Control:public, max-age=0Content-Encoding:gzipCo 阅读全文
摘要:
最近在制定一个网络文件交互的协议,协议制订上采用了HTTP协议的方式,因此需对协议数据进行一个分割处理;虽然使用String的Split方法可以达到目的,但通过反编译查看其代码后发现实现相对复杂,性能上也不怎样;于是自己实现一个简单的字符分割处理类,在实现后和String的Sqlit方法进行了一个简单的对比,发现性能要比Sqlit高所以分享出来.测试情况分割处理的内容 Cache-Control:public, max-age=0Content-Encoding:gzipContent-Length:9480Content-Type:text/html; charset=utf-8Da... 阅读全文