﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><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>博客园-tmfc's .net cabin</title><link>http://www.cnblogs.com/tmfc/</link><description /><language>zh-cn</language><lastBuildDate>Sat, 04 Jul 2009 00:07:07 GMT</lastBuildDate><pubDate>Sat, 04 Jul 2009 00:07:07 GMT</pubDate><ttl>60</ttl><item><title>LightCloud设计特点</title><link>http://www.cnblogs.com/tmfc/archive/2009/03/08/1406421.html</link><dc:creator>tmfc</dc:creator><author>tmfc</author><pubDate>Sun, 08 Mar 2009 12:32:00 GMT</pubDate><guid>http://www.cnblogs.com/tmfc/archive/2009/03/08/1406421.html</guid><wfw:comment>http://www.cnblogs.com/tmfc/comments/1406421.html</wfw:comment><comments>http://www.cnblogs.com/tmfc/archive/2009/03/08/1406421.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/tmfc/comments/commentRss/1406421.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/tmfc/services/trackbacks/1406421.html</trackback:ping><description><![CDATA[<h4>Hash环</h4> <p>LightCloud使用一致性Hash算法（Consistent Hashing），好处就是当添加新节点的时候不用移动大量数据了。还不知道为什么？<a href="http://blog.csdn.net/barfoo/archive/2009/01/11/3753426.aspx">Consistent Hashing介绍</a>。</p> <p>一致性Hash算法也不算什么新鲜玩意儿了，凡是分布式系统都不免能见到它的身影，那LightCloud特别之处在哪里呢？好，我们广告之后告诉你……</p> <p>（可恶的广告）</p> <p>好，广告之后精彩继续</p> <p>为了提高可用性，LightCloud使用了数据复制，在正角上场之前，先上一个暖场的，这个暖场的来头还挺大<a href="http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf">Amazon's Dynamo</a>，先看大屏幕，</p> <p><img src="http://opensource.plurk.com/uploads/dynamo_replication.png"> </p> <p>图上说了，Key A对应的值会复制三份，分布放在A，B，C节点上（原因不用说了吧），这样做的后果就是系统比较复杂，特别是加入新节点之后，由于<a href="http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf">Amazon's Dynamo</a>系统本身就设计的比较复杂，这里就不细展开了，有兴趣的同学可以参考链接地址中的论文。</p> <p>主角上场，主角本身设计的比较简单，还是先看大屏幕</p> <p><img src="http://opensource.plurk.com/uploads/lc_replc.png"> </p> <p>怎么样，有没有看出什么道道来，节点本身复制了，这里是复制了两份，当然你也可以复制三份，第三份甚至可以放在另外的数据中心以提供更高的可靠性。LightCloud的复制用得是底层TokyoTyrant的复制功能，很环保。</p> <p>解决了复制的问题，还有一个问题就是加入新节点是数据转移的问题，这张图困扰了我很久，大家先仔细品味一下</p> <p><img src="http://opensource.plurk.com/uploads/storage_lookup.png"> </p> <p>本来挺简单的一个环，现在变成了两个，上面那个环呢只保存地址，下面那个环才是保存了真正的数据，这样做有什么好处呢？文档也比较简略，没有说清楚，我和作者amix沟通之后，他答应在后续的文档中详细加以说明，留待以后再来分析吧。</p> <h4>和TokyoTyrant通讯</h4> <p>可以通过两种方式和TokyoTyrant通讯：</p> <ul> <li>&nbsp; <ul> <li>使用Tyrant的二进制协议  <li>使用Memcached的协议 </li></ul></li></ul> <p>默认使用前者，因为是二进制的，而且支持调用Lua扩展，当然如果你愿意，也可以使用Memcached的协议。</p><img src ="http://www.cnblogs.com/tmfc/aggbug/1406421.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47965/" target="_blank">Google App Engine宕机6小时——云的安全在哪里？</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>有怪兽，有怪兽 - 通过MONSTER OF COMPRESSION选择压缩算法</title><link>http://www.cnblogs.com/tmfc/archive/2009/03/08/1406355.html</link><dc:creator>tmfc</dc:creator><author>tmfc</author><pubDate>Sun, 08 Mar 2009 10:52:00 GMT</pubDate><guid>http://www.cnblogs.com/tmfc/archive/2009/03/08/1406355.html</guid><wfw:comment>http://www.cnblogs.com/tmfc/comments/1406355.html</wfw:comment><comments>http://www.cnblogs.com/tmfc/archive/2009/03/08/1406355.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/tmfc/comments/commentRss/1406355.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/tmfc/services/trackbacks/1406355.html</trackback:ping><description><![CDATA[<p>去年由于工作关系，需要给Memcached选择一种数据压缩算法，参考了2008版的MONSTER OF COMPRESSION，现在2009年度的又新鲜出炉了，有需要的朋友可以去下面看看</p>
<blockquote>
<p><b><span style="text-decoration: underline;"><a href="http://heartofcomp.altervista.org/MOC/MOC.htm">MONSTER OF COMPRESSION 2009</a></span></b></p>
</blockquote>
<p>由于用于压缩缓存数据，所以重要指标是压缩速度和解压速度，直接参考<b><span style="text-decoration: underline;">Ranked on Time of Compression</span></b>表和<b><span style="text-decoration: underline;">Ranked on Time of Decompression </span></b>表  </p>
<p>可以发现排在前列的算法就这么几个，而且基本上都是LZ帮派的，其中又以LZ77分舵的气焰最盛，那个速度叫一个块，比<b>7Zip</b>要快15倍，比压缩比最高的<b>NANOZIP</b>要快70多倍。由于MONSTER OF COMPRESSION的压缩测试数据包括非压缩的图片，二进制文件（包括exe和dll），压缩音频，视频等等，LZ帮派基本上压缩率是比较惨的（1G的数据压缩到700多M），但是Memcached缓存的都是什么，都是序列化后的对象，那不就是XML文件吗（当然也可以使用二进制序列化，不在讨论之列）。于是本着认真负责的态度，本人决定测试一下LZ帮的文本压缩能力。  </p>
<p>找来找去，去年排名前几的算法，只有<a href="http://www.quicklz.com/">QuickLZ</a>（07年还是排名第五的大怪兽今年不知道由于什么原因，没有测试数据）提供了可执行程序（最重要是还有C#版本的库），那就用QuickLZ粗略测试了一下，测试使用了对象序列化后产生的XML文件，具体的成绩已经有些模糊，压缩比应该是在50%左右，这个成绩还真不错，完全可以满足要求。不过最后由于种种原因，没能应用到项目中，所以没法提供更多资料了，大家有兴趣可以自己测试一下实际效果到底如何。</p><img src ="http://www.cnblogs.com/tmfc/aggbug/1406355.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47965/" target="_blank">Google App Engine宕机6小时——云的安全在哪里？</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>LightCloud -- 分布式键-值数据库</title><link>http://www.cnblogs.com/tmfc/archive/2009/03/07/1405669.html</link><dc:creator>tmfc</dc:creator><author>tmfc</author><pubDate>Sat, 07 Mar 2009 13:45:00 GMT</pubDate><guid>http://www.cnblogs.com/tmfc/archive/2009/03/07/1405669.html</guid><wfw:comment>http://www.cnblogs.com/tmfc/comments/1405669.html</wfw:comment><comments>http://www.cnblogs.com/tmfc/archive/2009/03/07/1405669.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cnblogs.com/tmfc/comments/commentRss/1405669.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/tmfc/services/trackbacks/1405669.html</trackback:ping><description><![CDATA[摘要: LightCloud是一个性能堪比Memcached的分布式的键-值数据库，但相对于易失的Memcached，它是持久化存储的，在传统的关系数据库之外提供了另一种选择。&nbsp;&nbsp;<a href='http://www.cnblogs.com/tmfc/archive/2009/03/07/1405669.html'>阅读全文</a><img src ="http://www.cnblogs.com/tmfc/aggbug/1405669.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47961/" target="_blank">微软新推社交网站Windows Live Planet</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>[翻译]更有效的使用垃圾收集&amp;ndash; 第一部分</title><link>http://www.cnblogs.com/tmfc/archive/2008/07/29/1216384.html</link><dc:creator>tmfc</dc:creator><author>tmfc</author><pubDate>Tue, 29 Jul 2008 05:53:00 GMT</pubDate><guid>http://www.cnblogs.com/tmfc/archive/2008/07/29/1216384.html</guid><wfw:comment>http://www.cnblogs.com/tmfc/comments/1216384.html</wfw:comment><comments>http://www.cnblogs.com/tmfc/archive/2008/07/29/1216384.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnblogs.com/tmfc/comments/commentRss/1216384.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/tmfc/services/trackbacks/1216384.html</trackback:ping><description><![CDATA[摘要: 翻译自Maoni's WebLog 文章Using GC Efficiently – Part 1，Maoni是微软CLR Performance组的成员 

