Dedecms 手机网站示例,沈阳网络营销推广的公司,南京制作网站优化,好网站建设公司选择哪家好有很多朋友要求给出一个应用ESFramework的Demo#xff0c;在前面介绍ESFramework支持的4层架构中#xff08;回顾#xff09;#xff0c;有AS、FS、IRAS#xff0c;其中FS的功能需求最简单#xff0c;所以本文就给出一个FS实现示例。 FS主要用于管理功能插件…有很多朋友要求给出一个应用ESFramework的Demo在前面介绍ESFramework支持的4层架构中回顾有AS、FS、IRAS其中FS的功能需求最简单所以本文就给出一个FS实现示例。 FS主要用于管理功能插件并且将所有的功能性请求都转发给对应的功能插件处理不需要关心用户由AS管理、不用关心具体的业务需求由对应的功能插件处理所以FS非常的单纯基本上是与应用无关的可以在任何应用中复用同一个FS。但是AS和IRAS就很难复用了因为不同的应用对AS、IRAS的需求的差别可能非常大。 实际上FS的实现自己只包含4个cs文件绝大多数组件都由ESFramework提供了。下面是FS项目中文件的结构图 其中MainForm是主界面FsConfiguration是FS的配置下面马上会讲到的是FunctionServer这个FS中的核心类。 我们已经知道FS通过Tcp发布服务给AS使用即AS通过与FS之间的Tcp连接池来使用FS提供的服务所以会使用到ESFramework提供的ITcp组件。 其次FS需要管理所有的功能插件所以它需要使用ESFramework提供的IAddinManagement组件。 在理解了这两点的基础上我们可以定义FunctionServer这个类了它很简单所有方法及实现如下所示 public void LoadAddins() { string directory System.IO.Directory.GetParent(System.Windows.Forms.Application.ExecutablePath).FullName ; this.addinManagement.LoadAllAddins(directory ,true) ; } public void Start() { this.agileTcp.Start() ; this.serverPerformanceMonitor.Start() ; this.asRemotingServiceAccesser.FsStarted() ; } public void Stop() { this.agileTcp.Stop() ; this.serverPerformanceMonitor.Stop() ; this.asRemotingServiceAccesser.FsToExit() ; } public void ReadyToExit() { this.Stop() ; this.agileTcp.Dispose() ; } 各个方法的含义和成员变量的含义相信大家已经非常的明白了由必要解释一下serverPerformanceMonitor它用于监控本服务器的性能状态并将性能数据通过事件发布。如果你读过前面的文章你会知道这些性能数据将被发送给AS然后AS根据这些性能数据在多个FS上进行负载均衡调度。asRemotingServiceAccesser用于访问AS发布的远程服务比如FS启动或退出时通知AS。 FS核心的类FunctionServer就这些功能。你一定非常想知道ITcp、ITcpStreamDispatcher等是如何与FunctionServer装配起来的谜底马上揭晓。相对于使用4个cs文件就实现了FS来说FS的组件装配就稍微复杂些AS则更复杂。我采用SPring.NET来完成组件装配。 我们先看ITcp组件的装配 object nameagileTcp typeESFramework.Network.Tcp.AgileTcp ,ESFramework init-methodInitialize property namePort object typeSpring.Objects.Factory.Config.PropertyRetrievingFactoryObject ,Spring.Core property nameTargetObject reffsConfiguration/ property nameTargetProperty valueTcpPort/ /object /property property nameMaxMessageSize value2000000/ property nameDispatcher reftcpStreamDispatcher/ property nameContractHelper refcontractHelper/ property nameBufferPool object typeESFramework.Network.Tcp.SimpleBufferPool ,ESFramework/ /property /object 如果你研究过AgileTcp组件上面的配置非常容易理解最主要的AgileTcp使用的分派器组件分配器组件的装配如下 object nametcpStreamDispatcher typeESFramework.Network.Tcp.TcpStreamDispatcher ,ESFramework property nameContractHelper refcontractHelper/ property nameTcpClientsController refagileTcp/ property nameRequestDealerFactory object typeESFramework.Network.FunAddinDealerFactory ,ESFramework property nameAddinManagement refaddinManagement/ /object /property /object 非常需要说明一点的是消息分派器使用的处理器工厂是ESFramework.Network.FunAddinDealerFactory因为它只需要处理功能请求并且这些功能请求是由功能插件处理的所以使用ESFramework.Network.FunAddinDealerFactory就可以了而不需要使用功能全面的EsbRequestDealerFactoryEsbRequestDealerFactory通常由AS使用。 最后一个重要组件的装配FunctionServer object namefunctionServer typeFunctionServerSystem.Server.FunctionServer ,FunctionServerSystem property nameAgileTcp refagileTcp/ property nameAddinManagement refaddinManagement/ property nameServerPerformanceMonitor refserverPerformanceMonitor/ property nameAsRemotingServiceAccesser refasRemotingServiceAccesser/ /object 毫无秘密可言 还有就是主界面MainForm的装配就不罗列了大家看源码就知道了。这是FS的一个例子如果你需要看到客户端的例子AgileIM的源码是一个选择不过AgileIM稍微复杂了些过段时间我会给出一个简单的建立在ESFramework上的客户端实现。 下面是FS运行时的截图 下载FS源码 VS2003。