上一页 1 ··· 147 148 149 150 151 152 153 154 155 ··· 164 下一页
摘要: http://blog.csdn.net/zhuweisky/article/details/411825这个题目听起来蛮吓人的,毕竟本人的经验值也不高,却大放厥词在这里谈“企业级”。原因有二,一是把这一年以来的开发DataServer服务器的工作做个总结;二是希望能抛砖引玉,希望这方面的研究和交流繁荣起来,毕竟,目前讲这方面实战经验的文章资料太少了。正式开题之前,绝对有必要先简单的介绍相关的背景。在写这篇文章的时候,我在航天量子数码科技有限公司(Aeromatex)产品部工作,全权负责DataServer的设计与实现。DataServer基于GIS/GPS是用于提供各种基于位置服务及其它远程 阅读全文
posted @ 2011-11-24 11:36 火腿骑士 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 最初之所以要采用插件的形式进行开发,主要是为了解决功能服务的“热插拔”问题,在决定采用“框架+插件”的方式进行设计后,我们就更进一步,打算将一个个可以分割开来的拥有完整功能的组件都做成插件的形式,并且使同类型的插件的接口兼容,这样在以后需要改变时就可以灵活的进行替换。比如,将通信部分做成通信插件、日志记录部分做成日志插件等等。首先,我们要弄清楚,什么是插件?我给出了一个定义,可能有失偏颇。 插件又称为扩展,是一种特殊的组件,用于增强和扩展基本框架的行为能力。插件和框架的通信协议是一组接口,插件的各种特性都可以通过该接口进行访问。插件主要有如下特点:(1)一个插件是一个独立的物理单元。它可以独立 阅读全文
posted @ 2011-11-24 09:26 火腿骑士 阅读(223) 评论(0) 推荐(1) 编辑
摘要: 设想这样一种场景:我们的服务系统提供一系列的功能服务,而以后会有更多新的功能服务增加进来,也可能出现功能服务需要被更改或移除的情况。对于这样的服务系统,一个常见的基本的要求就是,在添加/移除/更新功能服务的时候不能停止的服务系统的运行。通常,将每一项服务封装成一个插件Dll,可以非常容易地实现“插件热插拔”(关于插件的基础信息,参见这里),但是插件的“热替换”(“动态替换”)却成了一个问题。原因在于,当我们从服务系统中卸载插件Dll的时候,实际上服务系统仍然持有该Dll的底层引用,这时如果你尝试删除或覆盖这个Dll,windows就会给出类似“该Dll正在被使用”的信息。 那么如何解决这个问题 阅读全文
posted @ 2011-11-24 09:24 火腿骑士 阅读(756) 评论(0) 推荐(1) 编辑
摘要: 在DataServer中,功能插件位于功能服务器上,被框架用于处理所有的功能请求,功能请求的表现形式是数据流,即字节数组。 在描述功能插件的外貌之前,先有必要了解这个被功能插件处理的数据流,这个数据流可能基于某种流协议格式,也可以是被序列化的请求对象。所谓“基于格式的流协议”是这样一种消息协议,它定义了数据流的固定偏移处接下来的几个字节的含义,比如规定数据流从偏移为4的地方是一个整数,该整数表示本消息的长度。如果采用基于协议格式的流,则功能插件必须首先能解析此数据流;如果采用的是序列化的流,则只要反序列化该流即可(序列化一般也可以采用两种方式--二进制序列化或XML序列化)。可以这么认为,序. 阅读全文
posted @ 2011-11-24 09:18 火腿骑士 阅读(240) 评论(0) 推荐(0) 编辑
摘要: ESFramework介绍之(6)―― 基于C/S的4层架构概述 ESFramework的4层结构的4层分别是:客户端(Client)、应用服务器(AS)、功能服务器(FS)、数据库服务器。它们之间的联系图示意如下: FS (FunctionServer),功能服务器,处理并且仅处理所有的功能性请求,不参与用户管理、状态保持等,提供最纯粹的功能服务。 AS (ApplicationServer),应用服务器,转发所有的功能请求给FS,并处理所有的非功能请求,并管理终端用户、进行状态保持、日志记录等。 上图中的功能服务器FS的个数可能是0到N(N>0)个。在某种意义上可以认为,每个功能服务 阅读全文
posted @ 2011-11-24 09:15 火腿骑士 阅读(189) 评论(0) 推荐(0) 编辑
摘要: ESFramework 4.0 进阶(01)-- 消息 需要交互的分布式系统之间通过消息来传递有意义的信息。消息是通信框架的核心。离开了消息,再谈通信框架就没有任何意义,所以,消息是ESFramework中一个最核心的概念。一. 消息的类别 在具体的应用中,我们需要对消息的类别进行定义,这有助于我们分析和讨论问题。消息大致可以分为4个类别:请求消息、回复消息、报告、通知、P2P消息。 在Client/Server模式中,出现最多的便是请求消息和回复消息。这两种类别的消息非常容易理解。 报告指的是Client/Server模式中客户端发送给服务端的消息。但这种消息不需要服务端的回复。比如,客户端 阅读全文
posted @ 2011-11-23 16:31 火腿骑士 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 1.缘起:假设我们的C/S系统中服务端与客户端之间采用UDP进行通信,那么服务端如何知道每个客户端当前是否仍然在线了?有可能某个客户端一直没有退出,但是在很长一段时间内都没有与服务端作任何通信,那么服务端就应该认为这个客户端已经离线了吗?为了能让服务端掌握每个客户端是否在线的状态,我们可以这样做,只要客户端一启动起来,就每隔一段时间间隔(如10秒)就向服务端发一个“我还在线”的消息,以表明自己的状态。而服务端如果在一个更大的时间间隔内(如20秒)都没有收到某个客户端的任何消息,则可以判定这个客户端已经离线了。这就是我们常用的“心跳”机制,客户端每隔一段时间间隔发的那个消息就称为“心跳消息”,只 阅读全文
posted @ 2011-11-23 15:21 火腿骑士 阅读(498) 评论(0) 推荐(0) 编辑
摘要: http://www.cnblogs.com/wenjie/archive/2008/04/11/1148577.html http://www.cnblogs.com/oraycn/archive/2011/10/11/2205662.html(ESFramework 开发手册)ESFramework介绍之(6)―― 基于C/S的4层架构概述 ESFramework的4层结构的4层分别是:客户端(Client)、应用服务器(AS)、功能服务器(FS)、数据库服务器。它们之间的联系图示意如下: FS (FunctionServer),功能服务器,处理并且仅处理所有的功能性请求,不参与用户管理. 阅读全文
posted @ 2011-11-22 11:21 火腿骑士 阅读(430) 评论(0) 推荐(0) 编辑
摘要: 有些情况下需要一个调度器专门来处理一些工作,如在网络处理程序中,当接收的数据后把信息存放到队列中,尽可能的更快地处理下一接收操作.而接收的数据信息则由调试器来处理,如数据分析,数据包处理等等工作.既然调度器负责处理工作,那最好给需要处理的工作制定一个规则,方便以后灵活扩展处理. 制定规则接口?12345public interface IWorkItem:IDisposable{void Execute();}其实接口制定很简单就是一个Execute方法,表示对该工作执行;那为什么还要实现IDisposable呢,目的就是为这工作提供一个释放操作描述,当此项工作完成会有一个释放行为处理相关事情 阅读全文
posted @ 2011-11-22 10:02 火腿骑士 阅读(285) 评论(1) 推荐(0) 编辑
摘要: <summary> /// 阻塞队列 /// </summary> public class BlockQueue<T> { public readonly int SizeLimit = 0; private Queue<T> _inner_queue = null; public int Count { get { return _inner_queue.Count; } } private ManualResetEvent _enqueue_wait = null; private ManualResetEvent _dequeue_wai 阅读全文
posted @ 2011-11-22 09:23 火腿骑士 阅读(205) 评论(0) 推荐(0) 编辑
上一页 1 ··· 147 148 149 150 151 152 153 154 155 ··· 164 下一页