E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
ESFramework
ESFramework
介绍之(20)―― 插件自动升级
当我们的服务平台搭建成功后,所需要做的主要事情就是开发服务端功能插件(IFunAddin)和客户端插件(IPassiveAddin),每个插件对(AddinPair)实现了一组相似或相近的需求/功能。 好了,我们已经开发了十多对插件对,然后分别XCopy到了各个服务器节点上,“整个系统”已经投入了运行。通过前面的介绍(回顾),相信大家对我们的“整个系统”有了个大致的映像。我们的IRAS服
zhuweisky
·
2006-04-07 14:00
ESFramework
可复用的通信框架(序)
月开始,就一直从事N层C/S结构的服务端的开发,从最初的熟悉各种Windows Socket API、熟悉完成端口模型,探索高效稳定的服务端通信模型,时至今日,慢慢的积累了一些C/S服务端开发的经验,
ESFramework
feipigwang
·
2006-04-07 11:00
framework
ESFramework
可复用的通信框架(序)
年7月开始,就一直从事N层C/S结构的服务端的开发,从最初的熟悉各种WindowsSocketAPI、熟悉完成端口模型,探索高效稳定的服务端通信模型,时至今日,慢慢的积累了一些C/S服务端开发的经验,
ESFramework
zhuweisky
·
2006-04-07 11:00
框架
.net
应用服务器
tcp
网络
服务器
ESFramework
介绍之(19)―― 对动态组ActiveGroup的支持
什么是动态组?举个例子就清楚了。QQ支持多人在一个组中聊天的模式是群,这是一种静态组;而MSN中的动态的将多个人拉到一个组中来群聊,就是动态组。关于动态组,还有一个很好的例子,就是多人联网游戏,比如联网的星际。首先由发起者创建一个组(动态组),然后其它玩家加入进来开始游戏,游戏结束了,该动态组就销毁了。所以说,动态组是个“临时性的”,生命比较短暂;而静态组,通常被存储于永久介质(如数据库)中,即使
feipigwang
·
2006-04-07 10:00
framework
ESFramework
介绍之(19)―― 对动态组ActiveGroup的支持
什么是动态组?举个例子就清楚了。QQ支持多人在一个组中聊天的模式是群,这是一种静态组;而MSN中的动态的将多个人拉到一个组中来群聊,就是动态组。关于动态组,还有一个很好的例子,就是多人联网游戏,比如联网的星际。首先由发起者创建一个组(动态组),然后其它玩家加入进来开始游戏,游戏结束了,该动态组就销毁了。所以说,动态组是个“临时性的”,生命比较短暂;而静态组,通常被存储于永久介质(如数据库)中
zhuweisky
·
2006-04-07 10:00
ESFramework
解疑 --点滴(不断补充中)
(2006.03.31) MSN上有个叫MeDiar的朋友问我
ESFramework
中IMessageHeader的实现在哪里?
zhuweisky
·
2006-03-31 15:00
ESFramework
介绍之(18)―― Tcp用户管理器组件
并把本次用户登录、请求服务过程中的所有信息持久化保存(如记录到数据库) 在
ESFramework
中,实现这种管理的是ITc
zhuweisky
·
2006-03-31 15:00
ESFramework
解疑 --点滴(不断补充中)
(2006.03.31) MSN上有个叫MeDiar的朋友问我
ESFramework
中IMessageHeader的实现在哪里?
feipigwang
·
2006-03-31 15:00
framework
ESFramework
介绍之(17)―― 支持漫游用户和跨区域功能请求
对于漫游用户的支持和跨区域功能请求的支持是
ESFramework
最基本的目的之一(回顾),在详细讲述解决方案之前,先了解一下关于这个问题的上下文。
feipigwang
·
2006-03-27 15:00
framework
ESFramework
介绍之(16)―― Tcp数据自动发送器ITcpAutoSender
我们已经积累了这样的经验:如果有一个大块的数据需要通过Tcp发送,我们会采用异步的方式以避免当前工作线程阻塞。那么,如果我们有多个线程需要同时发送大块的数据了?每个线程都在NetworkStream或Socket上提交异步发送数据的请求会导致数据发送的混乱(多个线程同时在一个Socket上进行写操作),所以,我引入了前面介绍的线程安全的网络流。在引入这个类后,似乎日子已经很好过了,但是新的功能要求
feipigwang
·
2006-03-24 15:00
framework
ESFramework
介绍之(15)-- IRAS
每个城市都对应着自己的AS,每个AS都有一组FS为之服务,而所有的AS都由一个IRAS联系/管理起来(回顾)。前面我们已经提到,所有的FS都可以是动态添加/移除的,并且FS的地址也是自由可变的。同样,所有AS也都是可以动态添加/移除的,并且AS的地址也是可变的(这里AS与IRAS的机制同上文介绍的FS与AS之间的机制一样)。但是,唯一不能随便变化的是IRAS的地址。这是因为,所有终端连的第一个服
feipigwang
·
2006-03-24 09:00
framework
ESFramework
介绍之(14)-- AS与FS通信方案
前面我们已经多次提到,每个AS都有一组FS为之服务(回顾),AS将接收到的功能请求通过Tcp连接池或Remoting转发给某个FS处理。下面我们将深入讨论AS和FS之间的通信机制。 首先要解决第一个问题,AS如何知道每个为之服务的FS的地址? 最常见的一种解决方案是,AS处的配置文件中有一个FS地址列表,AS每次启动时,就读取这个列表,然后与列表中的每个FS建立Tcp连接池。这种方案很容易实现,
feipigwang
·
2006-03-23 09:00
framework
ESFramework
介绍之(13)-- 功能插件处理器工厂
上文讲述的是AS中的基于连接池的消息处理器,现在我们把焦点转移到功能服务器FS上来,看看FS上消息分派的过程。当FS接收到到一个请求后,会从已加载的功能插件列表中选择一个合适的插件来处理这个消息,而每一个功能插件就相当于一个消息处理器。FS和AS的结构一致:要注意的是,功能服务器FS上收到的所有消息都应该交给功能插件来处理,不存在其它的处理方式。这是使得FS“纯粹”的必须要求。上图已经很清楚的表示
feipigwang
·
2006-03-20 10:00
framework
ESFramework
介绍之(12)―― 基于Tcp连接池的消息处理器
前面的两篇文章我们已经介绍了Tcp连接池和Tcp连接池管理器,并且引入了ITcpPool接口,这个接口可以将单个连接池和一组连接池统一起来,使它们有相同的外部使用方式。现在我们需要考虑的问题是,当消息分派器分派一个接收到的请求时,如果这个请求需要被FS上的某个功能插件处理,那么消息分派器是如何将这个消息分派到对应的FS上去的?回顾介绍消息分派器时画出的各消息组件联系图,我们非常自然的想到,创建一个
feipigwang
·
2006-03-17 10:00
framework
ESFramework
介绍之(11)-- Tcp连接池管理器
上文已经讲到,Tcp连接池管理器为我们的应用进行了很多复杂的管理,比如功能服务器的调度(实现FS的负载均衡)、连接池的动态添加/移除、控制每个连接池的相关参数在UI上的显示等,并且连接池管理器与单个连接池拥有一样的接口ITcpPool。我们先回顾一下这个接口:1publicinterfaceITcpPool2{3RentStreamResultRentTcpStream(intpoolTypeKe
feipigwang
·
2006-03-16 15:00
framework
ESFramework
介绍之(10)-- Tcp连接池
凡是带有“池”的,比如数据库连接池、对象池、缓冲区池(后面可以看到IBuffPool)等等,都是为了避免资源的反复创建/销毁所带来的开销。需要为哪些资源对象建立“池”了?这些资源对象通常符合下面几个特性:(1)在应用中需要反复的被创建/销毁。(2)创建/销毁的开销比较大(3)应用中给定时刻,对该资源对象的数量要求比较大(4)资源对象最好是无状态的(Stateless),这样方便直接复用AS(回顾)
feipigwang
·
2006-03-16 13:00
framework
ESFramework
介绍之(9)-- 插件对(Addin Pair)调试“框架”
使用
ESFramework
开发C/S(通常为4层、3层也没问题)应用,当需要增加一项新的业务时,我们需要做的仅仅是开发两个插件,一个是服务端的业务功能插件(FunAddin),一个是客户端插件(PassiveAddin
feipigwang
·
2006-03-16 09:00
framework
ESFramework
介绍之(8)-- 客户端插件IPassiveAddin
前文已经提到了,在IServerAgent的基础上,客户端也可以采用插件的结构形式,客户端插件需要实现IPassiveAddin接口。我的想法是,当客户端主程序加载一个新的PassiveAddin时,可以在某个菜单的子Items上添加一项,当双击这个子菜单项时,则弹出该客户端插件提供的“业务操作窗体”。这只是使用客户端插件的可行方式之一,你完全可以根据你的应用来决定使用形式。IPassiveAdd
feipigwang
·
2006-03-15 17:00
framework
ESFramework
介绍之(7)-- 服务器代理IServerAgent
(本文原作于2006.03.15,第一次修正于2006.06.06,修正后适用于ESFrameworkV0.3+)(本文是
ESFramework
对客户端开发的支持特性之一,如果要按顺序阅读,请转到
ESFramework
feipigwang
·
2006-03-15 16:00
framework
ESFramework
介绍之(5)――消息分派器IMessageDispatcher
ESFrameworkV0.3+)本来Tcp/udp组件是系统与外界交换消息的唯一进出口,而Tcp组件或Udp组件与我们系统唯一的联系是通过消息分派器IMessageDispatcher,如此一来,就相当于
ESFramework
feipigwang
·
2006-03-14 10:00
dispatcher
ESFramework
介绍之(4)――消息拦截器INetMessageHook
网络上传输的消息经常是经过加密和压缩,有的特定类型的消息可能还需要进行其它变形,
ESFramework
通过INetMessageHook对这些功能提供支持。
feipigwang
·
2006-03-13 14:00
framework
ESFramework
介绍之(3)――消息处理器和处理器工厂
无论是服务端还是客户端,都需要对接收到的消息进行处理,在
ESFramework
框架中,处理消息的组件称为消息处理器,所有的消息处理器都实现了接口IDataDealer:1publicinterfaceIDataDealer2
feipigwang
·
2006-03-13 12:00
framework
ESFramework
介绍之(2)――网络通信消息NetMessage
较之C++而言,.NET是一个更加“动态”的平台,其动态能力建立在反射机制之上,而反射的基础是“元数据”。上文已经提到过,如果一个框架要为我们的应用做更多的事情,那么这个框架必须建立更多的标准,必须对框架自己要处理的消息有更多的了解,所以,每个消息都要是自描述的,也就是说每个消息要包含它自己的“元数据”。那么,“元数据”位于消息的何处了?你一定想到了,对,是消息头(MessagHeader)。在E
feipigwang
·
2006-03-13 09:00
framework
ESFramework
介绍之(1)――网络通信消息协议接口IContract
通过网络相互通信的系统之间(如客户端与服务端的通信)要想正常交互,它们必须有“共同的语言”,这种语言就是消息协议。遵守消息协议的消息才能被我们的系统所理解。我们知道,消息在网路上传输的是字节流,而我们主流的面向对象系统中处理的却是“对象”,如何将从网络上接收到的字节流转化为“对象”,又如何将“对象”转化为字节流以便通过网络传递给其他系统,这便是IContract接口定义的内容:1///2///IC
feipigwang
·
2006-03-12 19:00
framework
AgileIM 源码公开
前文已经提到 AgileIM只是用于我的通信框架
ESFramework
测试的客户端,AgileIM 如今已经支持的主要功能: (1)文字聊天 (2)文件传输 (3)视频/音频聊天 (4)基于Udp的NAT
feipigwang
·
2006-03-06 10:00
agile
AgileIM 即时通
AgileIM是一款类似QQ、MSN的聊天软件,这个软件却是我“无意插柳”的结果,AgileIM的“前身”原本只是为了测试我的通信框架
ESFramework
的通信能力,没想到,做了两个星期后则个用于测试的小软件居然有点模样了
feipigwang
·
2006-03-02 21:00
agile
上一页
1
2
3
4
5
6
7
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他