<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>wuhran的Blog-C++,Linux,MySQL,PHP - 软件架构</title><link>http://blog.csdn.net/wuhuiran/category/258770.aspx</link><description>软件架构</description><dc:language>zh-CN</dc:language><lastUpdateTime>Thu, 09 Oct 2008 17:36:00 GMT</lastUpdateTime><ttl>60</ttl><item><dc:creator>wuhran</dc:creator><title>ACE Service Configurator 框架（ACE Service Configurator Framework）</title><link>http://blog.csdn.net/wuhuiran/archive/2008/10/09/3043641.aspx</link><pubDate>Thu, 09 Oct 2008 17:35:00 GMT</pubDate><guid>http://blog.csdn.net/wuhuiran/archive/2008/10/09/3043641.aspx</guid><wfw:comment>http://blog.csdn.net/wuhuiran/comments/3043641.aspx</wfw:comment><comments>http://blog.csdn.net/wuhuiran/archive/2008/10/09/3043641.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/wuhuiran/comments/commentRss/3043641.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=3043641</trackback:ping><description>配置静态服务
静态服务是代码已经链接进可执行程序的服务。
核心：
1.你的服务类必须是ACE_Service_Object 的之类。
2.每个服务都需要实现以下挂钩方法：
virtual int init (int argc, ACE_TCHAR *argv[]), 框架会在这个服务的实例进行初始化时调用这个方法。
virtual int fini (void), 框架会在服务实例关闭时调用这个方法。
virtual int info (ACE_TCHAR **str, size_t len), 可选，服务用这个方法类报告关于自身的信息。

