给关注ESFramework的朋友们 2006.06.25
有好长一段时间没有更新我的blog了,也没有增加介绍ESFramework的文章了,对于关注ESFramework的朋友们,我深怀歉意。最主要的原因是,最近一段时间的工作实在是太忙了,现在手头上的一个项目是做一个数据传递系统(DTS),需要支持异构数据库之间的数据的导入导出、并且要支持数据类型的自动转换、列的合并、列的分裂、增量导出等基本功能。前两周,基本上把这个系统的大的框架搭了起来,并做了简单的原型,后面还有很多的工作要做,不过应该不会再像前两周那么忙了,万事开头难嘛:)希望有做过DTS系统的朋友能多多和我交流下。
言归正传,再来说ESFramework,恐怕大家都很关心ESFramework定位的问题,最开始,ESFramework定位的是一个通信框架,后来随着越来越多的应用层的东西加进来,我经过认真的考虑,决定把ESFramework定位于一个应用框架,它用于帮助您快速地构建C/S系统。很多朋友说,在.NET下构建C/S系统,不一定需要直接使用TCP/UDP,而可以考虑使用.NET Remoting和WebService,是这样的,但是还是有很多场合需要使用Tcp/Udp的,比如C/S系统的终端是嵌入式设备(如手机、PDA等),比如像IM这样的客户端需要直接的P2P(基于UDP)通信的。
就我所思考的,ESFramework应用的定位主要有两个:
(1)终端为嵌入式设备的C/S系统。这样的系统的服务端可以直接基于ESFramework构建,而终端如果是采用.NET CampactFramwork,则也可使用ESFramework中Passive中支持客户端开发的许多组件/类。
(2)IM与业务相结合的系统。很多企业需要自己内部的单独的IM系统,并且他们希望这样的IM系统与业务系统整合为一个单独的系统,这样可以大大的方便不同的工作人员、客户在同一个平台上交流/操作业务。ESFramework对这种IM与业务结合的系统能提供比较全面的支持。
(关于ESFramework的定位,如果你有任何想法,请留言或email告诉我,我将非常感谢!)
为了更好的实现这些定位,我将提供一些基于ESFramework的扩展,这些扩展将使得ESFramework在某一个方向的应用上走得更为深入,使用这些ESFramework扩展,将使得我们在对应方向上的应用开发更简单、更迅速、更稳定。就目前为止,我已经实现了两个主要的ESFramework扩展,一个是IMCore、一个是NaptP2P。单从字面上来看,大家已经能想到这两个扩展的主要作用了。
IMCore用于帮助您更迅速的构建IM系统,使用IMCore,你不用在制定常见的P2P消息(文字、视频、文件)的协议,甚至你不必再关心消息协议的格式,这些IMCore已经帮你封装好了,你只要调用对应的接口即可,比如,你想询问对方是否同意接收文件,如果对方同意,则发送文件,使用IMCore,你可以这样写代码:
QueryAcceptFile方法自动提取对方的回复,如果同意接收,则调用SendFile方法发送文件,instantMessageOutter会在后台启动一个线程来发送文件,而且会自动对文件进行分包、封装协议包、发送协议包等处理。而且,发送文件的进度、异常、完成等信息,会通过instantMessageOutter组件的事件信息发布出来。
NaptP2P扩展用于在客户与客户之间自动的建立P2PSession,而P2P Session创建、管理的许多琐事都由NaptP2P为你搞定。而且借助IMessageTransceiver组件,你完全不用担心P2P之间底层的通信方式--是直接发送还是通过服务器中转,IMessageTransceiver会自动为你选择。
关于IMCore扩展和NaptP2P扩展更详细的介绍,我会在后面的文章中给予更详细的介绍,希望不久我就有时间来做这件事。如果你觉得ESFramework还能作哪些方向上的扩展,有任何好点子,都欢迎你告诉我:)
感谢一直关注ESFramework成长的朋友们,特别感谢那些为ESFramework提出建议和意见的朋友,请你们相信,在大家的呵护下,ESFramework一定会一步步坚实的走下去!
转到 :ESFramework 可复用的应用框架(序)
言归正传,再来说ESFramework,恐怕大家都很关心ESFramework定位的问题,最开始,ESFramework定位的是一个通信框架,后来随着越来越多的应用层的东西加进来,我经过认真的考虑,决定把ESFramework定位于一个应用框架,它用于帮助您快速地构建C/S系统。很多朋友说,在.NET下构建C/S系统,不一定需要直接使用TCP/UDP,而可以考虑使用.NET Remoting和WebService,是这样的,但是还是有很多场合需要使用Tcp/Udp的,比如C/S系统的终端是嵌入式设备(如手机、PDA等),比如像IM这样的客户端需要直接的P2P(基于UDP)通信的。
就我所思考的,ESFramework应用的定位主要有两个:
(1)终端为嵌入式设备的C/S系统。这样的系统的服务端可以直接基于ESFramework构建,而终端如果是采用.NET CampactFramwork,则也可使用ESFramework中Passive中支持客户端开发的许多组件/类。
(2)IM与业务相结合的系统。很多企业需要自己内部的单独的IM系统,并且他们希望这样的IM系统与业务系统整合为一个单独的系统,这样可以大大的方便不同的工作人员、客户在同一个平台上交流/操作业务。ESFramework对这种IM与业务结合的系统能提供比较全面的支持。
(关于ESFramework的定位,如果你有任何想法,请留言或email告诉我,我将非常感谢!)
为了更好的实现这些定位,我将提供一些基于ESFramework的扩展,这些扩展将使得ESFramework在某一个方向的应用上走得更为深入,使用这些ESFramework扩展,将使得我们在对应方向上的应用开发更简单、更迅速、更稳定。就目前为止,我已经实现了两个主要的ESFramework扩展,一个是IMCore、一个是NaptP2P。单从字面上来看,大家已经能想到这两个扩展的主要作用了。
IMCore用于帮助您更迅速的构建IM系统,使用IMCore,你不用在制定常见的P2P消息(文字、视频、文件)的协议,甚至你不必再关心消息协议的格式,这些IMCore已经帮你封装好了,你只要调用对应的接口即可,比如,你想询问对方是否同意接收文件,如果对方同意,则发送文件,使用IMCore,你可以这样写代码:
1 string fileName = FileHelper.GetFileToOpen("请选择要传送的文件");
2 ResponseToQuery res = this.instantMessageOutter.QueryAcceptFile(friendID, fileName, fileSize);
3 if (res == ResponseToQuery.Agree)
4 {
5 this.instantMessageOutter.SendFile(friend.ID, fileName, fileSize);
6 }
2 ResponseToQuery res = this.instantMessageOutter.QueryAcceptFile(friendID, fileName, fileSize);
3 if (res == ResponseToQuery.Agree)
4 {
5 this.instantMessageOutter.SendFile(friend.ID, fileName, fileSize);
6 }
QueryAcceptFile方法自动提取对方的回复,如果同意接收,则调用SendFile方法发送文件,instantMessageOutter会在后台启动一个线程来发送文件,而且会自动对文件进行分包、封装协议包、发送协议包等处理。而且,发送文件的进度、异常、完成等信息,会通过instantMessageOutter组件的事件信息发布出来。
NaptP2P扩展用于在客户与客户之间自动的建立P2PSession,而P2P Session创建、管理的许多琐事都由NaptP2P为你搞定。而且借助IMessageTransceiver组件,你完全不用担心P2P之间底层的通信方式--是直接发送还是通过服务器中转,IMessageTransceiver会自动为你选择。
关于IMCore扩展和NaptP2P扩展更详细的介绍,我会在后面的文章中给予更详细的介绍,希望不久我就有时间来做这件事。如果你觉得ESFramework还能作哪些方向上的扩展,有任何好点子,都欢迎你告诉我:)
感谢一直关注ESFramework成长的朋友们,特别感谢那些为ESFramework提出建议和意见的朋友,请你们相信,在大家的呵护下,ESFramework一定会一步步坚实的走下去!
转到 :ESFramework 可复用的应用框架(序)