作为开发设计人员,开发框架与开发库,以及工具的选取是一个重要的课题。没有万能,只有合适的,好的选择事半功倍。在此介绍一些开源的项目,仅供参考。技术无止境,修行在个人,愿大家一同成长:
《开发框架,中间件,开发库、发布,以及监视》
分类 | 简要说明 | 相关链接 | |
---|---|---|---|
ACE | Network | The ADAPTIVE Communication Environment ACE是一款优秀的面向对象的网路通讯Framework,支持多平台 | |
Ice | Network | Ice是又一款优秀的面向对象的网路通讯Framework,支持多平台 | |
libcurl | Network | libcurl是Multiprotocol file transfer library,支持FTP,LDAP.HTTP,POP3,SMTP,SCP,RTMP,TELNET等多种协议 | |
commoncpp | Library | GNU Common C++,非常好的class framework | |
Boost | Library | Boost是强大的跨平台C++开发库,基本上封装了常用的文件,线程,网络,定时器等各种接口API | |
Qt | Library | Qt是一款cross-platform application and UI framework | |
wxWidgets | Library | wxWidgets是cross-platform(Windows,Unix,iPhone) UI library | |
Metro | Library | Metro是一款性能优越的web service协议栈的JAVA实现。支持JAXB, JAXP等,也可以代替SOAP而使用RESTful,代替XML而使用JSON。使用wsimport可以方便轻松地由WSDL生成Java代码,完成协议的透明封装。 | |
log4cpp | Library | log4cpp是经典的日志处理C++类库,可以输出到本地文件,syslog,以及其他网络机器。早已移植到JAVA平台。 | |
D-Bus | IPC | D-Bus是跨平台的进程间通信【プロセス間通信】中间件,支持C, Java, C++, C#, Python, Ruby, Perl, GTK+, Qt, Maemo等多种开发语言 | |
Qpid | Messaging | Qpid是开源AMQP Messaging,支持C++, Java JMS, .Net, Python, and Ruby等 | |
RabbitMQ | Messaging | RabbitMQ是又一款AMQP实现,支持XMPP, SMTP, STOMP以及HTTP。 | |
YAMI4 | Messaging | YAMI4是跨平台的Messaging Solution for Distributed Systems,支持Ada, C++, Java和Python等 | |
RSMB | Messaging | RSMB是来自IBM的开源项目Really Small Message Broker | |
MOM | Messaging | Message Oriented Middleware | |
Firebird | DataBase | Firebird是有别于PostgreSQL、MySQL,由InterBase演化而来的一款轻量级关系型数据库,支持嵌入式。 | |
SQLite | DataBase | SQLite是非常有名的跨平台的文件关系型数据库,小巧快速可靠,支持事务。通过C/C++接口API可以方便地实现各种操作控制。另外,数种语言开发包也实现了对其的支持。 | |
Cassandra | DataBase | Cassandra,源于Facebook,是可以承载高负荷的第二代分布式数据库,采用KVS(Key Value Store)形式,所谓的NoSQL(Not only SQL),最近的热点话题之一。Twitter和Digg已经实际采用。 | |
Hadoop | Computing | Apache Hadoop project develops open-source software for reliable, scalable, distributed computing | |
Pidgin | IM | Pidgin是完美的IM(Instant Messaging)客户端和开发库。支持几乎现存所有的聊天工具,AIM, MSN, YahooMessenger, GoogleTalk, ICQ, QQ, Bonjour, GaduGadu, XMPP, Zephyr等等,iPhone上也能使用,超强! | |
Subversion | CVS | Subversion是CVS之后新一代代码管理工具,支持目录的移动和删除等新功能。目前有很多种Client实现,日语版的WIKI中有一些链接。 | |
Valgrind | Debug | Valgrind是优秀的多平台运行时内存检测工具,包括内存泄漏,非法访问,等等。 | |
mpatrol | Debug | mpatrol是一款古老的支持多平台的运行时内存检测工具。 | |
Jmeter | Test | Jmeter是基于Java的系统压力测试工具。 | |
InnoSetup | Setup | InnoSetup是免费的Windows下安装包制作工具,支持UNICODE。 | |
NSIS | Setup | NSIS是又一款开源的Windows下安装包制作工具。 | |
IzPack | Setup | IzPack是跨平台的安装包制作工具,只需要安装JRE。 | |
AMANDA | Backup | Advanced Maryland Automatic Network Disk Archiver AMANDA是跨平台的LAN网络磁盘备份系统,使用标准的tar和dump工具,支持磁带tape和disk硬盘。 | |
rsync | Backup | rsync是一款快速的增量式文件传输工具,一般的类Linux发行版中都有标配。 | |
Nagios | Monitor | Nagios是超级强大的开源的系统监视工具。实现CPU占有率,内存,进程,磁盘空间,HTTP/POP3/SMTP/SNMP等网络服务,日志追踪等多类型,多层次网络系统监控。 | |
Wireshark | Monitor | Wireshark是经典的网络抓包工具,Tcpdump的Windows版,绝对是网络软件开发和通讯问题分析的首选。 | |
TTCP | Network | Test TCP (TTCP) is a command-line sockets-based benchmarking tool for measuring TCP and UDP performance between two systems | |
Iperf | Network | Iperf, a modern alternative for measuring maximum TCP and UDP bandwidth performance | |
BWPing | Network | BWPing is a tool to measure bandwidth and response times between two hosts using Internet Control Message Protocol (ICMP) echo request/echo reply mechanism | |
Dia | Design | Dia是基于Java的开源的流程图制作工具 | |
ArgoUML | Design | ArgoUML是基于Java的开源的UML建模工具 | |
GanttProject | Management | GanttProject是跨平台的项目进度管理工具 | |
SpeQ | Computing | SpeQ是功能强大的轻量级数学计算工具,虽说比不上MATLAB,足以满足一些常用的需求了,更何况是免费的 |
《网络多媒体以及SIP相关》
谈到多媒体处理,视频和视频编解码是核心关键,各个公司推出的产品过于昂贵,在这里简单地介绍一些优秀的开源项目。
Speex: audio compression format designed for speech
Ogg Vorbis: audio encoding
FLAC: Free Lossless Audio Codec, an audio format similar to MP3
Theora: video compression
MPEG Advanced Audio Coding(AAC)
WebM: Google主推的媒体规格,采用Matroska为MediaContainer,视频VP8,音频Vorbis
Matroska Media Container
Voice Codec Summary table
Lossless codecs comparison
音声処理: 理論から、音声ファイルの構造、さらに音声CODECの性能比較まで
FOURCC: 视频四字符代码Four character code, an identifier for a video codec
中国数字音视频编解码技术标准工作组AVS
具体开发过程中,DirectShow是Windows平台的不二选择,前辈高人已经实现了一些强大的媒体开发库,采用这些框架可以方便地处理各种编解码。
ffdshow: DirectShow and VFW codec for decoding/encoding many video and audio formats
Xiph.Org Foundation
Directshow Filters for Ogg Vorbis, Speex, Theora, FLAC, and WebM
FFmpeg: complete, cross-platform solution to record, convert and stream audio and video, including libavcodec
FFmpegX: Mac OS X graphic user interface
PortAudio - portable cross-platform Audio API(Unix上为OSS/ALSA)
Windows Mixer API:可以实现音频设备的高度控制,尤其是硬件设备音量调节(注意,不是流音量)
Windows Multimedia Device (MMDevice) API
Windows Audio Session API (WASAPI)
Windows DeviceTopology API
Windows EndpointVolume API
今年,随着宽带的普及,各种网络媒体服务已经走进了公众的生活,比如,视频会议,VOD,VoIP,网络电视,网络电影,IP电话,等等,不可或缺。用简单的技术术语来解释,就是【流服务】。一些网络协议是这些服务的技术支撑。包括,RTSP(Real Time Streaming Protocol),SDP(Session Description Protocol),RTP(Real-time Transport Protocol),RTCP(RTP Control Protocol),SIP(Session Initiation Protocol),MGCP(Media Gateway Control Protocol),RSVP(Resource reSerVation Protocol)等等。
Request for Comments (RFC)
Reference guide to all things VOIP
Open Source VOIP Software:权威珍藏版,几乎集合了所有的开源SIP-Proxy,SIP-Client,以及SIP协议栈,RTP协议栈,还有PBX等实现
Multicast over TCP/IP HOWTO
MBONE: Multicasting Tomorrow's Internet
Reliable Multicast Transport (rmt)
RTP Tools(rtpplay,rtpsend,rtpdump,rtptrans)
排除局域网LAN,以及VPN等特定环境之外,网络应用不可回避的问题之一,就是穿越NAT和防火墙。
NAT traversal的解决方案主要有2种,也就是基于Behavior和基于Control,其中STUN和TURN,以及UPnP等广为人知。顺便说几句,链接的建立最关键,链接建立以后还需要维持,因为防火墙打开一个洞以后,配置的时间(一般为几分钟)内如果没有数据包通过的话,可能会将其关闭,也就是必须注意NAT防火墙的生命周期,周期内必须要有数据流动,以保持连接,比如SIP的重复注册。
Peer-to-Peer Communication Across NAT(Network Address Translators)
NAT Traversal through Tunneling (NATTT)
Middlebox Communication (midcom)
流服务器:
Darwin Streaming Server: 流服务器open source version of Apple’s QuickTime Streaming Server
LIVE555 Streaming Media
网络监控和管理工具:
Network Monitoring Tools
NIST Net
《WEB以及RIA开发》
随着web2.0的飞速发展和普及,现在可以融合(Mashup)第三方的各种服务,充分发挥自己创意,将全新的服务呈现给用户。XML-RPC、SOAP、WSDL、JSTL、RESTful、Json(P)、AJAX等都是相关技术术语。像Google、Yahoo、Amazone、Rakuten等都向外推出了自己的WebService API,鼓励别人使用自己的服务。从开发角度来说,一种是基于客户端(JS脚本),一种是服务器端,各有所长。对于服务器端的WebService来说,目前的开源开发平台主要有Metro和Axis2等,性能上前者要胜一筹。不仅能实现service和serviceclient,而且还使用其WSDL导入工具wsimport,能够引入基于Microsoft的WCF的WebService,实现跨平台。
List of Ajax frameworks
The Most Complete AJAX Framework and JavaScript Libraries List
GlassFish » Metro
Apache Axis2/Java
Java Web services: Metro vs. Axis2 performance
Getting Started with JAX-WS Web Services
MSDN Interoperability and Integration
WCF & Java Interop
.NET WCF services and Java Web Services Interoperability
WCF测试工具WCFStorm-Lite
关于JSON,轻量级数据交换格式,下面是一些相关链接。
JSON(JavaScript Object Notation): Lightweight data-interchange format
Jackson: High-performance JSON processor
XML tools by category