ACE把已知的、可配置的静态服务放在一个内部仓库中。每个静态服务都必须用ACE提供一些宏把一些薄记信息插入这个仓库。被放在服务的.cpp文件中。
初始化服务3步曲&lt;img src ="http://blog.csdn.net/wuhuiran/aggbug/3043641.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>wuhran</dc:creator><title>转帖两篇关于ACE和boost::asio的文章</title><link>http://blog.csdn.net/wuhuiran/archive/2008/09/28/2992493.aspx</link><pubDate>Sun, 28 Sep 2008 15:08:00 GMT</pubDate><guid>http://blog.csdn.net/wuhuiran/archive/2008/09/28/2992493.aspx</guid><wfw:comment>http://blog.csdn.net/wuhuiran/comments/2992493.aspx</wfw:comment><comments>http://blog.csdn.net/wuhuiran/archive/2008/09/28/2992493.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/wuhuiran/comments/commentRss/2992493.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2992493</trackback:ping><description>ACE是一个很成熟的中间件产品，为自适应通讯环境，但它过于宏大，一堆的设计模式，架构是一层又一层，对初学者来说，有点困难。ASIO是基本Boost开发的异步IO库，封装了Socket，简化基于socket程序的开发。&lt;img src ="http://blog.csdn.net/wuhuiran/aggbug/2992493.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>wuhran</dc:creator><title>ACE Proactor框架</title><link>http://blog.csdn.net/wuhuiran/archive/2008/09/24/2972553.aspx</link><pubDate>Wed, 24 Sep 2008 12:33:00 GMT</pubDate><guid>http://blog.csdn.net/wuhuiran/archive/2008/09/24/2972553.aspx</guid><wfw:comment>http://blog.csdn.net/wuhuiran/comments/2972553.aspx</wfw:comment><comments>http://blog.csdn.net/wuhuiran/archive/2008/09/24/2972553.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/wuhuiran/comments/commentRss/2972553.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2972553</trackback:ping><description>ACE Proactor框架&lt;img src ="http://blog.csdn.net/wuhuiran/aggbug/2972553.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>wuhran</dc:creator><title>模板模式（Template）</title><link>http://blog.csdn.net/wuhuiran/archive/2008/07/29/2735052.aspx</link><pubDate>Tue, 29 Jul 2008 23:23:00 GMT</pubDate><guid>http://blog.csdn.net/wuhuiran/archive/2008/07/29/2735052.aspx</guid><wfw:comment>http://blog.csdn.net/wuhuiran/comments/2735052.aspx</wfw:comment><comments>http://blog.csdn.net/wuhuiran/archive/2008/07/29/2735052.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/wuhuiran/comments/commentRss/2735052.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2735052</trackback:ping><description>模板模式（Template）&lt;img src ="http://blog.csdn.net/wuhuiran/aggbug/2735052.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>wuhran</dc:creator><title>工厂模式(Factory)和抽象工厂模式(AbstractFactory)</title><link>http://blog.csdn.net/wuhuiran/archive/2008/07/29/2735023.aspx</link><pubDate>Tue, 29 Jul 2008 23:20:00 GMT</pubDate><guid>http://blog.csdn.net/wuhuiran/archive/2008/07/29/2735023.aspx</guid><wfw:comment>http://blog.csdn.net/wuhuiran/comments/2735023.aspx</wfw:comment><comments>http://blog.csdn.net/wuhuiran/archive/2008/07/29/2735023.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/wuhuiran/comments/commentRss/2735023.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2735023</trackback:ping><description>工厂模式(Factory)和抽象工厂模式(AbstractFactory)&lt;img src ="http://blog.csdn.net/wuhuiran/aggbug/2735023.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>wuhran</dc:creator><title>设计模式之策略模式(Strategy)</title><link>http://blog.csdn.net/wuhuiran/archive/2008/07/28/2727560.aspx</link><pubDate>Mon, 28 Jul 2008 23:44:00 GMT</pubDate><guid>http://blog.csdn.net/wuhuiran/archive/2008/07/28/2727560.aspx</guid><wfw:comment>http://blog.csdn.net/wuhuiran/comments/2727560.aspx</wfw:comment><comments>http://blog.csdn.net/wuhuiran/archive/2008/07/28/2727560.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/wuhuiran/comments/commentRss/2727560.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2727560</trackback:ping><description>设计模式之策略模式(Strategy)&lt;img src ="http://blog.csdn.net/wuhuiran/aggbug/2727560.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>wuhran</dc:creator><title>PHP开发框架的现状和展望</title><link>http://blog.csdn.net/wuhuiran/archive/2008/06/17/2559065.aspx</link><pubDate>Tue, 17 Jun 2008 23:26:00 GMT</pubDate><guid>http://blog.csdn.net/wuhuiran/archive/2008/06/17/2559065.aspx</guid><wfw:comment>http://blog.csdn.net/wuhuiran/comments/2559065.aspx</wfw:comment><comments>http://blog.csdn.net/wuhuiran/archive/2008/06/17/2559065.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/wuhuiran/comments/commentRss/2559065.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2559065</trackback:ping><description>随着Ruby on Rails的火爆，PHP这个流行的Web应用脚本语言也出现了大量的新一代开发框架。与此同时，国内PHP开发者也开始紧跟国外发展，推出了不同的开发框架。

Ruby on Rails催生变革
　　在RoR流行之前，PHP领域也有不少开发框架，例如Mojavi、WACT、PHPMvc和Seagull等。这些框架虽然也采用了MVC模式、数据库抽象层等技术。但由于当时PHP本身不像现在这样流行，所以这些框架都没有得到大量应用，最终归于沉寂。
　　而在感受到RoR提供的快速开发能力后，PHP社区像被注入了兴奋剂。各种应用技术和开发框架层出不穷。