本文的目标是解释一些东西的代价好让你可以更好使用托管内存-而不是解释GC本身-只是解释如何使用它而已。我假设绝大多数人对于使用垃圾收集感兴趣，而不想自己实现一个。本文假设读者对GC有基础的了解，如果你需要一些关于GC的背景知识，Jeff Richter写了两篇非常好的MSDN文章，1和2。 

首先我会关注工作站级类型的GC（Wks GC），然后我会解释服务器类型的GC（Svr GC）与前者的区别和你该用哪个（但是通常情况下你不需要选择，而我也会解释为什么你不需要）。 

&nbsp;&nbsp;<a href='http://www.cnblogs.com/tmfc/archive/2008/07/29/1216384.html'>阅读全文</a><img src ="http://www.cnblogs.com/tmfc/aggbug/1216384.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47960/" target="_blank">火狐3.5版被指推出太匆忙：存在50多个漏洞</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>企业架构应用模式读书笔记（四）</title><link>http://www.cnblogs.com/tmfc/archive/2006/12/25/603413.html</link><dc:creator>tmfc</dc:creator><author>tmfc</author><pubDate>Mon, 25 Dec 2006 12:55:00 GMT</pubDate><guid>http://www.cnblogs.com/tmfc/archive/2006/12/25/603413.html</guid><wfw:comment>http://www.cnblogs.com/tmfc/comments/603413.html</wfw:comment><comments>http://www.cnblogs.com/tmfc/archive/2006/12/25/603413.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/tmfc/comments/commentRss/603413.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/tmfc/services/trackbacks/603413.html</trackback:ping><description><![CDATA[摘要: Web展现<br>最近几年企业应用中最大的改变无疑是基于Web浏览器的用户界面的崛起。优势在于：不需要部署任何客户端软件，一致的UI使用方法，便利的全球访问。<br><br>通常Web服务器上有着各种各样的配置文件来确定哪些URL该由那个程序处理，一个Web服务器可以支持多种程序。它的工作只是解释请求（request）的URL并把控制交给服务器端程序。<br><br>服务器端程序基本上可以分为两种基本的类型：script和server page&nbsp;&nbsp;<a href='http://www.cnblogs.com/tmfc/archive/2006/12/25/603413.html'>阅读全文</a><img src ="http://www.cnblogs.com/tmfc/aggbug/603413.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47959/" target="_blank">Google对手机搜索进行优化升级</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>企业架构应用模式读书笔记（三）下</title><link>http://www.cnblogs.com/tmfc/archive/2006/12/19/597154.html</link><dc:creator>tmfc</dc:creator><author>tmfc</author><pubDate>Tue, 19 Dec 2006 11:54:00 GMT</pubDate><guid>http://www.cnblogs.com/tmfc/archive/2006/12/19/597154.html</guid><wfw:comment>http://www.cnblogs.com/tmfc/comments/597154.html</wfw:comment><comments>http://www.cnblogs.com/tmfc/archive/2006/12/19/597154.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/tmfc/comments/commentRss/597154.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/tmfc/services/trackbacks/597154.html</trackback:ping><description><![CDATA[摘要: 结构映射模式<br>当人们谈论对象-关系映射时，大部分的人都是在讨论结构映射模式，大部分模式都和Table Data Gateway无关,某些可以用在Row Data Gateway或Active Record上，大部分都需要用在Data Mapper上。<br><br>映射关系<br>关键点是联系对象和关系的不同的方法，这会引出两个问题。第一个问题在表现（representation）上，对象保持引用而关系数据库保持的是键的关联。第二个问题是，对象可以很容易的使用集合来保持多个与它有关的其他对象的引用，但是关系数据库却正好相反，相关对象会有一个到主对象的反向的引用。比如一个部门有多个员工，部门对象持有多个员工的引用，但是再关系数据库中，每个员工的数据行中会有一个到部门表的外键连接，而不是在部门表中引用多个员工（因为关系数据库不支持这样做）。<br><br>解决表现问题的方法是在对象中保持一个Identity Field，使用它来作为关系数据库的键。当你访问数据库中的外键时，你使用的是Foreign Key Mapping来连接适当的对象间的连接。如果你没有在Identit&nbsp;&nbsp;<a href='http://www.cnblogs.com/tmfc/archive/2006/12/19/597154.html'>阅读全文</a><img src ="http://www.cnblogs.com/tmfc/aggbug/597154.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47958/" target="_blank">风声又起 Windows 7 RTM版7月13日完成</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>企业架构应用模式读书笔记（三）上</title><link>http://www.cnblogs.com/tmfc/archive/2006/12/18/596130.html</link><dc:creator>tmfc</dc:creator><author>tmfc</author><pubDate>Mon, 18 Dec 2006 12:29:00 GMT</pubDate><guid>http://www.cnblogs.com/tmfc/archive/2006/12/18/596130.html</guid><wfw:comment>http://www.cnblogs.com/tmfc/comments/596130.html</wfw:comment><comments>http://www.cnblogs.com/tmfc/archive/2006/12/18/596130.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cnblogs.com/tmfc/comments/commentRss/596130.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/tmfc/services/trackbacks/596130.html</trackback:ping><description><![CDATA[摘要: 架构模式<br>架构模式的选择对后续的程序开发有着深远的影响并且难以切换（难以从一种模式重构到另一种），所以必须仔细的选择架构模式。<br><br>将SQL语句嵌在逻辑代码中会显得非常的丑陋，DBA也希望能够通过了解SQL语句来决定怎样对数据库进行索引，所有这一切的原因让我们倾向于将访问数据库的SQL语句从领域逻辑中分离出来。<br><br>以数据表结构来组织类的结构是一个好主意，这样类和数据表可以一一对应。这些类组成了一个数据表的Gateway，Gateway主要分为两种，Row Data Gateway和Table Data Gateway。<br><br>Row Data Gateway中，数据表中的每一行对应于一个对象实例，比较自然的符合了面向对象的思想。<br><br>Table Data Gateway中，整个数据表只需要一个对应的对象实例。而用来储存数据的则是Record Set，一个通用的数据结构，适合于任何一张表。&nbsp;&nbsp;<a href='http://www.cnblogs.com/tmfc/archive/2006/12/18/596130.html'>阅读全文</a><img src ="http://www.cnblogs.com/tmfc/aggbug/596130.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47957/" target="_blank">乔布斯和埃利森</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>企业应用架构模式读书笔记（二）</title><link>http://www.cnblogs.com/tmfc/archive/2006/10/10/525391.html</link><dc:creator>tmfc</dc:creator><author>tmfc</author><pubDate>Tue, 10 Oct 2006 09:09:00 GMT</pubDate><guid>http://www.cnblogs.com/tmfc/archive/2006/10/10/525391.html</guid><wfw:comment>http://www.cnblogs.com/tmfc/comments/525391.html</wfw:comment><comments>http://www.cnblogs.com/tmfc/archive/2006/10/10/525391.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/tmfc/comments/commentRss/525391.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/tmfc/services/trackbacks/525391.html</trackback:ping><description><![CDATA[摘要: 三个主要的模式：Transaction Script，Domain Model，Table Model<br><br>最简单的方法是使用Transaction Script,Transaction Script本质上就是从表现层接受输入，进行验证和计算，保存进数据库，调用其他外部操作并且返回更多的信息，帮助计算并组织数据给表现层的过程。基本上就是将用户可能做的事情组织成一个个的函数，所以可以将其想象成动作的脚本，或者一个个事务。<br><br>Transaction Script的优势：<br><br>是几乎每个开发者都了解的简单的过程模式 <br>配合使用简单的数据库层模式，如Row Data Gateway，Table Data Gateway时工作的很好 <br>非常明显的边界:以打开事务开始，关闭事务结束。<br>但是，在领域逻辑变得越来越复杂时，Transaction Script也会有很多劣势，会出现很多难以消除的重复代码，子方法越来越多后，缺乏清晰的结构。<br><br>这个时候，就该以面向对象方式处理逻辑的Domain Model模式登场了。我们主&nbsp;&nbsp;<a href='http://www.cnblogs.com/tmfc/archive/2006/10/10/525391.html'>阅读全文</a><img src ="http://www.cnblogs.com/tmfc/aggbug/525391.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47956/" target="_blank">Xbox Live将投放Silverlight广告</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>企业应用架构模式读书笔记（一）</title><link>http://www.cnblogs.com/tmfc/archive/2006/09/26/515587.html</link><dc:creator>tmfc</dc:creator><author>tmfc</author><pubDate>Tue, 26 Sep 2006 13:33:00 GMT</pubDate><guid>http://www.cnblogs.com/tmfc/archive/2006/09/26/515587.html</guid><wfw:comment>http://www.cnblogs.com/tmfc/comments/515587.html</wfw:comment><comments>http://www.cnblogs.com/tmfc/archive/2006/09/26/515587.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cnblogs.com/tmfc/comments/commentRss/515587.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/tmfc/services/trackbacks/515587.html</trackback:ping><description><![CDATA[摘要: 分层是用来分割复杂软件系统的最常用手段之一。如：操作系统建立在设备驱动和CPU指令上；FTP建立在TCP层之上，TCP建立在IP层上，IP建立在以太网上。<br><br>把分层结构想像成蛋糕，每一层都建立在它下一层上。意味着上层使用下层的服务，但是对更底层的服务一无所知。如，第四层使用第三层定义的服务，第三层使用第二层的服务，但是第四层并不了解第二层的服务。<br><br>分层的优势：<br><br>可以单独了解一层的东西，而不用管其他层 <br>可以替换某一层的实现 <br>最小化层之间的依赖 <br>为建立标准做好准备 <br>一个低层可以被很多高层使用（提高复用率）<br>分层的劣势：<br><br>分层对部分东西，而不是全部东西，有一个良好的封装。有时会引起连锁的更改，如，为了在用户界面上多显示一个属性，必须更改从数据库到UI之间的所有层。 <br>额外的层会降低性能<br>&nbsp;&nbsp;<a href='http://www.cnblogs.com/tmfc/archive/2006/09/26/515587.html'>阅读全文</a><img src ="http://www.cnblogs.com/tmfc/aggbug/515587.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47951/" target="_blank">Debian无视GNU创始人警告 接受Mono</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>对[解耦的故事]的一些补充</title><link>http://www.cnblogs.com/tmfc/archive/2006/09/18/507264.html</link><dc:creator>tmfc</dc:creator><author>tmfc</author><pubDate>Mon, 18 Sep 2006 03:45:00 GMT</pubDate><guid>http://www.cnblogs.com/tmfc/archive/2006/09/18/507264.html</guid><wfw:comment>http://www.cnblogs.com/tmfc/comments/507264.html</wfw:comment><comments>http://www.cnblogs.com/tmfc/archive/2006/09/18/507264.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/tmfc/comments/commentRss/507264.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/tmfc/services/trackbacks/507264.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp; 我的前两篇blog原意是想通过一个故事说明委托的来龙去脉，但是后来的主题却变成了解耦的一些方法介绍，对于委托本身的关注反而少了，加上编故事的水平不高，有点虎头蛇尾的感觉，大家见谅，以后有机会再来好好整理以下。</p> <p>在网上找几篇好文来补充一下委托的内容：</p> <p>台湾msdn的大内高手专栏，蔡学镛先生的好文（繁体+台湾术语，希望大家看得懂）：</p> <p><a href="http://www.microsoft.com/taiwan/msdn/columns/DoNet/FunctionPointer_1.htm">函数指针进化论（上）</a></p> <p><a href="http://www.microsoft.com/taiwan/msdn/columns/DoNet/FunctionPointer_2.htm">函数指针进化论（下）</a></p><img src ="http://www.cnblogs.com/tmfc/aggbug/507264.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47950/" target="_blank">iPhone 3GS首发日创AT&T多项纪录</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item></channel></rss>