自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ESFramework 通信框架

性能卓越、稳定可靠、强大易用的跨平台通信框架,支持应用服务器集群。

  • 博客(40)
  • 收藏
  • 关注

原创 OMCS开发手册(00) -- 概述(暨OMCS 1.0正式发布!)

作为.NET平台上的开发人员,要开发出一个像样的网络多媒体应用系统,非常艰难,这不仅仅是因为.NET对多媒体的支持比较有限,还因为现有的一些积累几乎都是C或C++的,而.NET在这方面的沉淀相对很少。通常的解决的办法是,通过Pinvoke来调用C或C++的非托管库,有过类似经验的人会知道,这也相当困难。OMCS的出现将使得这一状况大大改观。虽然,OMCS底层也调用了非托管的动态库,但是,这对OMC

2012-05-28 15:14:48 628

原创 ESFramework 开发手册(00) -- 概述(暨ESPlus 2.0正式发布!)

自从最后一次发布ESFramework/ESPlus至今,已经过去5个月了。今天,ESPlus 2.0 终于正式和大家见面了。现在ESFramework相关的各个组件的最新版本号分别是:ESFramework 4.0.7.0,ESPlus 2.0.0.0,ESFramework.SL 1.2.0.0,ESFramework.WP 1.0.0.0。可以从我们官网下载这次发布的所有组件、文档、以及de

2012-05-22 11:38:02 781

原创 如何实现自动升级?

目前主流的程序自动升级策略是,重新下载最新的安装包,然后重新安装整个客户端。OAUS自动升级系统可以对被分发的客户端程序中的每个文件进行版本管理,每次升级的基础单元不再是整个客户端程序,而是其中的单个文件。

2015-09-01 17:50:57 783

原创 ESFramework Demo -- 简单的网络硬盘Demo(附源码)

FTP服务器最核心的功能就是提供文件的上传、下载服务。在ESFramework Demo -- 文件传送Demo(附源码)一文中,我们演示了如何在客户端与客户端之间相互传送文件,现在我们就实现一个简单的FTP服务器,以演示如何在客户端与服务器之间传送文件。在阅读本文之前,请务必先掌握ESFramework 开发手册(03) -- 文件(夹)传送 一文中介绍的文件传送的流程及相关的API的用法。

2012-06-12 14:29:30 559

原创 浅谈网络语音技术

当我们使用像Skype、QQ这样的工具和朋友流畅地进行语音视频聊天时,我们可曾想过其背后有哪些强大的技术在支撑?本文将对网络语音通话所使用到的技术做一些简单的介绍,算是管中窥豹吧。 一.概念模型       网络语音通话通常是双向的,就模型层面来说,这个双向是对称的。为了简单起见,我们讨论一个方向的通道就可以了。一方说话,另一方则听到声音。看似简单而迅捷,但是其背后的流程却是相当复

2012-06-08 16:14:36 614 1

原创 视频聊天 Demo

ESFramework Demo -- 入门Demo,简单的即时通讯系统(附源码) 是基于ESFramework实现的一个简单的文字聊天demo,现在,我们将在这个demo的基础上,使用OMCS为其增加类似QQ的视频聊天的功能。基于文字的聊天功能的实现,在这里就不再重复说明了,我们这里重点解释一下视频聊天功能的实现。本Demo要实现的视频聊天功能可以细分为以下几个特性:(1)一方发起视频对话请

2012-05-28 15:16:21 473

原创 OMCS Demo -- 在WPF中使用OMCS(附源码)

一.对WPF提供支持    OMCS提供的默认的动态库可以直接在WinForm客户端程序中使用,如果客户端是使用WPF开发的,则需要多引用一个动态库:OMCS.WPF.dll。OMCS.WPF.dll 是一个WPF控件库,其重写了OMCS.dll中的各个连接器组件/控件,并提供与原始组件/控件完全相同的API接口。    当我们把OMCS.WPF.dll添加到WPF的工具箱时,可以看到Ca

2012-05-28 15:13:12 505

原创 OMCS Demo -- 视频、音频、电子白板、远程桌面 功能基本展现(附源码)

本文将以最简单的方式展现OMCS提供的视频、音频、电子白板、远程桌面等功能。OMCS采用的是典型的C/S结构,所以,即使是最简单的demo,我们也需要服务端和客户端。 一.服务端      正如OMCS开发手册(04) -- 二次开发流程一文描述的,服务端的开发非常简单,我们只需要实现IUserVerifier接口,以验证客户端登录用户的帐号和密码。在本demo中,OMCS.Demos