&lt;img src ="http://blog.csdn.net/wuhuiran/aggbug/2559065.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>wuhran</dc:creator><title>[zz]实时传输协议 RTCP</title><link>http://blog.csdn.net/wuhuiran/archive/2008/04/25/2327938.aspx</link><pubDate>Fri, 25 Apr 2008 16:00:00 GMT</pubDate><guid>http://blog.csdn.net/wuhuiran/archive/2008/04/25/2327938.aspx</guid><wfw:comment>http://blog.csdn.net/wuhuiran/comments/2327938.aspx</wfw:comment><comments>http://blog.csdn.net/wuhuiran/archive/2008/04/25/2327938.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/wuhuiran/comments/commentRss/2327938.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2327938</trackback:ping><description>RTP（Real-timeTransportProtocol）是用于Internet上针对多媒体数据流的一种传输协议。RTP被定义为在一对一或一对多的传输情况下工作，其目的是提供时间信息和实现流同步。RTP通常使用UDP来传送数据，但RTP也可以在TCP或ATM等其他协议之上工作。当应用程序开始一个RTP会话时将使用两个端口：一个给RTP，一个给RTCP。RTP本身并不能为按顺序传送数据包提供可靠的传送机制，也不提供流量控制或拥塞控制，它依靠RTCP提供这些服务。通常RTP算法并不作为一个独立的网络层来实现，而是作为应用程序代码的一部分。实时传输控制协议RTCP。RTCP(Real-timeTransportControlProtocol)和RTP一起提供流量控制和拥塞控制服务。在RTP会话期间，各参与者周期性地传送RTCP包。RTCP包中含有已发送的数据包的数量、丢失的数据包的数量等统计资料，因此，服务器可以利用这些信息动态地改变传输速率，甚至改变有效载荷类型。RTP和RTCP配合使用，它们能以有效的反馈和最小的开销使传输效率最佳化，因而特别适合传送网上的实时数据。&lt;img src ="http://blog.csdn.net/wuhuiran/aggbug/2327938.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>wuhran</dc:creator><title>Zeroc ICE的示例（转载）</title><link>http://blog.csdn.net/wuhuiran/archive/2008/04/24/2321921.aspx</link><pubDate>Thu, 24 Apr 2008 10:51:00 GMT</pubDate><guid>http://blog.csdn.net/wuhuiran/archive/2008/04/24/2321921.aspx</guid><wfw:comment>http://blog.csdn.net/wuhuiran/comments/2321921.aspx</wfw:comment><comments>http://blog.csdn.net/wuhuiran/archive/2008/04/24/2321921.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/wuhuiran/comments/commentRss/2321921.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2321921</trackback:ping><description>Zeroc ICE中间件号称标准统一，开源，跨平台，跨语言，分布式，安全，服务透明，负载均衡，面向对象，性能优越，防火期穿透，通讯屏蔽。因此相比Corba，DCOM，SOAP，J2EE等的中间件技术，自然是集众多优点于一身，而却没有他们的缺点。

在Windows平台试用了一下Zeroc ICE。运行简单客户端服务器的测试程序，服务器端用C++写的，客户端用C#写的，确实可以互通。使用起来还是非常方便的。&lt;img src ="http://blog.csdn.net/wuhuiran/aggbug/2321921.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>wuhran</dc:creator><title>[ZZ]如何将程序以Daemon方式运行？</title><link>http://blog.csdn.net/wuhuiran/archive/2008/04/24/2321500.aspx</link><pubDate>Thu, 24 Apr 2008 09:54:00 GMT</pubDate><guid>http://blog.csdn.net/wuhuiran/archive/2008/04/24/2321500.aspx</guid><wfw:comment>http://blog.csdn.net/wuhuiran/comments/2321500.aspx</wfw:comment><comments>http://blog.csdn.net/wuhuiran/archive/2008/04/24/2321500.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/wuhuiran/comments/commentRss/2321500.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2321500</trackback:ping><description>如何将程序以Daemon方式运行？&lt;img src ="http://blog.csdn.net/wuhuiran/aggbug/2321500.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>wuhran</dc:creator><title>【zz】关于TIME_WAIT </title><link>http://blog.csdn.net/wuhuiran/archive/2008/04/14/2291165.aspx</link><pubDate>Mon, 14 Apr 2008 16:28:00 GMT</pubDate><guid>http://blog.csdn.net/wuhuiran/archive/2008/04/14/2291165.aspx</guid><wfw:comment>http://blog.csdn.net/wuhuiran/comments/2291165.aspx</wfw:comment><comments>http://blog.csdn.net/wuhuiran/archive/2008/04/14/2291165.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/wuhuiran/comments/commentRss/2291165.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2291165</trackback:ping><description>客户端与服务器端建立的TCP/IP连接数据传送完毕后，关闭SOCKET之后，服务器端连接的端口
状态为TIME_WAIT。
 
       是不是所有执行主动关闭的socket都会进入TIME_WAIT状态呢？
       有没有什么情况使主动关闭的socket直接进入CLOSED状态呢？
 
        主动关闭的一方在发送最后一个 ack 后，就会进入 TIME_WAIT 状态 停留2MSL（max segment lifetime）时间
