开源框架EMTASS完善与升级计划

来源:互联网 发布:信用卡提现用哪个软件 编辑:程序博客网 时间:2024/04/28 04:57
BODY, P, TD { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt }H2,H3,H4,H5 { color: #0000FF; font-weight: bold; }H2 { font-size: 13pt; }H3 { font-size: 12pt; }H4 { font-size: 10pt; color: black; }PRE { BACKGROUND-COLOR: #FBEDBB; FONT-FAMILY: "Courier New", Courier, mono; WHITE-SPACE: pre; }CODE { COLOR: #990000; FONT-FAMILY: "Courier New", Courier, mono; } (原创文章·转载请注明来源:http://blog.csdn.net/hulihui)

因为时间关系,匆匆发布了开源框架EMTASS 2.0。目的有两个:希望其他使用者测试中发现问题或给点建议;第二,促使该框架不断完善与升级,为一个在用的Socket服务器升级新做些前期工作。

最近,在阅读两本名著《.NET设计规范:.NET约定、惯用法与模式》、《C#设计模式》,受益非浅的同时,常常将其中的思想和方法与EMTASS中具体实现比较,发现:EMTASS与真正的框架标准相差不只一点点!从《.NET设计规范》总结出的十个框架基本要素包括:安全、稳定、可靠、可验证、高性能、可集成、可扩展、后兼容、简单易用、一致性,EMTASS恐怕没有好好地满足一条!于是发布如下EMTASS完善与升级计划,既记录自己的一些思路,也想听听同行的建议。
  1. 增加一个服务器线程轮循休息时间属性:int ThreadSleepTime {set;},并根据某个线程当前忙/闲情况调整该值;
  2. 考虑更改TSocketServerBase中的两个属性Closed、ListenPaused的名称为:IsClosed、IsListenPaused;
  3. TSocketServerBase会话属性SessionCoreInfoList使用System.Collections.ObjectModel.Collection集合SessionCoreInfoCollection,原属性标记为[Obsolete];
  4. TSessionBase、TDatabase中不定义事件,使用委托对象属性,是否效率更好?
  5. 使用Fxcop1.36分析框架,并做相应修改;
  6. TSocketServerBase可以不应用泛型吗?
  7. 修改:2008年11月2日
  8. 按《.NET设计规范》说明,没有必要改Closed、ListenPaused为IsClosed、IsListenPaused;
  9. 考虑在TSocketServerBase中增加一个数据持久化字段和方法:SetDataPersistentFlag,满足不需要数据持久化要求的应用场景;
  10. 使用System.Threading.Timer完成资源清理工作,替代原来的ChessSessionTable线程;
  11. 如果TSessionBase/TDatabaseBase与TSocketServerBase仍然使用相同的事件,考虑抽象成两个接口:ISessionEvent、IDatabaseEvent,保证它们实现上的一致性;
  12. 考虑多端口侦听方式,增加一个端口集合字段和维护方法:PortCollection、AddPort()、RemovePort();
  13. 准备升级到IOCP实现,在TSessionBase中封装SocketAsyncEventArgs对象:
    • 异步侦听AcceptAsync();
    • 异步发送和接收SendAsync()/ReceiveAsync();
    修改:2008年11月7日