2012-05-28 15:11:59 745 1

原创 OVCS 视频会议系统 Demo

OVCS是我们基于 ESFramework 和 OMCS 实现的一个视频会议系统的Demo。OVCS主要功能有:1.多人 视频/语音/文字 会话。(1)视频编码质量根据网络状况动态调节,且当网络拥塞时,主动弃帧。(2)优先保证语音质量。(3)支持回音消除(AEC)、噪音抑制(DENOISE)、自动增益(AGC)、静音检测(VAD) 等语音技术。(4)最多支持8路混音。

2012-05-28 15:10:37 747

原创 OMCS开发手册(04) -- 二次开发流程

在掌握了前面几篇(概述、多媒体管理器、多媒体连接器、多媒体服务器)关于OMCS的详细介绍后,我们就可以正式基于OMCS进行二次开发了。下面我们就从服务端和客户端的角度分别介绍开发的步骤。 一.服务端开发      抛开具体的业务逻辑而言,就OMCS的服务端的开发而言相当简单。步骤如下所示: (1)从官网下载 “OMCS多媒体服务器(带源码)”。(2)使用VS打开OMCS.S

2012-05-28 15:09:28 423

原创 OMCS开发手册(03) -- 多媒体服务器

前面我们已经详细介绍了基于OMCS开发网络多媒体应用的客户端程序所必需掌握的内容,现在我们来看一下OMCS服务端的开发。对于使用者而言,OMCS的服务端就非常简单了,只要实现一个用户验证的接口,挂接到OMCS框架上,就可以了。OMCS多媒体服务器的主要职责有:(1)统一管理所有多媒体设备的配置参数。(2)管理所有在线的OMCS客户端。(3)协助OMCS客户端之间建立P2P通道。(4

2012-05-28 15:07:40 615

原创 OMCS开发手册(02) -- 多媒体连接器

OMCS开发手册(01) -- 多媒体设备管理器 IMultimediaManager 一文,我们从Owner的角度详细描述了多媒体设备管理器的使用,本文我们将站在Guest的角度,描述OMCS中另一类组件/控件:多媒体连接器。多媒体连接器用于连接到任何一个在线的OMCS客户端所提供的多媒体设备。所有的连接器都是以Windows控件或组件的方式呈现的,且都实现了IMultimediaConnect

2012-05-28 15:06:47 521

原创 OMCS开发手册(01) -- 多媒体设备管理器

OMCS开发手册(00) -- 概述一文中提到:任何一个OMCS的Client都有两种身份,Owner和Guest。多媒体设备管理器就是工作于OMCS客户端,并以Owner的身份管理本地所有的多媒体设备的。多媒体设备管理器对象是OMCS在客户端的核心对象,其在整个运行周期内一直存在,并会根据guest的请求自动启动或停止某个多媒体设备。 一.多媒体设备      像本地的摄像头、麦克风

2012-05-28 15:04:55 583

原创 ESFramework 使用技巧 -- 跨平台开发

随着智能手机和移动平台的迅速崛起,现在的很多应用除了支持PC的桌面平台和Web外,也不得不对移动平台进行支持。       跨平台是ESFramework体系的重要特性之一,ESFramework通过提供多个平台的客户端引擎来实现这一点。我们跨平台解决方案的第一阶段主要任务是对.NET的各种客户端类型和主流移动设备的支持。       所有不同平台类型的客户端引擎都使用几乎完全一致的API

2012-05-24 10:25:38 414

原创 ESPlatform 群集平台(02) -- 从外部访问群集

本文我们来解决一个常见的问题,那就是在ESPlatform群集之外如何访问和控制ESPlatform群集了?      在ESPlatform 群集平台(01) -- 迁移到群集平台一文中,我们提到ACMS提供了三个Remoting服务接口:IApplicationService、IClusterControlService、IPlatformCustomizeService。 IAppl

2012-05-24 10:22:22 431

原创 ESPlatform 群集平台(01) -- 迁移到群集平台

在ESFramework 开发手册(00) -- 概述中,我们提到过ESFramework的一个优势:仅仅通过修改几行代码或配置就可以将一个基于ESFramework的应用程序平滑迁入到ESPlatform平台中。现在,是到了兑现这一承诺的时候了。将单AS的ESFramework应用迁移到ESPlatform群集平台,在通常情况下,只需要两个步骤:(1)部署并启动应用群集管理服务器ACMS。

2012-05-24 10:21:22 401

原创 ESPlatform 群集平台(00) -- 概念与模型

当我们将基于ESPlus/ESFramework开发的应用程序的服务端部署在一台服务器上时,就可以称这台服务器为应用服务器(AS)。当在线用户数量不断增加时,我们可能需要部署数台或更多的AS来分担负载。但是,如果没有ESPlatform统一管理,这些AS中的任何一个都是独立的孤岛,不能与其它的AS进行协作。对于某些特殊的应用来说,也许是可以的。但是,对于大多数需要群集的应用来说,必须要将众多的AS

2012-05-24 10:20:41 543

原创 ESPlus 3.0 正式发布!

距离ESPlus 2.0发布已经有半年的时间了,在这半年多的时间中,有数十家公司在他们的项目或产品中正式使用了ESFramework 4.0,并根据实际的使用状况,给我们反馈了很多有益的建议。基于这些建议和ESFramework的长期发展规划,今天,我们推出了ESPlus 3.0 。在新版本的ESFramework/ESPlus中,我们重构了部分接口,这将使得框架的使用更加容易上手;新版本也加入了

2012-05-24 10:19:49 724

原创 ESFramework Demo -- 简单的FTP服务器Demo(附源码)

FTP服务器最核心的功能就是提供文件的上传、下载服务。在ESFramework Demo -- 文件传送Demo(附源码)一文中,我们演示了如何在客户端与客户端之间相互传送文件,现在我们就实现一个简单的FTP服务器,以演示如何在客户端与服务器之间传送文件。在阅读本文之前,请务必先掌握ESFramework 开发手册(03) -- 文件(夹)传送 一文中介绍的文件传送的流程及相关的API的用法。

2012-05-24 10:18:56 275

原创 ESFramework Demo -- 动态组及群聊Demo(附源码)

所谓“动态组”,就是在服务器内存中动态创建的组,不需要序列化存储到比如数据库或磁盘中,更像是一个临时的东西,需要的时候就创建一个,然后加入多个成员进行组内沟通,当不再使用的时候,就直接从内存中销毁了。在阅读本文之前,请务必先掌握ESFramework 开发手册(05) -- 好友与组 一文中介绍的关于组关系的基础知识以及相关API的用法。      本Demo主要演示以下功能:(1)创

2012-05-24 10:17:37 499

原创 ESFramework 使用技巧 -- 大数据块信息

在一般的通信系统中,我们都是通过网络来传递尺寸较小的单个信息(数十个字节,最大也就几K或几十K),但是有时候,需要传递的信息的个头很大,比如在内存中产生的一个数据报表,可能有数M之大。我们将这样的大尺寸信息称为“大数据块信息”(Blob)。 一.发送Blob的几种方案      在ESFramework/ESPlus中,发送的自定义信息的最大尺寸是有限制的,这个限制源于框架对单个消息的

2012-05-24 10:16:34 387

原创 ESFramework 使用技巧 -- P2P服务器

可靠的P2P通信功能是ESFramework/ESPlus提供的一个基础而又强大的功能,ESFramework 开发手册(04) -- 可靠的P2P详细描述了在客户端如何使用框架提供的这一武器。本文我们则将介绍的重点放到P2P服务端。      P2P服务器用于协助客户端搭建P2P通道。在ESPlus3.0以前的版本中,P2P服务器是集成在服务端Rapid引擎中的。在2012.04.23最新发

2012-05-22 15:19:51 507

原创 ESFramework 使用技巧 -- 信息处理,分而治之

ESFramework开发手册系列文章已经详细介绍了如何使用ESPlus提供的ESPlus.Application.CustomizeInfo空间来发送和处理自定义信息,而且,在我们在前面介绍的demo中,也展示了如何定义信息类型、信息协议,以及如何实现ICustomizeHandler来处理接收到的信息。在一般业务简单的系统中,我们完全可以像demo一样,在一个CustomizeHandler类

2012-05-22 15:17:08 286

原创 ESFramework 使用技巧 -- 实现监控

有些使用ESFramework/ESPlus进行二次开发的朋友,经常来询问要如何做才能在服务端监控客户端发送的所有或部分重要的自定义信息了?鉴于这是一个比较常见的需求,所以,这里我们就简单介绍一下如何在基于ESFramework/ESPlus开发的系统上增加信息监控的功能。 一.深入ICustomizeInfoOutter接口  正如ESFramework 开发手册(01) -- 发送

2012-05-22 15:15:56 267

原创 ESFramework 使用技巧 -- 实现离线消息

在ESFramework 开发手册(01) -- 发送和处理信息一文中,我们介绍了如何使用ESPlus.Application.CustomizeInfo命名空间的组件来发送和处理自定义消息。而在实际的项目中,需要实现离线消息的功能是一个常见的需求,也有很多客户来咨询如何做才能实现离线消息,所以,在这里,我们简单介绍一下使用ESFramework/ESPlus实现离线消息的原理与步骤。 一

2012-05-22 15:14:39 255

原创 ESFramework 使用技巧 -- 使用紧凑的序列化器,数倍提升性能

在分布式通信系统中,网络传递的是二进制流,而内存中是我们基于对象模型构建的各种各样的对象,当我们需要将一个对象通过网络传递给另一个节点时,首先需要将其序列化为字节流,然后通过网络发送给目标节点,目标节点接收后,再反序列化为对象实例。在ESFramework体系中,也是遵循同样的规则。      ESFramework称这些需要经过网络传递的对象称之为协议类(Contract),协议类通常只是一

2012-05-22 14:57:26 332

原创 ESFramework Demo -- P2P通信Demo(附源码)

现在我们将在ESFramework Demo -- 文件传送Demo 的基础上,使用ESPlus提供的第四个武器,为其增加P2P通信的功能。在阅读本文之前,请务必先掌握ESFramework 开发手册(04) -- 可靠的P2P 一文中介绍的P2P的基础知识以及相关API的用法。      本Demo主要演示以下功能:(1)创建基于TCP的P2P通道(2)创建基于UDP的P2P通道

2012-05-22 14:54:26 473

原创 ESFramework Demo -- 文件传送Demo(附源码)

现在我们将在ESFramework 开发手册(11) -- 入门Demo,简单的即时通讯系统 的基础上,使用ESPlus提供的第三个武器,为其增加文件传送的功能。在阅读本文之前,请务必先掌握ESFramework 开发手册(03) -- 文件(夹)传送 一文中介绍的文件传送的流程及相关的API的用法。      本文的demo仅仅实现了客户端与客户端之间的文件传送,至于传送文件夹,以及

2012-05-22 14:53:37 384

原创 ESFramework 4.0 性能测试

本实验用于测试ESFramework服务端引擎的性能,测试程序使用最新发布的ESFramework 4.0.7.0版本。 一.准备工作测试的机器总共有3台,都是普通的PC,一台作为服务器,两台作为客户端。作为服务器是PC配置如下:操作系统:Windows Server 2003 Enterprise Edition SP2CPU:Pentium Dual-Core CP

2012-05-22 14:52:16 223

原创 ESFramework Demo -- 入门Demo,简单的即时通讯系统(附源码)

前面的文章已经介绍完了基于ESFramework/ESPlus进行二次开发的所有要点,现在,我们可以开始小试牛刀了。      本文将介绍使用ESFramework的Rapid引擎开发的两个最简单的Demo,ESFramework.Demos.Simplest 和 ESFramework.Demos.Silverlight。这两个Demo是一个简单的聊天系统,并演示了以下功能:(1)客户端

2012-05-22 14:50:52 518

原创 ESFramework 开发手册(10) -- 安全机制

在分布式通信系统中,安全无疑是非常重要的。      ESFramework/ESPlus作为应用层的开发框架,在这里我们只讨论应用层的安全问题,因为如果黑客是在网络层或链路层进行攻击,位于应用层的系统几乎是无能为力的。从应用层来说,安全的重要性主要体现在以下几个方面:(1) 防止恶意用户使用格式不正确的消息来试探服务端。(2) 防止通信的消息被恶意用户截获,或者,即使被恶意用户截获,

2012-05-22 14:49:30 339

原创 ESFramework 开发手册(09) -- ACK机制与同步调用

正如ESFramework 开发手册(01) -- 发送和处理信息一文中所介绍的,我们在客户端使用ICustomizeOutter接口的Send方法,可以给服务端或其它在线客户端发送自定义信息,那么,如何得知接收方是否已经收到了我们发出的信息了呢?特别是针对一些非常重要的信息,确认对方已经收到是非常重要的。ICustomizeOutter接口的SendCertainly方法就使用了带ACK机制的发

2012-05-22 14:46:04 433

原创 ESFramework 开发手册(08) -- 重登陆模式与掉线重连

ESPlus提供的Rapid引擎采用了这样一条规则:当客户端与服务器成功建立TCP连接以后,发送的第一个消息为登录消息,当登录消息中的帐号密码经过服务端的验证后,服务端就会从消息中取出UserID的值,并将其与对应的TCP连接绑定起来。这样,服务端就知道每一个TCP连接所对应的用户UserID,而当我们要求服务端向某个客户端发送消息时,服务端就知道通过哪个TCP连接进行发送了。对同一个服务端而言,

2012-05-22 14:44:58 346

原创 ESFramework 开发手册(07) -- 心跳机制

虽然我们前面已经介绍完了ESFramework开发所需掌握的各种基础设施,但是还不够。想要更好地利用ESFramework这一利器,有些背景知识是我们必须要理解的。就像本文介绍的心跳机制,在严峻的Internet条件下,是通信系统中不可或缺的机制之一。      在Internet上采用TCP进行通信的系统,都会遇到一个令人头疼的问题,就是“掉线”。而“TCP掉线”这个问题远比我们通常所能想象

2012-05-22 14:43:53 306

原创 ESFramework 开发手册(06) -- Rapid通信引擎

ESPlus.Rapid命名空间提供了我们可以直接使用的客户端Rapid引擎和服务端Rapid引擎。Rapid引擎将ESFramework和ESPlus提供的各种组件装配成一个整体,将结构的复杂性隐藏在引擎的内部,而提供给我们一个简单易用的接口。在引擎对象初始化成功之后,我们就可以使用引擎对象暴露出的四大武器了。Rapid引擎底层使用的核心是ESFramework的StreamTcpEngine,

2012-05-22 14:42:17 612

原创 ESFramework 开发手册(05)--好友与组

本文介绍ESFramework 开发手册(00) -- 概述一文中提到的ESPlus的两翼:好友关系与组关系。           大部分分布式通信系统中,除了客户端与服务器进行通信外,都还会涉及到客户端之间相互通信、以及需要将客户端进行分组的功能,或者是类似这方面的需求。ESFramework对这一常见的任务内置了强大的支持,包括从客户端到服务端、一直到ESPlatform群集。在设计时,我

2012-05-22 14:40:52 587

原创 ESFramework 开发手册(04)--可靠的P2P

本文介绍ESFramework 开发手册(00) -- 概述一文中提到的四大武器中的最后一个:P2P通道。      ESPlus 2.0版本相对于1.x而言,新增的最主要特性就是对P2P的支持。      ESPlus 2.0提供了基于TCP和UDP的P2P通道,而无论我们是使用基于TCP的P2P通道,还是使用基于UDP的P2P通道,ESPlus保证所有的P2P通信都是可靠的。这是因为E

2012-05-22 14:39:36 643

原创 ESFramework 开发手册(03)--文件(夹)传送

本文介绍ESFramework 开发手册(00) -- 概述一文中提到的四大武器中的第三个:文件传送。      在很多分布式系统中,都有文件传送的需求。ESPlus内置了文件传送(支持自动断点续传)的功能,通过ESPlus.Application.FileTransfering命名空间提供相关服务。最新的ESPlus不仅支持传送单个文件,还支持传送整个文件夹,而且,传送文件夹与传送文件采用完

2012-05-22 14:37:24 663

原创 ESFramework 开发手册(02) -- 基础功能与状态通知

本文介绍ESFramework 开发手册(00) -- 概述一文中提到的四大武器的第二个:基础功能与状态改变通知。      在解决了发送信息和处理信息之后,还有一些基础功能是很多分布式通信系统都需要用到的,比如,查询某个用户是否在线、获取在线的好友列表、当好友上下线时得到通知,等等。ESPlus.Application.Basic命名空间下的组件,为我们解决了这些基础问题。 1.客户

2012-05-22 14:35:39 842

原创 ESFramework 开发手册(01) -- 发送和处理信息

本文介绍ESFramework 开发手册(00) -- 概述一文中提到的四大武器的第一个:发送和处理自定义信息。      使用通信框架最基础的需求就是收发信息,ESFramework底层已经为我们封装好了所有与信息收发相关的操作,我们只要调用ESPlus.Application.CustomizeInfo命名空间下的相关组件的API来发送信息,以及实现对应的处理器接口来处理收到的信息就可以了

2012-05-22 11:52:46 376

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除