<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.microsoft.co.il/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Gil Fink&amp;#39;s Blog : AppFabric</title><link>http://blogs.microsoft.co.il/blogs/gilf/archive/tags/AppFabric/default.aspx</link><description>Tags: AppFabric</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>Cache Layer</title><link>http://blogs.microsoft.co.il/blogs/gilf/archive/2010/06/11/cache-layer.aspx</link><pubDate>Fri, 11 Jun 2010 15:51:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:653879</guid><dc:creator>Gil Fink</dc:creator><slash:comments>3</slash:comments><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/gilf/commentapi.aspx?PostID=653879</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/gilf/archive/2010/06/11/cache-layer.aspx#comments</comments><description>&lt;h1&gt;&lt;strong&gt;Cache Layer&lt;/strong&gt;&lt;/h1&gt;
&lt;p&gt;Lately I found myself in some architecture consulting sessions at &lt;br /&gt;some customers. In every one of those customers I found myself &lt;br /&gt;explaining how to implement a &lt;strong&gt;cache layer&lt;/strong&gt; in order to decrease &lt;br /&gt;the amount of round trips to the database and for better scalability. &lt;br /&gt;In this post I’ll try to explain in high level how to build a &lt;strong&gt;cache layer&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Deciding to Build a Cache Layer&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Every application that performance is important to its developers &lt;br /&gt;and managers must contain some sort of &lt;strong&gt;caching&lt;/strong&gt;. The &lt;strong&gt;cache &lt;/strong&gt;is a very&lt;br /&gt;fast in memory resources container which holds relevant data close to the &lt;br /&gt;application itself. I explained in the past the candidate resource&amp;nbsp;types &lt;br /&gt;for &lt;strong&gt;caching&lt;/strong&gt; in &lt;a title="Data Types for Caching" href="http://blogs.microsoft.co.il/blogs/gilf/archive/2009/10/06/data-types-for-caching.aspx" target="_blank"&gt;&lt;strong&gt;this post&lt;/strong&gt;&lt;/a&gt;. So you have decide to implement &lt;strong&gt;caching&lt;/strong&gt; &lt;br /&gt;in your application, what next? &lt;br /&gt;The answer is simple – create a &lt;strong&gt;cache layer&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Cache Layer Position in Application Architecture&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;The next thing to understand is the&amp;nbsp;location of the &lt;strong&gt;cache layer &lt;/strong&gt;in your&lt;br /&gt;application. The next diagram shows were you should place the &lt;strong&gt;cache layer&lt;/strong&gt;: &lt;br /&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/gilf/CacheLayer_13CF1746.png"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" title="Cache Layer" border="0" alt="Cache Layer" src="http://blogs.microsoft.co.il/blogs/gilf/CacheLayer_thumb_71970BBF.png" width="427" height="307" /&gt;&lt;/a&gt; &lt;br /&gt;As you can see the &lt;strong&gt;cache layer&lt;/strong&gt;&amp;#39;s best place is between the business&lt;br /&gt;logic layer and the data access layer. The business logic responsibility &lt;br /&gt;will be to check whether an entity or&amp;nbsp;some data exists in the &lt;strong&gt;cache&lt;/strong&gt; &lt;br /&gt;and then if not to make a round trip to the database (using the data &lt;br /&gt;access layer of course) and bring the data to application. When the data &lt;br /&gt;exists we first put it in the &lt;strong&gt;cache&lt;/strong&gt; and then we have the data in hand &lt;br /&gt;and also it exists&amp;nbsp;our the &lt;strong&gt;cache&lt;/strong&gt;. This is called the &lt;strong&gt;cache retrieval pattern&lt;/strong&gt;. &lt;br /&gt;There are many ways to create a &lt;strong&gt;cache layer&lt;/strong&gt; for example by using &lt;br /&gt;distributed cache like AppFabric caching services, Enterprise Library &lt;br /&gt;Caching Application Block, ASP.NET caching and many more &lt;strong&gt;cache&lt;/strong&gt; services. &lt;br /&gt;It’s your responsibility to evaluate which &lt;strong&gt;cache&lt;/strong&gt; technology to use in your &lt;br /&gt;application by answering to your application requirements.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Caching&lt;/strong&gt; in applications is a very vital way to improve the application &lt;br /&gt;performance and make the application more scalable. It’s our &lt;br /&gt;responsibility to create a &lt;strong&gt;cache layer&lt;/strong&gt; which will exists between &lt;br /&gt;your business logic and data access layer. By using the &lt;strong&gt;cache retrieval &lt;br /&gt;pattern &lt;/strong&gt;you will be able to use your&lt;strong&gt; cache &lt;/strong&gt;in a very efficient way.&lt;/p&gt;&lt;a style="DISPLAY:none;" href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=3672056" rel="tag"&gt;CodeProject&lt;/a&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=653879" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Design+Patterns/default.aspx">Design Patterns</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Cache/default.aspx">Cache</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/AppFabric/default.aspx">AppFabric</category></item><item><title>Windows Server AppFabric</title><link>http://blogs.microsoft.co.il/blogs/gilf/archive/2009/12/04/windows-server-appfabric.aspx</link><pubDate>Fri, 04 Dec 2009 20:07:29 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:458232</guid><dc:creator>Gil Fink</dc:creator><slash:comments>1</slash:comments><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/gilf/commentapi.aspx?PostID=458232</wfw:comment><comments>http://blogs.microsoft.co.il/blogs/gilf/archive/2009/12/04/windows-server-appfabric.aspx#comments</comments><description>&lt;h1&gt;&lt;strong&gt;Windows Server AppFabric&lt;/strong&gt;&lt;/h1&gt;  &lt;p&gt;One of the announcements &lt;a href="http://blogs.microsoft.co.il/blogs/gilf/af88a9eae398.NetFrameworkNewLogo_5A12FF72.gif"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;margin-left:0px;border-top:0px;margin-right:0px;border-right:0px;" title="Windows Server AppFabric" border="0" alt="Windows Server AppFabric" align="right" src="http://blogs.microsoft.co.il/blogs/gilf/0d2ac737799c.NetFrameworkNewLogo_thumb_0171F3FD.gif" width="240" height="74" /&gt;&lt;/a&gt;     &lt;br /&gt;in the &lt;strong&gt;PDC&lt;/strong&gt; was the     &lt;br /&gt;release of beta1 for     &lt;br /&gt;a new windows server    &lt;br /&gt;which is called &lt;strong&gt;AppFabric&lt;/strong&gt;.&lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;What is AppFabric?&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;From the &lt;strong&gt;AppFabric&lt;/strong&gt; site – “&lt;em&gt;Windows Server &lt;strong&gt;AppFabric&lt;/strong&gt; is a set       &lt;br /&gt;of integrated technologies that make it easier to build, scale and       &lt;br /&gt;manage Web and composite applications that run on IIS.&lt;/em&gt;”&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;AppFabric&lt;/strong&gt; is a collection of technologies in one consolidated place.     &lt;br /&gt;These technologies are &lt;strong&gt;Microsoft Distributed Cache&lt;/strong&gt; (aka “&lt;strong&gt;Velocity&lt;/strong&gt;”),    &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/netframework/aa663328.aspx"&gt;&lt;strong&gt;Windows Workflow Foundation&lt;/strong&gt;&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/netframework/aa663324.aspx"&gt;&lt;strong&gt;Windows Communication Foundation&lt;/strong&gt;&lt;/a&gt;    &lt;br /&gt;(aka “&lt;strong&gt;Dublin&lt;/strong&gt;”). &lt;/p&gt;  &lt;p&gt;For more details go to &lt;a title="Windows Server AppFabric Site" href="http://msdn.microsoft.com/en-us/windowsserver/ee695849.aspx" target="_blank"&gt;&lt;strong&gt;Windows Server AppFabric&lt;/strong&gt;&lt;/a&gt; site.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:left;margin:0px;padding:4px 4px 4px 4px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/gilf/archive/2009/12/04/windows-server-appfabric.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/gilf/archive/2009/12/04/windows-server-appfabric.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" alt="DotNetKicks Image" border="0/" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=458232" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Velocity/default.aspx">Velocity</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/Microsoft+Distributed+Cache/default.aspx">Microsoft Distributed Cache</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/WF/default.aspx">WF</category><category domain="http://blogs.microsoft.co.il/blogs/gilf/archive/tags/AppFabric/default.aspx">AppFabric</category></item></channel></rss>