网络编程框架知多少

在客户端越来越多的今天,服务器端的压力也越来越大;往常我更多地关注web server端的编程,但很显然这还不够,学会自己编写server端视非常必需的,包括自行设计通信或者数据交换协议。因此,我将利用自己在Java和python两方面的经验通过网络来收集并整理一下java,python,c三种语言的主流网络编程框架,以帮助自己理解和选择。

 

JAVA

 

自从JDK1.4中有了NIO以后,这个方面越来越活跃,也为java赢得更多开发者的支持。做java网络编程需要掌握一些基本的知识和技能:套接字编程、阻塞/非阻塞通信、创建HTTP服务器与客户程序、数据报通信、对象的序列化与反序列化、Java反射机制、RMI框架、JDBC API、JavaMail API、MVC设计模式、安全网络通信、CORBA和Web服务 等等。

 

笔者在此只整理以下一些主流框架:

  • MINA 为开发高性能和高可用性的网络应用程序提供了非常便利的框架;支持基于 Java NIO 技术的 TCP/UDP 应用程序开发、串口通讯程序
  • Grizzly 设计与一般的nio框架相比是比较不同的,主要不同点在于读和写都是采用blocking方式,并且使用临时selector ; 线程模型高度可配置,不过据作者介绍在跑一个selector主线程处理ACCEPT,用线程池处理read和write性能表现最好,这点不出意料。
  • Nettty 提供了一组基于事件的API来开发高性能, 可管理的TCP/IP服务端或客户端应用程序. 对于要求建立高性能的网络应用来说,Netty提供许多基本特性,像readiness selection, 线程池, 写缓冲DoS的预防, 可重用的缓冲等.
  • NIO Framework 搭建在Java NIO library之上,封装了原始NIO的大部分复杂性。利用NIO Framework能够很容易地开发安全,高性能的Java网络应用程序。
  • QuickServer 一个免费的开源Java库,用于快速创建健壮的多线程、多客户端TCP服务器应用程序。使用QuickServer,用户可以只集中处理应用程序的逻辑/ 协议。
  • xSocket 一个轻量级的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面。
  • ioServer 高性能,易扩展的网络框架,相对于Apache的MINA更加轻量级,源码更容易读懂,源码中有大量详细的中文注解,是一个非常不错的学习框架,框 架主要至力于解决中国市场上手机网游的服务器端程序的编写。

    IoServer构建简单服务器例程(更详细的例程可下载例程包,或进入Wiki查看)服务器接收一个来自客户端的整型,并加一返 回给客户端

  • XNIO 一个帮助你简化NIO应用程序开发的Java包;提供了一个独特和易于使用的API,用于结合blocking和非blocking操作,即使是在同一个channel上,也可以允许你利用简单和低延迟 性的blocking I/O,同时还能获得非blocking I/O的优势;还引入了一个功能强大的基于回调的接口,可以大大简化基于traditional state machine的非blocking应用,并让您的应用程序之间的吞吐量(throughput)和延时达到完美平衡。

另外中间件平台ICE也可能被用到此场景中。

 

 

PYTHON

 

python是一门令人激动的语言,尤其是你在经历了一些纠缠和麻烦以后;个人非常推崇python,尽管他历史悠久出门稍晚,某些方面还不够成熟。

  • Twisted 这个东西本身的地位就不说了;基于单线程的事件驱动的网络引擎
  • 我还真不太了解其他的。。。

 

C

 

注意:C和python的混编比较方便,所以,你知道我什么意思喽?!!

 

总结:

作为这个方面的新手,一般都是从学习语言的基础API和了解一两个主流框架开始;之后才会阅读框架代码,更加深入理解基础API,并尽可能写出符合自己应用需求的server或者领域框架。不管何种语言,何种框架,处理问题的方式各异,但基本思路相似,针对不同的应用场景会有不同的处理技巧。

 

GOOD LUCK .

你可能感兴趣的:(编程,框架,python,网络应用,网络协议)