My Tuxedo源代码

程序简介
My Tuxedo是模仿Oracle Tuxedo开发的中间件软件,在Linux下开发,可移植到其他UNIX系统下编译运行。
My Tuxedo实现了一个单机版的中间件,有着与Oracle Tuxedo一致的调用接口。

很多年前接触到Tuxedo中间件时,觉得它简洁、易用、结构清晰,于是也希望自己能开发一个类似的软件。 现在模仿它的机制自己开发一个类似的软件,也能更好的理解它的架构,配置参数和一些标志位的含义。

这里提供的是一份完整的源代码,源代码包中还包含了一份详细的设计文档,里面有开发软件时的一些设计思想,对系统架构的一些思考。
所需知识
这个软件是在Linux下用C语言开发的,阅读源代码时需要熟悉C语言的语法、UNIX常用的一些系统调用、System V 的IPC通信技术。代码中 有很详细的注释,所以只要对计算机语言有所了解,就能读懂里面的内容。
你能得到什么
编写这个软件的目的是为了交流学习,阅读它的源代码,可以学习从零开始构建一个复杂系统的过程。如果在别人开发好的系统中修改一些 代码可能比较容易,如果自己要从头设计开发一个全新的系统就会很有难度,在这个软件中你能看到在设计之前需要考虑哪些问题,怎样做 可扩展的设计,系统怎样启动,怎样停止,进程之间怎样协调,怎样传递数据,怎样考虑负载均衡,客户端的接入等等。一个好的系统要能 长期运行,不断完善,稳定可靠,不能在上面用打补丁的方式修改错误,以致最后无法维护。

通过学习这个软件,你可以看到良好的代码结构,socket编程的方法,进程之间怎样传递socket描述符,怎样同时监听多个socket的数据, 信号的设置和捕捉,进程的创建和执行,还能学习共享内存和消息队列的使用方法。

学习这个软件,你可以了解Oracle Tuxedo是怎样运行的,能更深刻的理解配置参数的含义,当出现问题时也能马上知道解决之道,也能理解 Tuxedo怎样去封装数据,怎样有针对性的使用它提供的通信模式。

不断的提高IT技术,才能在职业生涯中有一个好的发展曲线,当你看到别人得到一个高级职位和惊艳的薪水时,更要努力学习,积少成多, 去达到那样的高度,这个软件能帮你积累很多经验,比你从头摸索能更快的提高到新的水平,这么低廉的价格就能让你节省几个月的时间, 少走很多弯路,这是一个超值的体验。
源码列表
这里把源代码中的C语言文件列在下面,可以对程序的结构和规模有个直观印象。

listener/listener.c
listener/perform_socket.c
listener/destroy_listener.c
listener/check_server.c
listener/workstation_request.c
listener/search_server.c
listener/signal_handle.c
listener/internal_request.c
listener/create_listener.c
listener/check_socket.c
listener/convert.c
listener/check_command.c
listener/add_workstation.c
listener/clean_workstation.c
listener/workstation_ack.c
loadcf/write_binary_file.c
loadcf/load_server.c
loadcf/search_section.c
loadcf/load_to_buffer.c
loadcf/load_resource.c
loadcf/load_machine.c
loadcf/loadcf.c
console/get_shmm_key.c
console/signal_handle.c
console/start.c
console/copyright.c
console/stop.c
applib/tpsend.c
applib/appsvr.c
applib/tpforward.c
applib/internal_request.c
applib/tprecv.c
applib/convert.c
applib/userlog.c
applib/ulog.c
applib/tpaccept.c
applib/check_command.c
applib/tpreturn.c
applib/command.c
server/create_server_queue.c
server/start_server.c
server/start_action.c
server/remove_ipc.c
server/signal_handle.c
server/stop_action.c
server/get_shmm_key_size.c
server/server.c
server/install_service.c
server/start_instance.c
server/execute_command.c
server/check_all_server.c
server/stop_server.c
server/stop_instance.c
server/start_daemon.c
server/load_config.c
wslib/tpsend.c
wslib/tpterm.c
wslib/tpcall.c
wslib/tpdiscon.c
wslib/tpfree.c
wslib/tpconnect.c
wslib/tprecv.c
wslib/tpgetrply.c
wslib/convert.c
wslib/tpalloc.c
wslib/tpinit.c
wslib/ulog.c
wslib/tpacall.c
lib/get_queue_capacity.c
lib/trim.c
lib/alarm_handle.c
lib/recv_command.c
lib/get_queue_depth.c
lib/ulog.c
lib/send_command.c
lib/recv_message.c
lib/mask_signal.c
lib/send_message.c
lib/clean_queue.c
lib/close_shmm.c
lib/open_shmm.c

运行环境
下载的测试代码在64位 CentOS 5.6 上测试通过

Linux内核版本 2.6.18
在这个版本以上的Linux x86_64环境都可以运行
下载测试