文章分类 -  ESFramework

摘要:转自:http://www.cnblogs.com/scy251147/archive/2013/05/09/3069720.html完成端口说到完成端口,我想很多人都不太陌生,下面是一段摘录:“完成端口”模型是迄今为止最为复杂的一种I/O模型。然而,假若一个应用程序同时需要管理为数众多的套接字,那么采用这种模型,往往可以达到最佳的系统性能!但不幸的是,该模型只适用于Windows NT和Windows 2000操作系统。因其设计的复杂性,只有在你的应用程序需要同时管理数百乃至上千个套接字的时候,而且希望随着系统内安装的CPU数量的增多,应用程序的性能也可以线性提升,才应考虑采用“完成端口”模 阅读全文
posted @ 2013-05-10 00:13 ADTL 阅读(256) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/yyl8781697/archive/2012/12/07/csharp-socket-udp.html最后在公司实习,新人不给活干,就自己随便看看,了解一些DevExpress控件啊,编码规范啊之类的,自己就寻思着写一点点小东西练习练习出于自己对c# socket这块不熟,就选择了这块,顺便可以进一步了解委托 代理。闲话不说,先说下这次做的东西:一个局域网聊天的小软件 主要基于udp的通信,如果读者还不知道udp or tcp 那请度娘一下。。。基本思路(这也都是网上查的,还查了飞鸽传书的 基本原理,在此感谢网上的各位高手哈):1:软件开启 阅读全文
posted @ 2013-04-29 01:28 ADTL 阅读(1264) 评论(1) 推荐(1)
摘要:转自:http://www.cnblogs.com/zhuweisky/archive/2013/04/27/3045052.html在广播与P2P通道(上) -- 问题与方案一文中,我们已经找到了最优的模型,即将广播与P2P通道相结合的方案,这样能使服务器的带宽消耗降到最低,最大节省服务器的宽带支出。当然,如果从零开始实现这种方案无疑是非常艰巨的,但基于ESFramework提供的通信功能和P2P功能来做,就不再那么遥不可及了。1.P2P通道状态根据上文模型3的讨论,要实现该模型,每个客户端需要知道自己与哪些用户创建了P2P通道,服务器也要知道每个客户端已建立的P2P通道的状态。使用ESFr 阅读全文
posted @ 2013-04-27 19:31 ADTL 阅读(363) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/zengqinglei/archive/2013/04/27/3046119.html本篇文章主要实现Socket在Tcp\Udp协议下相互通讯的方式。(服务器端与客户端的通讯) 1.基于Tcp协议的Socket通讯类似于B/S架构,面向连接,但不同的是服务器端可以向客户端主动推送消息。 使用Tcp协议通讯需要具备以下几个条件: (1).建立一个套接字(Socket) (2).绑定服务器端IP地址及端口号--服务器端 (3).利用Listen()方法开启监听--服务器端 (4).利用Accept()方法尝试与客户端... 阅读全文
posted @ 2013-04-27 19:27 ADTL 阅读(544) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/tianzhiliang/archive/2010/10/28/1863684.htmlSocket服务器主要用于提供高效、稳定的数据处理、消息转发等服务,它直接决定了前台应用程序的性能。我们先从整体上认识一下Socket服务器,Socket服务器从架构上一般分为:网络层、业务逻辑层、会话层、数据访问层,如图: (图1)(一)网络层网络层主要用于侦听socket连接、创建socket、接受消息、发送消息、关闭连接。作为socket通信服务器,网络层的性能相当重要,所以我们在设计网络层时,要着重在以... 阅读全文
posted @ 2013-04-25 23:42 ADTL 阅读(214) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/HopeGi/archive/2013/04/25/3042238.html “池”这个概念好像最早是在操作系统的课上听过的,到后来出来工作的第二天组长也跟我提起“池”这个东东。它给我的感觉是某种对象的集合,如果要用的话就取出,不用的话就放回。在学多线程的时候有接触过线程池,在写《Socket 一对多通信》的时候想到了Socket连接池这回事,不过在网上谷歌了一下,发现这类的文章貌似不多,看了一下园友的博文《高性能Socket设计实现》,获益良多,下了份源码来看,虽然有一部分看不明白,而且由于个人水平跑不了那份代码,但是从中我学到了不少,至少 阅读全文
posted @ 2013-04-25 23:38 ADTL 阅读(251) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/upwifi/archive/2011/08/30/2160147.html这回我们做一下聊天功能,要实现此功能,我们要做两件事,第一,我们要先了解下聊天协议,第二,画一个能收发消息的UI界面。 ok,我们开始吧,看一下聊天协议:00000000 FF FF C9 00 03 00 00 00 11 00 00 00 04 61 61 30 ?.... .....aa0 00000010 32 00 00 00 00 00 00 00 04 61 61 30 31 00 00 00 2....... .aa01... 0... 阅读全文
posted @ 2013-04-25 09:40 ADTL 阅读(177) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/upwifi/archive/2011/08/29/2157214.html 上回我们说到心跳消息,当我们收到Server返回来的第一条心跳消息时,就可以向Server发一条,请求在线用户列表的协议,请求协议非常的简单,同心跳消息一样只有消息头,不同的是它的MessageType是112。当Server收到这条请求协议后,会回复一条MessageType同样为112的回复消息,与请求协议不同,回复协议带有Body体。下面让我们来看一条Server回复Client在线列表的byte流:00000000 FF FF 70 00 02 00 00. 阅读全文
posted @ 2013-04-25 09:39 ADTL 阅读(99) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/upwifi/archive/2011/08/28/2156781.html 上篇我们完成了登录功能,这一回我们一起看一下心跳协议。心跳协议是为了能让服务端实时感知到客户端的存在,为了实现这一目的,我们可以每隔一段时间就向服务端发送一条消息。这条件消息非常的简单,它只有消息头。只需定义它的MessageType就好了。在Rapid Demo中心跳协议的MessageType是104。 看上去我们要完成这件事好像很容易,事实上确实如此,我们只需按心跳协议构造一条这样的byte流,每隔几秒发出去就OK了。说起每隔几秒去做一件事,我知道winfo. 阅读全文
posted @ 2013-04-25 09:38 ADTL 阅读(186) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/upwifi/archive/2011/08/27/2155532.html上一回我们只是画了一个界面,虽然我们看到了用于输入昵称和密码的文本框,但我们还没有给这两个文本框做输入键盘的订制。本文接着上篇,把后续的功能完成,其内容包括根据登陆协议构造byte流,发送给Server.解析Server返回的登录结果,判断登陆是否成功,如果成功,由登录界面跳转到聊天主界面,如图: 1.为登录界面的文本框订制键盘,比如说,现在比较流行的登录多数是用信箱作为登录的用户名的,那上图的键盘中就没有@这个按键,一会我们就做一个有@的。上图的是为passwo. 阅读全文
posted @ 2013-04-25 09:36 ADTL 阅读(144) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/upwifi/archive/2011/08/26/2154750.html目标:绘制UI完成登录功能登录界面如下:1.新建项目 项目名称:RapidEngineDemo得到项目如下:2 对所得到的项目做些修改 1)删掉MainWindow.xib 2)编辑 RapidEngineDemo-Info.plist 删掉标签 <key>NSMainNibFile</key><string>MainWindow</string> 3)修改main.m #import<UIKit/UIKit.h& 阅读全文
posted @ 2013-04-25 09:35 ADTL 阅读(111) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/upwifi/archive/2011/08/25/2152692.html这里做一个iPhone和ESFramework通信的Demo,iPhone也是个客户端,是客户端就注定它要去访问服务器,从那里获取数据。而常见的数据访问方法有两种,第一种方法,将对象以json或xml这两种格式序列化成字串,通过调用WebService的基于Web服务器的通信。第二种方法是使Client和Server建立socket连接,将对象序列化后的字串或byte流,通过socket发送给对方。相对第一种方法,基于socket的通信更加高较,安全,节省流量。 以. 阅读全文
posted @ 2013-04-25 09:34 ADTL 阅读(261) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/gaoxiang/articles/403538.html前文介绍了异常关闭器的AOP实现,而权限管理也是一个AOP可以大展拳脚的地方,下面就来看看如何使用EsbAOP实现权限管理。 首先要解决的问题是如何判断用户是否拥有调用某个操作的权限,这个判断是由各个应用程序自己实现了,为了统一对权限的判断,所以我们指定了接口IPermissionVerifier: ///<summary>///IPermissionVerifier用于验证当前用户对目标类的目标方法的调用权限是否足够。///如果需要使用Aop来进行权限管理,则要实现IPe 阅读全文
posted @ 2013-04-08 22:04 ADTL 阅读(413) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/gaoxiang/articles/403429.htmlESFramework源自于我最初的EnterpriseServerBase类库,它的主要目的是简化、加速C/S应用的构建。这方面的工作主要集中在ESFramework.Network命名空间和ESFramework.Architecture命名空间。额外的,ESFramework仍然包含了原EnterpriseServerBase中的数据访问类库(ESFramework.DataAccess),用过XCodeFactory的朋友一定对这个命名空间非常熟悉,该类库的源码也随ESFram 阅读全文
posted @ 2013-04-08 21:52 ADTL 阅读(2673) 评论(1) 推荐(0)
摘要:转自:http://www.cnblogs.com/smark/archive/2012/11/08/2759871.html之前的章节里已经讲述了Beetle对不同应用协议的扩展和处理,在这章会讲解Beetle实现一个比较通用的应用协议HTTP扩展.组件对于HTTP协 议的扩展也是一件非常简单的事情,同时也能得到组件出色的性能和稳定性所支持.不过在实现之前必须对HTTP协议组成部分有个大概的了解.HTTP协议主 要由两大部分组件分别是消息头和消息体,消息头是必须的有于描述获取相关内容和附带的一些属性如:GET /images/logo.gif HTTP/1.1,通过回车换行符来标记消息头结束 阅读全文
posted @ 2013-04-07 22:34 ADTL 阅读(198) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/smark/archive/2012/03/04/2379444.html Ant是基于C#编写的自动更新程序,其主要目的是简单方便地对.net桌面应用程序进行自动更新,解决版本更新的烦恼。Ant主要分为三个部分:服务端,管理端和程序端。 服务端主要用于提供文件更新和下载用 管理端是用于把最新版本的程序更新到服务端 程序端,主要是获取服务端的文件信息把最新的文件更新到本地程序端使用前需要引用Ant.Component,在程序开始处使用检测代码?12345678910privatevoidForm1_Load(objectsender, ... 阅读全文
posted @ 2013-04-07 22:23 ADTL 阅读(667) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/smark/archive/2012/03/23/2413188.html其实在.net socket编写高性能稳定方面的资料真的比较少,一个实质性的测试数据结果对比就更少了.我们可以从http://msdn.microsoft.com/zh-cn/magazine/cc163356.aspx看到MS说net 2.0 sp1后的socket通讯能力非常强劲,可以同时挂起6W个IO(可以简单地认为可以在一秒内send+receive可以达到6W或更高),但要找这个数据的测试似乎很难.但在一篇MS关于WCF的性能测试中基于tcp部署的性能在一台4 阅读全文
posted @ 2013-04-07 22:12 ADTL 阅读(619) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/smark/archive/2012/03/26/2417350.html如果你在写一个Socket Tcp服务,想知道当前的写的服务在数据发送和接收上是不是有着好的性能,不防可以用这个工具测试一下这个工具会向服务端建立1000个连接,根据你设置的间隔和包大小向服务发送信息,服务只需把数据回发即可,延时只是一个参考,因为程序本身是异步和队列处理也会受cpu影响导致一些网络以外的延时情况TcpSocketPerformanceTest.rar (78.33 kb) 阅读全文
posted @ 2013-04-07 22:03 ADTL 阅读(149) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/smark/archive/2012/02/21/2361865.htmlbeetle是基于c#编写的高性能Socket tcp组件,它基于SocketAsyncEventArgs的实现并提供了发送队列和接收队列的支持,可以根据情况灵活地设置1-N个发送队列和接收队列。除了队列上的支持组件还提供Buffer缓冲池和基于Buffer的DataWriter,DataReader对象,从而达到消息可以灵活地分布在多个Buffer中,实现更好的内存利率.为了使处理更高效组件使用多个SocketAsyncEventArgs对数据进行处理,可以同时进行接 阅读全文
posted @ 2013-04-07 21:59 ADTL 阅读(240) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/smark/archive/2012/02/22/2362622.html之前已经讲解了Beetle简单地构建网络通讯程序,那程序紧紧是讲述了如何发送和接收数据;这一章将更深入的使用Beetle的功能,主要包括消息制定,协议分析包括消息接管处理等常用的功能。为了更好的描述所以通过创建一个聊天室程序来体现以上功能的易用性。 在实现功能之前先想好通讯上的协议需要什么功能,总结一下有:登陆,登陆成功返回,登陆和退出通过,获取现有其他用户和发送聊天信息等。需要的基础功能已经明确那就制定消息了. 通过Beetle处理消息对象必须实现IMessage.. 阅读全文
posted @ 2013-04-07 21:53 ADTL 阅读(150) 评论(0) 推荐(0)