新SIP Proxy Server开发,启航篇

  一直就想写一个SIP软交换平台,目前已经收集了一些资料,也拆解过两个.Net中的SIP开源项目,曾经看过open ser,还有目前商用的海狼与SIPSYS的平台,自己原来的公司曾经就使用过SIPSYS(原型为open ser开发),在公司时,曾经就开源的Donet下的SIP Proxy进行修进,尝试搭建一个基础模型,用于测试功能模块的。但是总感觉架构不好,不适合业务扩展,于是同期也在参考电信3G的IMS模型结构,与其对比目前的开源IPPBX架构的不同。这些都为自己构建一个SIP软交换平台,做准备。这两个月在拆解ASP.Net的架构及remoting,还有HTTPListener。


  项目使用.Net开发,目前UDP的传输层已经开始写完了(全异步,初稿),以及正在搭建上层体系结构,使用.Net结构开发服务器端程序,需要考虑异步IO、线程池、对象内存池控制、SIP解析引擎等。

  用.Net作为网络服务器端开发的不多,一般使用Linux C开发比较常见,所以一直在考虑性能是否能达到要求?而另一方面,在不断的搜索资料,查到很多资料说,.Net可能不支持IO完成端口(IOCP),或有备用解决方案是自己调用平台IOCP API来实现的线程池,很是让人郁闷。直到有一天,终于被我查到了,在.Net 线程池里有25个工作线程和25个IO完成端口线程(IOCP),它是包涵完成端口的。但如何使用呢?--使用异步调用。当你在Windows 2003平台,使用异步调用BeginSend,EndSend,发送数据时,再查询线程池中剩余的IOCP线程数会减少。当然,你也不能光指着它,它只是帮你能更好的利用CPU资源。不过,这证明了一点,在上面架构一个服务器平台,是有机会的。ASP.Net不也是托管代码?它是如何现实高性能的?虽然它跟你的代码在底层上有些不同(它的HTTP解析器放在内核级http.sys),但上层仍是一个托管.Net环境,仍是一个能有充分发挥的应用平台,这点很重要。

  网上高性能的项目例子不多见,哪位朋友有好的介绍?在下感激不尽。

  流程,我先把整体架构搭建起来(各模块、及各模块之间的通讯架构),然后再逐一细花每个模块的的功能,初期可能每个模块的功能可能不完善,或者效率不高(例如明知道这个模块的New的对象过多,用另一种方法更好的内存池,但我先不这样做,等大的架构稳定后,再回头来完善它)。这样,好使自己有一个整体的思路。Linux最早的版本,只有8000行代码,完成的是基本功能,而现在的Linux有超这百万行的代码,是个迭代的过程。知道这一点,我们启航,上路~~~~

你可能感兴趣的:(.Net,SIP,proxy,server,.net,asp.net,平台,服务器,linux)