这个是TCP/IP必不可少的，也就是“解决”不了的。

       也就是TCP/IP设计者本来是这么设计的
&lt;img src ="http://blog.csdn.net/wuhuiran/aggbug/2291165.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>wuhran</dc:creator><title>[zz]CLOSE_WAIT状态的生成原因</title><link>http://blog.csdn.net/wuhuiran/archive/2008/04/11/2281707.aspx</link><pubDate>Fri, 11 Apr 2008 12:57:00 GMT</pubDate><guid>http://blog.csdn.net/wuhuiran/archive/2008/04/11/2281707.aspx</guid><wfw:comment>http://blog.csdn.net/wuhuiran/comments/2281707.aspx</wfw:comment><comments>http://blog.csdn.net/wuhuiran/archive/2008/04/11/2281707.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/wuhuiran/comments/commentRss/2281707.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2281707</trackback:ping><description>CLOSE_WAIT状态的生成原因

&lt;img src ="http://blog.csdn.net/wuhuiran/aggbug/2281707.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>wuhran</dc:creator><title>【zz】FLV视频格式</title><link>http://blog.csdn.net/wuhuiran/archive/2008/04/09/2270066.aspx</link><pubDate>Wed, 09 Apr 2008 14:30:00 GMT</pubDate><guid>http://blog.csdn.net/wuhuiran/archive/2008/04/09/2270066.aspx</guid><wfw:comment>http://blog.csdn.net/wuhuiran/comments/2270066.aspx</wfw:comment><comments>http://blog.csdn.net/wuhuiran/archive/2008/04/09/2270066.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/wuhuiran/comments/commentRss/2270066.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2270066</trackback:ping><description> FLV 是FLASH VIDEO的简称，FLV流媒体格式是一种新的视频格式，全称为Flash Video。由于它形成的文件极小、加载速度极快，使得网络观看视频文件成为可能，它的出现有效地解决了视频文件导入Flash后，使导出的SWF文件体积庞大，不能在网络上很好的使用等缺点。
&lt;img src ="http://blog.csdn.net/wuhuiran/aggbug/2270066.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>wuhran</dc:creator><title>[zz]VC++下命名管道编程的原理及实现 </title><link>http://blog.csdn.net/wuhuiran/archive/2008/04/02/2243404.aspx</link><pubDate>Wed, 02 Apr 2008 10:04:00 GMT</pubDate><guid>http://blog.csdn.net/wuhuiran/archive/2008/04/02/2243404.aspx</guid><wfw:comment>http://blog.csdn.net/wuhuiran/comments/2243404.aspx</wfw:comment><comments>http://blog.csdn.net/wuhuiran/archive/2008/04/02/2243404.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/wuhuiran/comments/commentRss/2243404.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2243404</trackback:ping><description>VC++下命名管道编程的原理及实现 &lt;img src ="http://blog.csdn.net/wuhuiran/aggbug/2243404.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>wuhran</dc:creator><title>【zz】进程间通讯的方法</title><link>http://blog.csdn.net/wuhuiran/archive/2008/04/02/2243338.aspx</link><pubDate>Wed, 02 Apr 2008 09:50:00 GMT</pubDate><guid>http://blog.csdn.net/wuhuiran/archive/2008/04/02/2243338.aspx</guid><wfw:comment>http://blog.csdn.net/wuhuiran/comments/2243338.aspx</wfw:comment><comments>http://blog.csdn.net/wuhuiran/archive/2008/04/02/2243338.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/wuhuiran/comments/commentRss/2243338.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2243338</trackback:ping><description>进程通常被定义为一个正在运行的程序的实例，它由两个部分组成：       一个是操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方      另一个是地址空间，它包含所有的可执行模块或DLL模块的代码和数据。它还包含动态分配的空间。如线程堆栈和堆分配空间。每个进程被赋予它自己的虚拟地址空间，当进程中的一个线程正在运行时，该线程可以访问只属于它的进程的内存。属于其它进程的内存则是隐藏的，并不能被正在运行的线程访问。&lt;img src ="http://blog.csdn.net/wuhuiran/aggbug/2243338.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>