<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CE4ASHo7eyp7ImA9WhRVE0s.&quot;"><id>tag:blogger.com,1999:blog-5693117124170619532</id><updated>2012-01-12T05:09:09.403-05:00</updated><category term="Visual Studio" /><category term="MVVM" /><category term="RTM" /><category term="Prism" /><category term="RIA" /><category term="ASP.NET" /><category term="XAML" /><category term="Testing" /><category term="MSBUILD" /><category term="MSDN" /><category term="Visual Studio 2008" /><category term="SQL Server Express" /><category term="Editorial" /><category term=".net" /><category term="SketchFlow" /><category term="Azure SDK" /><category term="LINQ" /><category term="SCM" /><category term="David Makogon" /><category term="SDS" /><category term="VMWare" /><category term="refactoring" /><category term="IEnumerable" /><category term="FredNUG" /><category term="object" /><category term="Design" /><category term="Deferred Execution" /><category term="IIS" /><category term="C# 3.0" /><category term="Virtual Server" /><category term="RockNUG" /><category term="Windows Phone 7" /><category term="Expression" /><category term="persistence" /><category term="Lambda" /><category term="VS2010" /><category term="Fowler" /><category term="Blog" /><category term="S+S" /><category term="MIX" /><category term="Windows Mobile" /><category term="Vista" /><category term="MVC" /><category term="PaaS" /><category term="CompositeWPF" /><category term="Voting" /><category term="AppFabric" /><category term="Survey" /><category term="Infopath" /><category term="Security" /><category term="BizSpark" /><category term="SOA" /><category term="Azure" /><category term="XNA" /><category term="Visual Studio 2010" /><category term="Live Services" /><category term="SaaS" /><category term="Entity Model" /><category term="Conference" /><category term="Testability" /><category term="SQL Azure" /><category term="Azure Portal" /><category term="Windows Azure" /><category term="Codename Dallas" /><category term="Parallel Computing" /><category term="User Group" /><category term="Windows 2008" /><category term="Virtualization" /><category term="Supervising Controller" /><category term="Animation" /><category term="Design Patterns" /><category term="Application Architecture" /><category term="teaching" /><category term="Windows 7" /><category term="Blend" /><category term="Governance" /><category term="REST" /><category term="Cloud Computing" /><category term="Passive View" /><category term="RIA Services" /><category term="oop" /><category term=".NET Services" /><category term="Touch" /><category term="SharedView" /><category term="VirtualPC" /><category term="WCF" /><category term="oo" /><category term=".NET 4.0" /><category term="PDC" /><category term="Load Testing" /><category term="orm" /><category term="Azure Guest OS" /><category term="Commerce Server" /><category term="Methodologies" /><category term="Training" /><category term="WPF" /><category term="Silverlight" /><category term="Azure Billing" /><category term="C# 4.0" /><title>RDA Architectural Guidance Practice Group Blog</title><subtitle type="html">Discussion around thought leadership, proven practices and patterns, and the latest .NET technologies being applied to our clients' projects.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://architecture-blog.rdacorp.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://architecture-blog.rdacorp.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Derek Strausbaugh</name><uri>http://www.blogger.com/profile/07633589552840173862</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>123</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/RdaArchitectureEvangelistTeamBlog" /><feedburner:info uri="rdaarchitectureevangelistteamblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CEECSXo9fyp7ImA9Wx5aFkw.&quot;"><id>tag:blogger.com,1999:blog-5693117124170619532.post-458825471023173606</id><published>2010-11-12T20:08:00.007-05:00</published><updated>2010-11-12T20:44:28.467-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-12T20:44:28.467-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server Express" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2010" /><title>SQL Server Express: Failed to generate a user instance of SQL Server error</title><content type="html">&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: arial;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Tahoma;font-size:85%;color:#000000;"&gt;I ran into a quirky issue  while re-tooling from VS 2008 to VS 2010.  In case anyone runs into it,  I thought it might be good to have a heads up.  Instead of running them  side-by-side, I completely uninstalled VS 2008 and did a clean install of VS  2010.  As it turns out, that caused a bit of a problem with SQL Server express.  This one was a fun  one to track down, so some background information is in order.&lt;/span&gt; &lt;div dir="ltr"&gt; &lt;/div&gt; &lt;div dir="ltr"&gt;&lt;span style="font-family:tahoma;font-size:85%;"&gt;I was working on a proof-of-concept and  needed a data import for some sample code into SQL Server express.  Why not  just use the regular edition of SQL Server?  The folks who wrote the sample code probably didn't want to assume that everyone had a regular SQL Server instance running in their dev environment and didn't want to exclude anyone  from using their code.  It so happens that I am running a regular SQL Server instance on my  machine, but I wanted to accurately repro the setup for for the sample code based the provided instructions, which called for SQL Server express. I probably  could have just cheated and imported the database into my regular SQL Server  instance, but that would have also  introduced more variables into the equation to validate my POC than I was willing to deal with.&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr"&gt; &lt;/div&gt; &lt;div dir="ltr"&gt;&lt;span style="font-family:tahoma;font-size:85%;"&gt;Every time I tried to access the imported  SQL data, I kept getting this error:&lt;/span&gt;&lt;/div&gt;  &lt;p&gt;&lt;em&gt;Failed to generate a user instance of SQL Server due to a failure in  starting the process for the user instance&lt;/em&gt;&lt;/p&gt;  &lt;div dir="ltr"&gt;&lt;span style="font-family:tahoma;font-size:85%;"&gt;I checked the network stack, security  permissions, everything.  As it turns out, the SQL Server express persists some files in your app data directory that don't get cleaned out when you uninstall and  reinstall.  It's a problem when you attempt to spin up a user instance  because a file already exists in your app data directory that SQL Server express  is attempting to re-create. It might have been a bit easier to troubleshoot if it told you about the file it failed on in the initial error message.  Instead, it just reports on th&lt;/span&gt;&lt;span style="font-family:tahoma;font-size:85%;"&gt;e failed instance.&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr"&gt; &lt;/div&gt; &lt;div dir="ltr"&gt;&lt;span style="font-family:tahoma;font-size:85%;"&gt;Solution?  Delete the SQLEXPRESS folder  under &lt;span style="font-family:Times New Roman;font-size:100%;"&gt;C:\Documents and  Settings\&lt;i&gt;username&lt;/i&gt;\Local Settings\Application Data\Microsoft\Microsoft SQL  Server Data\ &lt;span style="font-size:85%;"&gt;&lt;span style="font-family: arial;"&gt;so that SQL Server express can re-create the files.  If you've got some things in there that you want keep using, you might have to do more precise surgery and find the offending files.  In my case, I didn't.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div dir="ltr"&gt; &lt;/div&gt; &lt;div dir="ltr"&gt;&lt;span style="font-family:tahoma;font-size:85%;"&gt;Did I figure this one out all by my  lonesome?  Not entirely.  I still had to dig through the error logs to find the problem, but I'll give  credit where credit is due for the solution:&lt;/span&gt;&lt;/div&gt; &lt;div dir="ltr"&gt; &lt;/div&gt; &lt;div dir="ltr"&gt;&lt;a href="http://forums.asp.net/t/1377174.aspx"&gt;http://forums.asp.net/t/1377174.aspx&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5693117124170619532-458825471023173606?l=architecture-blog.rdacorp.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=zvSGRkhBAbY:FJkXIlFZeVc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=zvSGRkhBAbY:FJkXIlFZeVc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=zvSGRkhBAbY:FJkXIlFZeVc:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=zvSGRkhBAbY:FJkXIlFZeVc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=zvSGRkhBAbY:FJkXIlFZeVc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=zvSGRkhBAbY:FJkXIlFZeVc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=zvSGRkhBAbY:FJkXIlFZeVc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=zvSGRkhBAbY:FJkXIlFZeVc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RdaArchitectureEvangelistTeamBlog/~4/zvSGRkhBAbY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://architecture-blog.rdacorp.com/feeds/458825471023173606/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5693117124170619532&amp;postID=458825471023173606" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/458825471023173606?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/458825471023173606?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RdaArchitectureEvangelistTeamBlog/~3/zvSGRkhBAbY/sql-server-express-failed-to-generate.html" title="SQL Server Express: Failed to generate a user instance of SQL Server error" /><author><name>Dwayne Taylor</name><uri>http://www.blogger.com/profile/01694362898053460293</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://architecture-blog.rdacorp.com/2010/11/sql-server-express-failed-to-generate.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MNSHc7eyp7ImA9Wx5bEkQ.&quot;"><id>tag:blogger.com,1999:blog-5693117124170619532.post-7344075457661402012</id><published>2010-10-28T14:44:00.001-04:00</published><updated>2010-10-28T14:44:59.903-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-28T14:44:59.903-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone 7" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title>Windows Phone 7 Trial API Walkthrough</title><content type="html">&lt;p&gt;The Windows Phone 7 Trial Mode functionality is a power and simple tool. For those unfamiliar, the Windows Phone Marketplace allows for developers to list their applications in three ways: Free, Buy, and Try-Before-Buy. In order to be more marketable, it is usually a better option to offer customers the ability to try out an application before they give you their hard earned money. Another difference between this approach and other phone marketplaces is the user experience for upgrading their app from trial to full version. It is a simple two-click process, one click to upgrade, the other to confirm the purchase.&lt;/p&gt;  &lt;p&gt;Implementing the trial mode code is a very straight forward exercise. Here is an example:&lt;/p&gt; Microsoft.Phone.Marketplace.LicenseInformation license = new Microsoft.Phone.Marketplace.LicenseInformation();   &lt;br /&gt;  &lt;p&gt;public string ApplicationTitle    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; get     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (license.IsTrial() == true)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return &amp;quot;My App (Trial Version)&amp;quot;;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return &amp;quot;My App&amp;quot;;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p&gt;The above example demonstrates how we can change the way the app behaves for a trial user versus a fully licensed user. In this case we are changing the Application Title of the app. A trial user will see “My App (Trial Version)” at the top of their screen and a fully licensed user will see “My App”. Not very limiting, I know, but it demonstrates how easy it is to implement this in your code.&lt;/p&gt;  &lt;p&gt;The code implementation is simple because Microsoft is doing much of the heavy lifting here. The Microsoft.Phone.Marketplace.LicenseInformation class uses Microsoft’s Zune Marketplace to check the license currently installed on the phone. It returns true if the license is a trial version and false if it is the full version. This leaves the developer to spend writing code and polishing the user experience rather than writing their own licensing services or writing a completely separate trial version of their applications.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5693117124170619532-7344075457661402012?l=architecture-blog.rdacorp.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=KsGwqDb91yY:BGyL-RjGXCw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=KsGwqDb91yY:BGyL-RjGXCw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=KsGwqDb91yY:BGyL-RjGXCw:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=KsGwqDb91yY:BGyL-RjGXCw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=KsGwqDb91yY:BGyL-RjGXCw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=KsGwqDb91yY:BGyL-RjGXCw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=KsGwqDb91yY:BGyL-RjGXCw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=KsGwqDb91yY:BGyL-RjGXCw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RdaArchitectureEvangelistTeamBlog/~4/KsGwqDb91yY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://architecture-blog.rdacorp.com/feeds/7344075457661402012/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5693117124170619532&amp;postID=7344075457661402012" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/7344075457661402012?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/7344075457661402012?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RdaArchitectureEvangelistTeamBlog/~3/KsGwqDb91yY/windows-phone-7-trial-api-walkthrough.html" title="Windows Phone 7 Trial API Walkthrough" /><author><name>Jason Petrin</name><uri>http://www.blogger.com/profile/03821658529282328459</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://architecture-blog.rdacorp.com/2010/10/windows-phone-7-trial-api-walkthrough.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEHQ3Y4cSp7ImA9Wx5SEE4.&quot;"><id>tag:blogger.com,1999:blog-5693117124170619532.post-3443948016504737792</id><published>2010-08-05T14:57:00.001-04:00</published><updated>2010-08-05T14:57:12.839-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-05T14:57:12.839-04:00</app:edited><title>IE8 and ASP.NET Sessions</title><content type="html">&lt;p&gt;One behavior that seems to have inexplicably changed between IE8 and IE7 is the handling of session cookies. In IE7 (and 6) each browser instance and tab had it’s own session cookie and, as a result, session on the server. Not so in IE8! Every tab and browser instance (with some minor exceptions) now shares the same session cookie. When designing ASP.NET applications, this is something you need to be aware of. If you, for example, store an item currently being edited in session state and a user opens two browsers to edit two different entities, expect all kinds of strange results. If you want to test the behavior of a specific browser to see for yourself, &lt;a href="http://www.enhanceie.com/test/sessions/" target="_blank"&gt;visit this page&lt;/a&gt;. In my quick test, the latest version of Chrome behaves just like IE8.&lt;/p&gt;  &lt;p&gt;So how do you make sure an application can support multiple browser windows? Well, there are a couple options, none of which is completely satisfying:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Eliminate the use of Session State and switch to cookies, hidden form elements or some other client side mechanism.&lt;/li&gt;    &lt;li&gt;Enable &lt;a href="http://msdn.microsoft.com/en-us/library/aa479314.aspx" target="_blank"&gt;cookiesless sessions&lt;/a&gt; (URL rewriting). Beware that this approach has some &lt;a href="http://msdn.microsoft.com/en-us/library/aa479315.aspx#cookielss_topic5" target="_blank"&gt;security implications&lt;/a&gt; as well as some practical effects on things like bookmarking and URL sharing.&lt;/li&gt;    &lt;li&gt;Train your users to select “New Session” from the File menu in IE8. Not exactly easy since the menus are hidden by default. If you enable them you’ll notice that you have both “New Window” and “New Session” as options. The latter will allow multiple browsers running different sessions. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The moral of the story is that if you decide to use session state, be sure to plan for users opening more than one browser window. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5693117124170619532-3443948016504737792?l=architecture-blog.rdacorp.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=5RP93wG6hfY:8B9pEQ_gUCc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=5RP93wG6hfY:8B9pEQ_gUCc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=5RP93wG6hfY:8B9pEQ_gUCc:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=5RP93wG6hfY:8B9pEQ_gUCc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=5RP93wG6hfY:8B9pEQ_gUCc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=5RP93wG6hfY:8B9pEQ_gUCc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=5RP93wG6hfY:8B9pEQ_gUCc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=5RP93wG6hfY:8B9pEQ_gUCc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RdaArchitectureEvangelistTeamBlog/~4/5RP93wG6hfY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://architecture-blog.rdacorp.com/feeds/3443948016504737792/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5693117124170619532&amp;postID=3443948016504737792" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/3443948016504737792?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/3443948016504737792?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RdaArchitectureEvangelistTeamBlog/~3/5RP93wG6hfY/ie8-and-aspnet-sessions.html" title="IE8 and ASP.NET Sessions" /><author><name>Steve</name><uri>http://www.blogger.com/profile/10782174116130454031</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="33" height="30" src="http://2.bp.blogspot.com/_R3fY2PR0dPY/S4SDxTUyKMI/AAAAAAAAAFo/orjNA1Hv810/S220/Steve.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://architecture-blog.rdacorp.com/2010/08/ie8-and-aspnet-sessions.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08NQ3g8fSp7ImA9WxFUFU8.&quot;"><id>tag:blogger.com,1999:blog-5693117124170619532.post-6709557427760771291</id><published>2010-06-25T23:11:00.001-04:00</published><updated>2010-06-25T23:11:32.675-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-25T23:11:32.675-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Azure Billing" /><category scheme="http://www.blogger.com/atom/ns#" term="David Makogon" /><category scheme="http://www.blogger.com/atom/ns#" term="SQL Azure" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><title>SQL Azure 50GB Databases Now Available</title><content type="html">&lt;p&gt;Ahead of the promised June 28 target, the SQL Azure team updated SQL Azure with Service Update 3 (SU3), providing new database sizes up to 50GB.&lt;/p&gt;  &lt;p&gt;Web Edition databases can now be scaled to either 1GB or 5GB, while Business Edition databases have increments of 10GB, 20GB, 30GB, 40GB, and 50GB.&lt;/p&gt;  &lt;p&gt;The Web Edition tiers are $9.99 and $49.95 monthly, while the Business Edition tiers are increments of $99.99.&lt;/p&gt;  &lt;p&gt;The new database tiers come with a new pricing model that evaluates your maximum daily usage, and each day’s cost accrues at the appropriate tier, based on the database edition chosen. For instance, if a 20GB Business Edition database never exceeds 10GB, its daily rate accrues at the 10GB tier. On days in which the database exceeds 10GB, it accrues at the 20GB tier.&lt;/p&gt;  &lt;p&gt;For more details, see my post &lt;a href="http://www.davidmakogon.com/2010/06/sql-azure-50gb-is-live.html" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5693117124170619532-6709557427760771291?l=architecture-blog.rdacorp.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=W5e_Z2WyYs4:Uja6ukb0uew:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=W5e_Z2WyYs4:Uja6ukb0uew:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=W5e_Z2WyYs4:Uja6ukb0uew:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=W5e_Z2WyYs4:Uja6ukb0uew:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=W5e_Z2WyYs4:Uja6ukb0uew:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=W5e_Z2WyYs4:Uja6ukb0uew:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=W5e_Z2WyYs4:Uja6ukb0uew:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=W5e_Z2WyYs4:Uja6ukb0uew:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RdaArchitectureEvangelistTeamBlog/~4/W5e_Z2WyYs4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://architecture-blog.rdacorp.com/feeds/6709557427760771291/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5693117124170619532&amp;postID=6709557427760771291" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/6709557427760771291?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/6709557427760771291?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RdaArchitectureEvangelistTeamBlog/~3/W5e_Z2WyYs4/sql-azure-50gb-databases-now-available.html" title="SQL Azure 50GB Databases Now Available" /><author><name>David Makogon</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://architecture-blog.rdacorp.com/2010/06/sql-azure-50gb-databases-now-available.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEGRHY7eyp7ImA9WxFUE00.&quot;"><id>tag:blogger.com,1999:blog-5693117124170619532.post-5816377321912581866</id><published>2010-06-23T10:50:00.001-04:00</published><updated>2010-06-23T10:50:25.803-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-23T10:50:25.803-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="David Makogon" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure Guest OS" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><title>Azure Guest OS 1.4</title><content type="html">&lt;p&gt;A few days ago, the Windows Azure team released a new Guest OS, version 1.4. The Guest OS is what runs in Azure’s environment and hosts your running applications.&lt;/p&gt;  &lt;p&gt;The latest update includes fixes for Azure Drives and WCF Data Services. It also includes several security patches. If your Azure deployment is configured to automatically use the latest OS, then you’re already running Guest OS 1.4. This might have breaking changes for your code if you are using WCF Data Services.&lt;/p&gt;  &lt;p&gt;For more details, see my post &lt;a href="http://www.davidmakogon.com/2010/06/azure-guest-os-14.html" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5693117124170619532-5816377321912581866?l=architecture-blog.rdacorp.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=QiGoDTyE0go:PFRjzQxfBwc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=QiGoDTyE0go:PFRjzQxfBwc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=QiGoDTyE0go:PFRjzQxfBwc:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=QiGoDTyE0go:PFRjzQxfBwc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=QiGoDTyE0go:PFRjzQxfBwc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=QiGoDTyE0go:PFRjzQxfBwc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=QiGoDTyE0go:PFRjzQxfBwc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=QiGoDTyE0go:PFRjzQxfBwc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RdaArchitectureEvangelistTeamBlog/~4/QiGoDTyE0go" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://architecture-blog.rdacorp.com/feeds/5816377321912581866/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5693117124170619532&amp;postID=5816377321912581866" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/5816377321912581866?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/5816377321912581866?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RdaArchitectureEvangelistTeamBlog/~3/QiGoDTyE0go/azure-guest-os-14.html" title="Azure Guest OS 1.4" /><author><name>David Makogon</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://architecture-blog.rdacorp.com/2010/06/azure-guest-os-14.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcDQX47cCp7ImA9WxFVFUw.&quot;"><id>tag:blogger.com,1999:blog-5693117124170619532.post-8148852369489777217</id><published>2010-06-13T16:06:00.003-04:00</published><updated>2010-06-14T07:47:50.008-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-14T07:47:50.008-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MVVM" /><category scheme="http://www.blogger.com/atom/ns#" term="Testing" /><category scheme="http://www.blogger.com/atom/ns#" term="RIA" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title>Silverlight Unit Testing</title><content type="html">&lt;p&gt;I have just written a short series on doing Silverlight unit testing.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.astaticstate.com/2010/06/silverlight-unit-test-project-templates.html"&gt;Silverlight Unit Test Project Templates Compile Error&lt;/a&gt; - Shows how to solve errors that you may run into when creating Silverlight Unit Test projects.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.astaticstate.com/2010/06/silverlight-asynchronous-unit-test-mvvm.html"&gt;Silverlight Asynchronous Unit Test MVVM and RIA Services&lt;/a&gt; - Provides simple and straight forward examples to get you started. Will show you how to create unit test for your RIA Services and for your ViewModels when using MVVM.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.astaticstate.com/2010/06/silverlight-ria-services-load-and.html"&gt;Silverlight RIA Services Load and Performance Testing&lt;/a&gt; - Provides an approach for doing load and performance testing for RIA services.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5693117124170619532-8148852369489777217?l=architecture-blog.rdacorp.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=ycqzpV_hnkw:SC0-V_9pexc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=ycqzpV_hnkw:SC0-V_9pexc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=ycqzpV_hnkw:SC0-V_9pexc:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=ycqzpV_hnkw:SC0-V_9pexc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=ycqzpV_hnkw:SC0-V_9pexc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=ycqzpV_hnkw:SC0-V_9pexc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=ycqzpV_hnkw:SC0-V_9pexc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=ycqzpV_hnkw:SC0-V_9pexc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RdaArchitectureEvangelistTeamBlog/~4/ycqzpV_hnkw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://architecture-blog.rdacorp.com/feeds/8148852369489777217/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5693117124170619532&amp;postID=8148852369489777217" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/8148852369489777217?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/8148852369489777217?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RdaArchitectureEvangelistTeamBlog/~3/ycqzpV_hnkw/silverlight-unit-testing.html" title="Silverlight Unit Testing" /><author><name>Jason Apergis</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://architecture-blog.rdacorp.com/2010/06/silverlight-unit-testing.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8DQ305eip7ImA9WxFWGUk.&quot;"><id>tag:blogger.com,1999:blog-5693117124170619532.post-1787203387128379145</id><published>2010-06-07T16:45:00.001-04:00</published><updated>2010-06-07T16:51:12.322-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-07T16:51:12.322-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="David Makogon" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure SDK" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><title>Azure SDK+Tools v1.2 now available!</title><content type="html">&lt;p&gt;Today, the Azure team launched the latest SDK and related Visual Studio tools, version 1.2. This release has several features:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Built-in support for .NET 4 roles in your Azure application&lt;/li&gt;    &lt;li&gt;IntelliTrace for debugging deployed Azure applications&lt;/li&gt;    &lt;li&gt;All-new publishing wizard, allowing apps to be deployed directly to Azure without having to visit the web portal or run an external build script&lt;/li&gt;    &lt;li&gt;Built-in storage and service monitoring from Visual Studio&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The SDK is available for download &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=2274a0a8-5d37-4eac-b50a-e197dc340f6f&amp;amp;displaylang=en" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I wrote two detailed posts about this release with more information and walkthroughs:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.davidmakogon.com/2010/06/azure-sdktools-12-net-4-plus.html" target="_blank"&gt;.NET 4 and IntelliTrace&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.davidmakogon.com/2010/06/azure-sdktools-12-publishing-and.html" target="_blank"&gt;Publishing and Monitoring&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Microsoft’s Jim Nakashima provides further detail &lt;a href="http://blogs.msdn.com/b/jnak/archive/2010/05/27/using-intellitrace-to-debug-windows-azure-cloud-services.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5693117124170619532-1787203387128379145?l=architecture-blog.rdacorp.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=4OM4Idf58Kk:Ys4N9wbyjuQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=4OM4Idf58Kk:Ys4N9wbyjuQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=4OM4Idf58Kk:Ys4N9wbyjuQ:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=4OM4Idf58Kk:Ys4N9wbyjuQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=4OM4Idf58Kk:Ys4N9wbyjuQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=4OM4Idf58Kk:Ys4N9wbyjuQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=4OM4Idf58Kk:Ys4N9wbyjuQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=4OM4Idf58Kk:Ys4N9wbyjuQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RdaArchitectureEvangelistTeamBlog/~4/4OM4Idf58Kk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://architecture-blog.rdacorp.com/feeds/1787203387128379145/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5693117124170619532&amp;postID=1787203387128379145" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/1787203387128379145?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/1787203387128379145?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RdaArchitectureEvangelistTeamBlog/~3/4OM4Idf58Kk/azure-sdktools-v12-now-available.html" title="Azure SDK+Tools v1.2 now available!" /><author><name>David Makogon</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://architecture-blog.rdacorp.com/2010/06/azure-sdktools-v12-now-available.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0AEQ3g5cCp7ImA9WxFWFkQ.&quot;"><id>tag:blogger.com,1999:blog-5693117124170619532.post-2940313995506946179</id><published>2010-06-04T20:31:00.003-04:00</published><updated>2010-06-04T21:01:42.628-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-04T21:01:42.628-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Methodologies" /><category scheme="http://www.blogger.com/atom/ns#" term="Testability" /><title>Are we done testing yet?</title><content type="html">&lt;p&gt;Usually its every test manager's questions. "Are we done testing?", "Do we have enough confidence in our release"?. But on the complex projects with constant change in requirements, even Program Managers &amp;amp; Business stakeholders are "Paranoid" about test coverage and sign off. Development team will call out code complete and we have met all requirements. Test team will confirm all test cases have passed and there are no more bugs to regress and can't find any more bugs. Does this mean we are done testing? Does this mean we can sign off? &lt;/p&gt;&lt;p&gt;I think there is lot more than just code complete, feature working as defined in functional spec or business requirement document, all test cases have passed, and we have zero bugs. Below are certain guidelines for test team and engineering team so that they are ready when higher management asks the inevitable question - "Are we done testing yet?".&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Is everyone (including key stakeholders) on board with the test strategy and release criteria? &lt;/li&gt;&lt;li&gt;Is our test strategy and planning consistent with the business requirements and business understanding? &lt;/li&gt;&lt;li&gt;Are we measuring release criteria accurately and are key stakeholders in agreement with the success criteria of the test coverage and test effort? &lt;/li&gt;&lt;li&gt;Do we have standard processes and controls in place to help our engineering team understand the requirements and make changes to code base? &lt;/li&gt;&lt;li&gt;Do we have knowledge base in place to capture quality data and trends over a period of time? Can everyone on the team retrieve this information at any given time? &lt;/li&gt;&lt;li&gt;Do we have enough visibility within the organization to effectively manage the change-control process? &lt;/li&gt;&lt;li&gt;Do we do regular reviews of the product to key stakeholders? Are they committed to provide feedback during various stages of the project development? &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I haven't come across teams that have spent enough time clearly defining success criteria for the software development life cycle. Most of the time test team believes they have good reasons to not sign off, while program managers and other key stakeholders think that the primary end users will not be affected.&lt;br /&gt;&lt;br /&gt;If test team can answer all or are atleast prepared for all the above questions, we can sure say with confidence that "we are done testing".&lt;br /&gt;&lt;br /&gt;This post is open to further discussion. Would love to hear comments... &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5693117124170619532-2940313995506946179?l=architecture-blog.rdacorp.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=EhMBNA3s32w:W7OlO6Guuwk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=EhMBNA3s32w:W7OlO6Guuwk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=EhMBNA3s32w:W7OlO6Guuwk:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=EhMBNA3s32w:W7OlO6Guuwk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=EhMBNA3s32w:W7OlO6Guuwk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=EhMBNA3s32w:W7OlO6Guuwk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=EhMBNA3s32w:W7OlO6Guuwk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=EhMBNA3s32w:W7OlO6Guuwk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RdaArchitectureEvangelistTeamBlog/~4/EhMBNA3s32w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://architecture-blog.rdacorp.com/feeds/2940313995506946179/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5693117124170619532&amp;postID=2940313995506946179" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/2940313995506946179?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/2940313995506946179?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RdaArchitectureEvangelistTeamBlog/~3/EhMBNA3s32w/are-we-done-testing-yet.html" title="Are we done testing yet?" /><author><name>Pradhan</name><uri>http://www.blogger.com/profile/12845197549201637086</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://architecture-blog.rdacorp.com/2010/06/are-we-done-testing-yet.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YMQH87eyp7ImA9WxFXF0U.&quot;"><id>tag:blogger.com,1999:blog-5693117124170619532.post-5478358636192338322</id><published>2010-05-25T08:04:00.000-04:00</published><updated>2010-05-25T08:06:21.103-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-25T08:06:21.103-04:00</app:edited><title>Use the Microsoft Addin Framework, MAF to Create Highly Scalable Classes in Any .Net Application</title><content type="html">&lt;p&gt;.NET framework 3.0, 3.5 and 4.0 includes the System.AddIn namespace. This namespace can be used to create highly durable and extendable applications. MAF is a framework that allows for add on based development that includes code isolation for system safety, runtime loading, and unloading of add ons as well as message-based processing (i.e. publish and subscribe). MAF is compatible with any .NET application (I even made a Visual Studio AddIn with it) and is useful wherever there is a need for a de-coupled extendable codebase.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5693117124170619532-5478358636192338322?l=architecture-blog.rdacorp.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=NB3ckKOi05g:ppx6DVGJ-0A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=NB3ckKOi05g:ppx6DVGJ-0A:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=NB3ckKOi05g:ppx6DVGJ-0A:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=NB3ckKOi05g:ppx6DVGJ-0A:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=NB3ckKOi05g:ppx6DVGJ-0A:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=NB3ckKOi05g:ppx6DVGJ-0A:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=NB3ckKOi05g:ppx6DVGJ-0A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=NB3ckKOi05g:ppx6DVGJ-0A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RdaArchitectureEvangelistTeamBlog/~4/NB3ckKOi05g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://architecture-blog.rdacorp.com/feeds/5478358636192338322/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5693117124170619532&amp;postID=5478358636192338322" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/5478358636192338322?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/5478358636192338322?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RdaArchitectureEvangelistTeamBlog/~3/NB3ckKOi05g/use-microsoft-addin-framework-maf-to.html" title="Use the Microsoft Addin Framework, MAF to Create Highly Scalable Classes in Any .Net Application" /><author><name>Jeff</name><uri>http://www.blogger.com/profile/02562805012563309966</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://architecture-blog.rdacorp.com/2010/05/use-microsoft-addin-framework-maf-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cDQ308cSp7ImA9WxFRFEU.&quot;"><id>tag:blogger.com,1999:blog-5693117124170619532.post-3868948610638807718</id><published>2010-04-28T17:04:00.001-04:00</published><updated>2010-04-28T17:11:12.379-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-28T17:11:12.379-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Survey" /><category scheme="http://www.blogger.com/atom/ns#" term="Prism" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET 4.0" /><title>PRISM 4.0 P&amp;P Features Survery</title><content type="html">Patterns and Practices is soliciting feedback on the features that should make it into PRISM 4.0. If you have experience or knowledge of PRISM, please take few moments to fill out the online survey. It was 20+ questions and took about 5 minutes. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.zoomerang.com/Survey/WEB22AK39NFHMT" target="_blank"&gt;Features Survey&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5693117124170619532-3868948610638807718?l=architecture-blog.rdacorp.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=IC3lMSIIzXk:xCOgPlKuHLc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=IC3lMSIIzXk:xCOgPlKuHLc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=IC3lMSIIzXk:xCOgPlKuHLc:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=IC3lMSIIzXk:xCOgPlKuHLc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=IC3lMSIIzXk:xCOgPlKuHLc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=IC3lMSIIzXk:xCOgPlKuHLc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=IC3lMSIIzXk:xCOgPlKuHLc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=IC3lMSIIzXk:xCOgPlKuHLc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RdaArchitectureEvangelistTeamBlog/~4/IC3lMSIIzXk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://architecture-blog.rdacorp.com/feeds/3868948610638807718/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5693117124170619532&amp;postID=3868948610638807718" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/3868948610638807718?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/3868948610638807718?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RdaArchitectureEvangelistTeamBlog/~3/IC3lMSIIzXk/prism-40-p-features-survery.html" title="PRISM 4.0 P&amp;P Features Survery" /><author><name>Michael Sparks</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_RwYv28y0DxY/SP3ndh8bvwI/AAAAAAAAAAM/UKwhYgWv7do/S220/DealsGapII.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://architecture-blog.rdacorp.com/2010/04/prism-40-p-features-survery.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04DRXY_fyp7ImA9WxFRFEo.&quot;"><id>tag:blogger.com,1999:blog-5693117124170619532.post-6387282381038971293</id><published>2010-04-28T14:39:00.001-04:00</published><updated>2010-04-28T14:39:34.847-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-28T14:39:34.847-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="RockNUG" /><category scheme="http://www.blogger.com/atom/ns#" term="David Makogon" /><category scheme="http://www.blogger.com/atom/ns#" term="User Group" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title>RockNUG: Silverlight 4 Code and Notes</title><content type="html">&lt;p&gt;On April 14, I presented an introduction to Silverlight 4 at the &lt;a href="http://www.rocknug.org" target="_blank"&gt;Rockville .NET User Group&lt;/a&gt;. My sample project code, along with presentation notes, are available &lt;a href="http://www.davidmakogon.com/2010/04/rocknug-april-2010-materials.html" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5693117124170619532-6387282381038971293?l=architecture-blog.rdacorp.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=uBC2r-BDmpA:A8erZJ3BacY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=uBC2r-BDmpA:A8erZJ3BacY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=uBC2r-BDmpA:A8erZJ3BacY:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=uBC2r-BDmpA:A8erZJ3BacY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=uBC2r-BDmpA:A8erZJ3BacY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=uBC2r-BDmpA:A8erZJ3BacY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=uBC2r-BDmpA:A8erZJ3BacY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=uBC2r-BDmpA:A8erZJ3BacY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RdaArchitectureEvangelistTeamBlog/~4/uBC2r-BDmpA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://architecture-blog.rdacorp.com/feeds/6387282381038971293/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5693117124170619532&amp;postID=6387282381038971293" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/6387282381038971293?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/6387282381038971293?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RdaArchitectureEvangelistTeamBlog/~3/uBC2r-BDmpA/rocknug-silverlight-4-code-and-notes.html" title="RockNUG: Silverlight 4 Code and Notes" /><author><name>David Makogon</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://architecture-blog.rdacorp.com/2010/04/rocknug-silverlight-4-code-and-notes.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIMRX88cCp7ImA9WxFRE00.&quot;"><id>tag:blogger.com,1999:blog-5693117124170619532.post-8688808934279856162</id><published>2010-04-26T09:53:00.001-04:00</published><updated>2010-04-26T13:56:24.178-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-26T13:56:24.178-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="David Makogon" /><category scheme="http://www.blogger.com/atom/ns#" term="Codename Dallas" /><category scheme="http://www.blogger.com/atom/ns#" term="SQL Azure" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><category scheme="http://www.blogger.com/atom/ns#" term="AppFabric" /><category scheme="http://www.blogger.com/atom/ns#" term="Voting" /><category scheme="http://www.blogger.com/atom/ns#" term="Blog" /><title>Azure team blogs and voting sites</title><content type="html">&lt;p&gt;The Azure team has several blogs announcing new features, Azure sites, integration tools, customer stories, and general platform updates:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/windowsazure/" target="_blank"&gt;Windows Azure blog&lt;/a&gt; – visit this blog to see the latest platform updates, as well as OS updates and tools for platform integration (such as &lt;a href="http://blogs.msdn.com/windowsazure/archive/2010/04/14/run-java-with-jetty-in-windows-azure.aspx" target="_blank"&gt;Jetty&lt;/a&gt;).&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/ssds/" target="_blank"&gt;SQL Azure blog&lt;/a&gt; – this blog is dedicated to the Azure-specific version of SQL Server. This blog will provide information around new and upcoming features such as MARS.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/netservices/" target="_blank"&gt;Azure AppFabric blog&lt;/a&gt; – this blog is specific to AppFabric features such as access control, service bus, and experimental features, called &lt;a href="http://blogs.msdn.com/netservices/archive/2010/03/11/now-available-the-windows-azure-platform-appfabric-labs-environment.aspx" target="_blank"&gt;AppFabric LABS&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/windowsazurestorage/" target="_blank"&gt;Azure Storage blog&lt;/a&gt; – this blog is dedicated to blob and table storage, including code samples and useful tools (such as the recent &lt;a href="http://blogs.msdn.com/windowsazurestorage/archive/2010/04/17/windows-azure-storage-explorers.aspx" target="_blank"&gt;storage explorer tool compilation&lt;/a&gt;).&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/dallas/" target="_blank"&gt;Codename Dallas blog&lt;/a&gt; – this blog covers the latest information about the new Azure data-provider service.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Aside from blogs, the Azure team is soliciting feedback for future features. You can cast your votes and be heard here:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.mygreatwindowsazureidea.com/forums/34192-windows-azure-feature-voting" target="_blank"&gt;Windows Azure feature voting&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.mygreatwindowsazureidea.com/forums/34685-sql-azure-feature-voting" target="_blank"&gt;SQL Azure feature voting&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.mygreatwindowsazureidea.com/forums/44459-sql-azure-data-sync-feature-voting" target="_blank"&gt;SQL Azure Data Sync feature voting&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.mygreatwindowsazureidea.com/forums/40626-windows-azure-appfabric-feature-voting" target="_blank"&gt;AppFabric feature voting&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.mygreatwindowsazureidea.com/forums/35889-microsoft-codename-dallas-feature-voting" target="_blank"&gt;Codename Dallas feature voting&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5693117124170619532-8688808934279856162?l=architecture-blog.rdacorp.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=6nHN1qDagnU:jdbP6bT_uBs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=6nHN1qDagnU:jdbP6bT_uBs:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=6nHN1qDagnU:jdbP6bT_uBs:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=6nHN1qDagnU:jdbP6bT_uBs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=6nHN1qDagnU:jdbP6bT_uBs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=6nHN1qDagnU:jdbP6bT_uBs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=6nHN1qDagnU:jdbP6bT_uBs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=6nHN1qDagnU:jdbP6bT_uBs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RdaArchitectureEvangelistTeamBlog/~4/6nHN1qDagnU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://architecture-blog.rdacorp.com/feeds/8688808934279856162/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5693117124170619532&amp;postID=8688808934279856162" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/8688808934279856162?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/8688808934279856162?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RdaArchitectureEvangelistTeamBlog/~3/6nHN1qDagnU/azure-team-blogs-and-voting-sites.html" title="Azure team blogs and voting sites" /><author><name>David Makogon</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://architecture-blog.rdacorp.com/2010/04/azure-team-blogs-and-voting-sites.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkINRXc8eyp7ImA9WxFRE00.&quot;"><id>tag:blogger.com,1999:blog-5693117124170619532.post-2255847089700732471</id><published>2010-04-26T09:27:00.002-04:00</published><updated>2010-04-26T13:56:34.973-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-26T13:56:34.973-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="David Makogon" /><category scheme="http://www.blogger.com/atom/ns#" term="User Group" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><title>May 12 – Launching and Monitoring your First Azure App</title><content type="html">Join me online May 12 at 4pm Eastern, when I present at the Azure User Group, hosted in LiveMeeting. During this talk, we’ll go over the basic building blocks of an Azure application. We’ll then create our first Azure app and see how to deploy it into the cloud. We’ll also see how to monitor an app once it’s deployed.&lt;br /&gt;
Please register &lt;a href="https://www.clicktoattend.com/register.aspx?eventid=147728" target="_blank" title="Azure: Launching and Monitoring your First App"&gt;here&lt;/a&gt; if you’d like to attend.&lt;br /&gt;
For more information about the Azure User Group, visit the &lt;a href="http://www.linkedin.com/groups?home=&amp;amp;gid=2856493&amp;amp;trk=anet_ug_hm" target="_blank"&gt;LinkedIn group page&lt;/a&gt; or follow &lt;a href="http://twitter.com/azureug" target="_blank"&gt;AzureUG on twitter&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5693117124170619532-2255847089700732471?l=architecture-blog.rdacorp.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=j23tzDXQ1wQ:wq1Y8vzs7YA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=j23tzDXQ1wQ:wq1Y8vzs7YA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=j23tzDXQ1wQ:wq1Y8vzs7YA:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=j23tzDXQ1wQ:wq1Y8vzs7YA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=j23tzDXQ1wQ:wq1Y8vzs7YA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=j23tzDXQ1wQ:wq1Y8vzs7YA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=j23tzDXQ1wQ:wq1Y8vzs7YA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=j23tzDXQ1wQ:wq1Y8vzs7YA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RdaArchitectureEvangelistTeamBlog/~4/j23tzDXQ1wQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://architecture-blog.rdacorp.com/feeds/2255847089700732471/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5693117124170619532&amp;postID=2255847089700732471" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/2255847089700732471?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/2255847089700732471?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RdaArchitectureEvangelistTeamBlog/~3/j23tzDXQ1wQ/may-12-launching-and-monitoring-your.html" title="May 12 – Launching and Monitoring your First Azure App" /><author><name>David Makogon</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://architecture-blog.rdacorp.com/2010/04/may-12-launching-and-monitoring-your.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcDRXk6fyp7ImA9WxFREkU.&quot;"><id>tag:blogger.com,1999:blog-5693117124170619532.post-625098868294382178</id><published>2010-04-25T13:38:00.003-04:00</published><updated>2010-04-26T09:21:14.717-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-26T09:21:14.717-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MVVM" /><category scheme="http://www.blogger.com/atom/ns#" term="RIA Services" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title>Silverlight Ramp-up Resources</title><content type="html">I completed a several part series of 200 and 300 level blogs that can be used by any experienced developer to quickly spin up Silverlight 4, MVVM, Custom RIA Domain Services and Data Binding.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.k2distillery.com/2010/03/silverlight-4-hands-on-lab.html"&gt;Silverlight 4 Hands On Lab&lt;/a&gt; - Free MS Hands on lab that you can use to get started.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.k2distillery.com/2010/04/silverlight-4-using-mvvm-patter-ria.html"&gt;Silverlight 4 using MVVM Pattern, RIA Services and Custom Domain Service&lt;/a&gt; - Jump right into learning MVVM pattern with Silverlight and RIA Services.  In this scenario we could not use Entity so we had to understand how RIA Services work without them.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.k2distillery.com/2010/04/silverlight-custom-authentication.html"&gt;Silverlight Custom Authentication Domain Service with RIA Services&lt;/a&gt; - Shows a quick way to do custom authentication services and shows how to create a domain service factory.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.k2distillery.com/2010/04/binding-combobox-and-autocomplete.html"&gt;Binding ComboBox and AutoComplete Controls in Silverlight DataGrid&lt;/a&gt; - Discuss advanced binding concepts and how to bind using column templates in a grid.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.k2distillery.com/2010/04/ria-service-domain-service-method-life.html"&gt;RIA Service Domain Service Method Life-Cycle&lt;/a&gt; - Discusses the life-cycle of RIA Service methods.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.k2distillery.com/2010/04/silverlight-localization-and-resource.html"&gt;Silverlight Localization and Resource Files&lt;/a&gt; - Good references on how to utilize resources files in your Silverlight apps.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.k2distillery.com/2010/04/deep-dive-into-custom-ria-service-and.html"&gt;Deep Dive into Custom RIA Service and Transactions&lt;/a&gt; - A deep dive in building DTOs with RIA Services and how the ChangeSet works to manage transactions.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5693117124170619532-625098868294382178?l=architecture-blog.rdacorp.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=LiNGWZ5UQZg:NomBNtMZrpY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=LiNGWZ5UQZg:NomBNtMZrpY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=LiNGWZ5UQZg:NomBNtMZrpY:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=LiNGWZ5UQZg:NomBNtMZrpY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=LiNGWZ5UQZg:NomBNtMZrpY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=LiNGWZ5UQZg:NomBNtMZrpY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=LiNGWZ5UQZg:NomBNtMZrpY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=LiNGWZ5UQZg:NomBNtMZrpY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RdaArchitectureEvangelistTeamBlog/~4/LiNGWZ5UQZg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://architecture-blog.rdacorp.com/feeds/625098868294382178/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5693117124170619532&amp;postID=625098868294382178" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/625098868294382178?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/625098868294382178?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RdaArchitectureEvangelistTeamBlog/~3/LiNGWZ5UQZg/i-completed-several-part-series-of-200.html" title="Silverlight Ramp-up Resources" /><author><name>Jason Apergis</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://architecture-blog.rdacorp.com/2010/04/i-completed-several-part-series-of-200.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEGRX08eip7ImA9WxFREE8.&quot;"><id>tag:blogger.com,1999:blog-5693117124170619532.post-90522528289471100</id><published>2010-04-22T15:33:00.001-04:00</published><updated>2010-04-23T08:10:24.372-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-23T08:10:24.372-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET 4.0" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Mobile" /><title>Windows Phone Developer Tools and Visual Studio 2010 RTM</title><content type="html">&lt;p&gt;Just a warning that if you are developing applications using the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=2338b5d1-79d8-46af-b828-380b0f854203&amp;amp;displaylang=en" target="_blank"&gt;CTP of Windows Phone Developer Tools&lt;/a&gt;, do not upgrade to the RTM of Visual Studio 2010. The two are not compatible. You need to stay on the Release Candidate of Visual Studio 2010 until the Phone Developer Tools are updated. If you want to be notified when that happens, &lt;a href="http://www.microsoft.com/windowsmobile/en-us/cmpn/vslaunch/default.mspx" target="_blank"&gt;you can sign up to receive an email here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5693117124170619532-90522528289471100?l=architecture-blog.rdacorp.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=IXWulUt5I28:0rGUtLsjuks:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=IXWulUt5I28:0rGUtLsjuks:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=IXWulUt5I28:0rGUtLsjuks:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=IXWulUt5I28:0rGUtLsjuks:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=IXWulUt5I28:0rGUtLsjuks:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=IXWulUt5I28:0rGUtLsjuks:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=IXWulUt5I28:0rGUtLsjuks:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=IXWulUt5I28:0rGUtLsjuks:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RdaArchitectureEvangelistTeamBlog/~4/IXWulUt5I28" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://architecture-blog.rdacorp.com/feeds/90522528289471100/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5693117124170619532&amp;postID=90522528289471100" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/90522528289471100?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/90522528289471100?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RdaArchitectureEvangelistTeamBlog/~3/IXWulUt5I28/windows-phone-developer-tools-and.html" title="Windows Phone Developer Tools and Visual Studio 2010 RTM" /><author><name>Steve</name><uri>http://www.blogger.com/profile/10782174116130454031</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="33" height="30" src="http://2.bp.blogspot.com/_R3fY2PR0dPY/S4SDxTUyKMI/AAAAAAAAAFo/orjNA1Hv810/S220/Steve.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://architecture-blog.rdacorp.com/2010/04/windows-phone-developer-tools-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEFSH85fyp7ImA9WxFRE00.&quot;"><id>tag:blogger.com,1999:blog-5693117124170619532.post-7409405664382251088</id><published>2010-04-15T14:20:00.001-04:00</published><updated>2010-04-26T13:56:59.127-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-26T13:56:59.127-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Expression" /><category scheme="http://www.blogger.com/atom/ns#" term="David Makogon" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="Blend" /><title>Silverlight 4 is available!</title><content type="html">&lt;p&gt;Today, Microsoft officially released Silverlight 4. As a developer, you’ll want to head over to &lt;a href="http://www.silverlight.net/getstarted" target="_blank"&gt;www.silverlight.net/getstarted&lt;/a&gt; – you’ll find links for all needed tools:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Visual Studio 2010&lt;/li&gt;    &lt;li&gt;Silverlight SDK&lt;/li&gt;    &lt;li&gt;Silverlight Toolkit&lt;/li&gt;    &lt;li&gt;Expression Blend 4 RC&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5693117124170619532-7409405664382251088?l=architecture-blog.rdacorp.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=AQPQW1olNcA:1jYh5k9Ri4Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=AQPQW1olNcA:1jYh5k9Ri4Y:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=AQPQW1olNcA:1jYh5k9Ri4Y:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=AQPQW1olNcA:1jYh5k9Ri4Y:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=AQPQW1olNcA:1jYh5k9Ri4Y:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=AQPQW1olNcA:1jYh5k9Ri4Y:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=AQPQW1olNcA:1jYh5k9Ri4Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=AQPQW1olNcA:1jYh5k9Ri4Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RdaArchitectureEvangelistTeamBlog/~4/AQPQW1olNcA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://architecture-blog.rdacorp.com/feeds/7409405664382251088/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5693117124170619532&amp;postID=7409405664382251088" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/7409405664382251088?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/7409405664382251088?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RdaArchitectureEvangelistTeamBlog/~3/AQPQW1olNcA/silverlight-4-is-available.html" title="Silverlight 4 is available!" /><author><name>David Makogon</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://architecture-blog.rdacorp.com/2010/04/silverlight-4-is-available.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQMSHs7fyp7ImA9WxFSE04.&quot;"><id>tag:blogger.com,1999:blog-5693117124170619532.post-8751547310517841892</id><published>2010-04-14T06:21:00.007-04:00</published><updated>2010-04-15T08:59:49.507-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-15T08:59:49.507-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MSBUILD" /><category scheme="http://www.blogger.com/atom/ns#" term="VS2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Application Architecture" /><category scheme="http://www.blogger.com/atom/ns#" term="C# 3.0" /><category scheme="http://www.blogger.com/atom/ns#" term="Entity Model" /><category scheme="http://www.blogger.com/atom/ns#" term="LINQ" /><title>Using an ADO.NET Entity Model Against SQL Server and SqlCE</title><content type="html">I ran into a problem recently with Visual Studio generated entity models. We have a partially connected application that uses the same data model as the server, however the client uses &lt;span id="SPELLING_ERROR_0" class="blsp-spelling-error"&gt;Sql&lt;/span&gt; Compact and the server uses &lt;span id="SPELLING_ERROR_1" class="blsp-spelling-error"&gt;SQL&lt;/span&gt; enterprise. We generated a single &lt;span id="SPELLING_ERROR_2" class="blsp-spelling-error"&gt;EDM&lt;/span&gt; diagram in visual studio against the server database. When doing this the storage metadata schema (&lt;span id="SPELLING_ERROR_3" class="blsp-spelling-error"&gt;SSDL)&lt;/span&gt; gets generated based on the provider. In order to use your &lt;span id="SPELLING_ERROR_4" class="blsp-spelling-error"&gt;datamodel&lt;/span&gt; against a &lt;span id="SPELLING_ERROR_5" class="blsp-spelling-error"&gt;seperate&lt;/span&gt; compatible store your consumers need to keep the &lt;span id="SPELLING_ERROR_6" class="blsp-spelling-error"&gt;SSDL&lt;/span&gt; in sync for each provider. This proved easy to do wrong an difficult to keep in sync as we would have to keep making local copies after each build that get updated. In order to make life &lt;span id="SPELLING_ERROR_7" class="blsp-spelling-error"&gt;alittle&lt;/span&gt; easier I decide to use automation of course. The differences in the &lt;span id="SPELLING_ERROR_8" class="blsp-spelling-error"&gt;SSDL&lt;/span&gt; in this case are only the &lt;span id="SPELLING_ERROR_9" class="blsp-spelling-error"&gt;providername&lt;/span&gt; and &lt;span id="SPELLING_ERROR_10" class="blsp-spelling-error"&gt;providermanifest&lt;/span&gt;:   &lt;div&gt; &lt;br /&gt;&lt;/div&gt;  &lt;div&gt;Server : &lt;/div&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;schema&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;namespace&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="Model.Store"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;alias&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="Self"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;provider&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="System.Data.SqlClient"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;providermanifesttoken&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="2008"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;schema&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Client: &lt;/div&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;schema&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;namespace&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="Model.Store"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;alias&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="Self"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;provider&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="System.Data.SqlServerCe.3.5"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;providermanifesttoken&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="3.5"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;schema&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Given the minute differences we looked at how to merge a different &lt;span id="SPELLING_ERROR_11" class="blsp-spelling-error"&gt;ssdl&lt;/span&gt; along with the same &lt;span id="SPELLING_ERROR_12" class="blsp-spelling-error"&gt;msl&lt;/span&gt; and &lt;span id="SPELLING_ERROR_13" class="blsp-spelling-error"&gt;csdl&lt;/span&gt;. The simplest solution was to modify the consumer application project file to include a custom &lt;span id="SPELLING_ERROR_14" class="blsp-spelling-error"&gt;MSBUILD&lt;/span&gt; task.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;The default behavior of the &lt;span id="SPELLING_ERROR_15" class="blsp-spelling-error"&gt;EDMX&lt;/span&gt; designer is to embed all three meta data artifacts into the containing assembly. By leaving this as is on the assembly we can post build load the assembly and read the &lt;span id="SPELLING_ERROR_16" class="blsp-spelling-error"&gt;metadata&lt;/span&gt; to do translations. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Here is the completed class:&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="line-height: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;   &lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum1"  style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; RegenerateClientSsdlTask : Task&lt;/pre&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 13px; white-space: pre; "&gt;&lt;span id="lnum2"  style="color:#606060;"&gt;   2:&lt;/span&gt;     {&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 13px; white-space: pre; "&gt;&lt;span id="lnum3"  style="color:#606060;"&gt;   3:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; RegenerateClientSsdlTask()&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 13px; white-space: pre; "&gt;&lt;span id="lnum4"  style="color:#606060;"&gt;   4:&lt;/span&gt;         {&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 13px; white-space: pre; "&gt;&lt;span id="lnum5"  style="color:#606060;"&gt;   5:&lt;/span&gt;         }&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 13px; white-space: pre; "&gt;&lt;span id="lnum6"  style="color:#606060;"&gt;   6:&lt;/span&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 13px; white-space: pre; "&gt;&lt;span id="lnum7"  style="color:#606060;"&gt;   7:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; AssemblyName { get; set; }&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 13px; white-space: pre; "&gt;&lt;span id="lnum8"  style="color:#606060;"&gt;   8:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; ProviderName { get; set; }&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 13px; white-space: pre; "&gt;&lt;span id="lnum9"  style="color:#606060;"&gt;   9:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; ProviderManifestToken { get; set; }&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 13px; white-space: pre; "&gt;&lt;span id="lnum10"  style="color:#606060;"&gt;  10:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; OutputPath { get; set; }&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 13px; white-space: pre; "&gt;&lt;span id="lnum11"  style="color:#606060;"&gt;  11:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; SsdlPath { get; set; }&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 13px; white-space: pre; "&gt;&lt;span id="lnum12"  style="color:#606060;"&gt;  12:&lt;/span&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 13px; white-space: pre; "&gt;&lt;span id="lnum13"  style="color:#606060;"&gt;  13:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; RegenerateClientSsdlTask(ResourceManager taskResources) : &lt;span style="color:#0000ff;"&gt;base&lt;/span&gt;(taskResources)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum14"  style="color:#606060;"&gt;  14:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum15"  style="color:#606060;"&gt;  15:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum16"  style="color:#606060;"&gt;  16:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum17"  style="color:#606060;"&gt;  17:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; RegenerateClientSsdlTask(ResourceManager taskResources, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; helpKeywordPrefix) : &lt;span style="color:#0000ff;"&gt;base&lt;/span&gt;(taskResources, helpKeywordPrefix)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum18"  style="color:#606060;"&gt;  18:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum19"  style="color:#606060;"&gt;  19:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum20"  style="color:#606060;"&gt;  20:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum21"  style="color:#606060;"&gt;  21:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; Execute()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum22"  style="color:#606060;"&gt;  22:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum23"  style="color:#606060;"&gt;  23:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum24"  style="color:#606060;"&gt;  24:&lt;/span&gt;             var setup = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; AppDomainSetup { ApplicationBase = Path.GetDirectoryName(GetType().Assembly.Location) };&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum25"  style="color:#606060;"&gt;  25:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum26"  style="color:#606060;"&gt;  26:&lt;/span&gt;             AppDomain load = AppDomain.CreateDomain(&lt;span style="color:#006080;"&gt;"Analyze"&lt;/span&gt;, AppDomain.CurrentDomain.Evidence, setup);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum27"  style="color:#606060;"&gt;  27:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum28"  style="color:#606060;"&gt;  28:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum29"  style="color:#606060;"&gt;  29:&lt;/span&gt;             {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum30"  style="color:#606060;"&gt;  30:&lt;/span&gt;                 var instance = load.CreateInstance(GetType().Assembly.FullName, &lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt; (SSDLProcessor).FullName);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum31"  style="color:#606060;"&gt;  31:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum32"  style="color:#606060;"&gt;  32:&lt;/span&gt;                 var processor = instance.Unwrap() &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; SSDLProcessor;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum33"  style="color:#606060;"&gt;  33:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum34"  style="color:#606060;"&gt;  34:&lt;/span&gt;                 processor.AssemblyName = AssemblyName;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum35"  style="color:#606060;"&gt;  35:&lt;/span&gt;                 processor.ProviderName = ProviderName;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum36"  style="color:#606060;"&gt;  36:&lt;/span&gt;                 processor.ProviderManifestToken = ProviderManifestToken;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum37"  style="color:#606060;"&gt;  37:&lt;/span&gt;                 processor.OutputPath = OutputPath;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum38"  style="color:#606060;"&gt;  38:&lt;/span&gt;                 processor.SsdlPath = SsdlPath;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum39"  style="color:#606060;"&gt;  39:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum40"  style="color:#606060;"&gt;  40:&lt;/span&gt;                 load.DoCallBack(processor.ProcessSSDL);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum41"  style="color:#606060;"&gt;  41:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum42"  style="color:#606060;"&gt;  42:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum43"  style="color:#606060;"&gt;  43:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum44"  style="color:#606060;"&gt;  44:&lt;/span&gt;             }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum45"  style="color:#606060;"&gt;  45:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;catch&lt;/span&gt; (Exception)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum46"  style="color:#606060;"&gt;  46:&lt;/span&gt;             {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum47"  style="color:#606060;"&gt;  47:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum48"  style="color:#606060;"&gt;  48:&lt;/span&gt;             }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum49"  style="color:#606060;"&gt;  49:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;finally&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum50"  style="color:#606060;"&gt;  50:&lt;/span&gt;             {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum51"  style="color:#606060;"&gt;  51:&lt;/span&gt;                 AppDomain.Unload(load);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum52"  style="color:#606060;"&gt;  52:&lt;/span&gt;             }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum53"  style="color:#606060;"&gt;  53:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum54"  style="color:#606060;"&gt;  54:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum55"  style="color:#606060;"&gt;  55:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum56"  style="color:#606060;"&gt;  56:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; SSDLProcessor : MarshalByRefObject&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum57"  style="color:#606060;"&gt;  57:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum58"  style="color:#606060;"&gt;  58:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; AssemblyName { get; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum59"  style="color:#606060;"&gt;  59:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; ProviderName { get; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum60"  style="color:#606060;"&gt;  60:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; ProviderManifestToken { get; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum61"  style="color:#606060;"&gt;  61:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; OutputPath { get; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum62"  style="color:#606060;"&gt;  62:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; SsdlPath { get; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum63"  style="color:#606060;"&gt;  63:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum64"  style="color:#606060;"&gt;  64:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; ProcessSSDL()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum65"  style="color:#606060;"&gt;  65:&lt;/span&gt;             {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum66"  style="color:#606060;"&gt;  66:&lt;/span&gt;                 var assm = Assembly.ReflectionOnlyLoadFrom(AssemblyName);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum67"  style="color:#606060;"&gt;  67:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum68"  style="color:#606060;"&gt;  68:&lt;/span&gt;                 var ssdl = assm.GetManifestResourceStream(SsdlPath);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum69"  style="color:#606060;"&gt;  69:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum70"  style="color:#606060;"&gt;  70:&lt;/span&gt;                 var ssdlDoc = XDocument.Load(ssdl);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum71"  style="color:#606060;"&gt;  71:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum72"  style="color:#606060;"&gt;  72:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (ssdlDoc.Root != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum73"  style="color:#606060;"&gt;  73:&lt;/span&gt;                 {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum74"  style="color:#606060;"&gt;  74:&lt;/span&gt;                     XAttribute providerAttribute = ssdlDoc.Root.Attribute(&lt;span style="color:#006080;"&gt;"Provider"&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum75"  style="color:#606060;"&gt;  75:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum76"  style="color:#606060;"&gt;  76:&lt;/span&gt;                     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (providerAttribute != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum77"  style="color:#606060;"&gt;  77:&lt;/span&gt;                     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum78"  style="color:#606060;"&gt;  78:&lt;/span&gt;                         providerAttribute.Value = ProviderName;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum79"  style="color:#606060;"&gt;  79:&lt;/span&gt;                     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum80"  style="color:#606060;"&gt;  80:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum81"  style="color:#606060;"&gt;  81:&lt;/span&gt;                     XAttribute manifestAttribute = ssdlDoc.Root.Attribute(&lt;span style="color:#006080;"&gt;"ProviderManifestToken"&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum82"  style="color:#606060;"&gt;  82:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum83"  style="color:#606060;"&gt;  83:&lt;/span&gt;                     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (manifestAttribute != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum84"  style="color:#606060;"&gt;  84:&lt;/span&gt;                     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum85"  style="color:#606060;"&gt;  85:&lt;/span&gt;                         manifestAttribute.Value = ProviderManifestToken;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum86"  style="color:#606060;"&gt;  86:&lt;/span&gt;                     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum87"  style="color:#606060;"&gt;  87:&lt;/span&gt;                 }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum88"  style="color:#606060;"&gt;  88:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum89"  style="color:#606060;"&gt;  89:&lt;/span&gt;                 ssdlDoc.Save(OutputPath);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum90"  style="color:#606060;"&gt;  90:&lt;/span&gt;             }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum91"  style="color:#606060;"&gt;  91:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum92"  style="color:#606060;"&gt;  92:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum93"  style="color:#606060;"&gt;  93:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum94"  style="color:#606060;"&gt;  94:&lt;/span&gt;       &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum95"  style="color:#606060;"&gt;  95:&lt;/span&gt;     }&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Within the previous task several things occur. In the calling build script we configure the task to tell it where to locate the &lt;span id="SPELLING_ERROR_94" class="blsp-spelling-error"&gt;dll&lt;/span&gt;, what the path is to the &lt;span id="SPELLING_ERROR_95" class="blsp-spelling-error"&gt;ssdl&lt;/span&gt; and what to change the provider &lt;span id="SPELLING_ERROR_96" class="blsp-spelling-error"&gt;configuration&lt;/span&gt; to and then lastly where to write out the generated &lt;span id="SPELLING_ERROR_97" class="blsp-spelling-error"&gt;ssdl&lt;/span&gt;. You'll notice we load all this into a &lt;span id="SPELLING_ERROR_98" class="blsp-spelling-error"&gt;seperate&lt;/span&gt; app domain as well as late load the tasks assembly. If we directly retrieve the &lt;span id="SPELLING_ERROR_99" class="blsp-spelling-error"&gt;metadata&lt;/span&gt; into the task the &lt;span id="SPELLING_ERROR_100" class="blsp-spelling-error"&gt;dll&lt;/span&gt; will get loaded in the current &lt;span id="SPELLING_ERROR_101" class="blsp-spelling-error"&gt;AppDomain&lt;/span&gt; which in our case was part of the visual studio build process. Doing this well work the first time but lock the &lt;span id="SPELLING_ERROR_102" class="blsp-spelling-error"&gt;dll&lt;/span&gt; and not allow for subsequent builds to be successful because of file locking.&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt; &lt;div&gt;So now that you have the code how do you use it? The first requirement is to make the assembly located in your visual studio solution so that the project file can reference it. In our solution we have a third party solution folder that contains all these references called Lib. Being centrally located in the solution we can just add relative paths. Once you have a compiled version in your solution you will need to open the end consumers csproj file in notepad. Once you have the file open at the top you will need to add the following directly under the project node:&lt;/div&gt;&lt;blockquote&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;usingtask&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;taskname&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="BuildTasks.RegenerateClientSsdlTask"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;assemblyfile&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="..\Lib\BuildTasks.dll"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;    &lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt; &lt;div&gt;Once you have done that scroll to the bottom and locate the following text:&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;div id="codeSnippetWrapper"&gt;     &lt;div    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;&lt;br /&gt;      &lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum1"  style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Import&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Project&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="$(MSBuildToolsPath)\Microsoft.CSharp.targets"&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum2"  style="color:#606060;"&gt;   2:&lt;/span&gt; &lt;span style="color:#008000;"&gt;&amp;lt;!-- To modify your build process, add your task inside one of the targets below and uncomment it. &lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum3"  style="color:#606060;"&gt;   3:&lt;/span&gt; &lt;span style="color:#008000;"&gt;      Other similar extension points exist, see Microsoft.Common.targets.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum4"  style="color:#606060;"&gt;   4:&lt;/span&gt; &lt;span style="color:#008000;"&gt;     &amp;lt;Target Name="BeforeBuild"&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum5"  style="color:#606060;"&gt;   5:&lt;/span&gt; &lt;span style="color:#008000;"&gt; &lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum6"  style="color:#606060;"&gt;   6:&lt;/span&gt; &lt;span style="color:#008000;"&gt;     &amp;lt;/Target&amp;gt; &lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum7"  style="color:#606060;"&gt;   7:&lt;/span&gt; &lt;span style="color:#008000;"&gt;    &amp;lt;Target Name="AfterBuild"&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum8"  style="color:#606060;"&gt;   8:&lt;/span&gt; &lt;span style="color:#008000;"&gt;    &amp;lt;/Target&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum9"  style="color:#606060;"&gt;   9:&lt;/span&gt; &lt;span style="color:#008000;"&gt;--&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;  &lt;div&gt;You will need to uncomment the "AfterBuild" Target and update it to the following:&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="line-height: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;div&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;           &lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum1"  style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Import&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Project&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="$(MSBuildToolsPath)\Microsoft.CSharp.targets"&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum2"  style="color:#606060;"&gt;   2:&lt;/span&gt;      &lt;span style="color:#008000;"&gt;&amp;lt;!-- To modify your build process, add your task inside one of the targets below and uncomment it. &lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum3"  style="color:#606060;"&gt;   3:&lt;/span&gt; &lt;span style="color:#008000;"&gt;Other similar extension points exist, see Microsoft.Common.targets.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum4"  style="color:#606060;"&gt;   4:&lt;/span&gt; &lt;span style="color:#008000;"&gt;    &amp;lt;Target Name="BeforeBuild"&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum5"  style="color:#606060;"&gt;   5:&lt;/span&gt; &lt;span style="color:#008000;"&gt; &lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum6"  style="color:#606060;"&gt;   6:&lt;/span&gt; &lt;span style="color:#008000;"&gt;    &amp;lt;/Target&amp;gt; --&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum7"  style="color:#606060;"&gt;   7:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Target&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="AfterBuild"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum8"  style="color:#606060;"&gt;   8:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Message&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="Running SSDL Gen..."&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum9"  style="color:#606060;"&gt;   9:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;RegenerateClientSsdlTask&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;AssemblyName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="$(TargetDir)\EvapSpec.Data.dll"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ProviderName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="System.Data.SqlServerCe.3.5"&lt;/span&gt;     &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum10"  style="color:#606060;"&gt;  10:&lt;/span&gt;      &lt;span style="color:#ff0000;"&gt;ProviderManifestToken&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="3.5"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;SsdlPath&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="ES.ssdl"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;OutputPath&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="$(TargetDir)\ES.ssdl"&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum11"  style="color:#606060;"&gt;  11:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Message&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="Finished SSDL Gen..."&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span id="lnum12"  style="color:#606060;"&gt;  12:&lt;/span&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Target&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Now lets look at the parameters we have configured and how get those. &lt;/div&gt;&lt;br /&gt;AssemblyName="$(TargetDir)\Data.dll" This is the reference containing the EDMX model. Since our project references this dll it gets copied into the ouput directory. By using $(TargetDir) we always get the output directory no matter how the project or build configuration changes.&lt;br /&gt;&lt;br /&gt;ProviderName="System.Data.SqlServerCe.3.5" This is the provider we use in our connection string on the client&lt;br /&gt;&lt;br /&gt;&lt;div&gt;ProviderManifestToken="3.5" This is identifier for the provider. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt; &lt;div&gt;SsdlPath="Model.ssdl" This is the resource name in the containing dll. The easiest way to get this is to look at the EntityConnection string in your app config. ie: "res://./Model.SSDL" indicates that the resource is at the root of the assembly and called Model.SSDL. Alternatively you can open Reflector and look at the resource tables.&lt;/div&gt;&lt;br /&gt;OutputPath="$(TargetDir)\Model.ssdl" This is where we want the generated ssdl file to live. In order to simplify we write the file to where the client assembly lives. This is important as we have to update the connection string on the client to match.&lt;br /&gt;&lt;br /&gt;Now to update the consuming application. Once we have the task configured we run a build and should see the SSDL file in the output directory. Lets update the app.config file to utilize it. If you haven't already copy the existing entity connection from your data project. It should look like this:&lt;br /&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;   &lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;add&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="ModelEntities"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;connectionstring&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=System.Data.SqlClient;provider connection string="&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;Data&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Source&lt;/span&gt;=(&lt;span style="color:#ff0000;"&gt;local&lt;/span&gt;);&lt;span style="color:#ff0000;"&gt;Initial&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Catalog&lt;/span&gt;=&lt;span style="color:#ff0000;"&gt;Model&lt;/span&gt;;&lt;span style="color:#ff0000;"&gt;Integrated&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Security&lt;/span&gt;=&lt;span style="color:#ff0000;"&gt;True&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;""&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;providername&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="System.Data.EntityClient"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;We need to update the SSDL path, provider name and connection string:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div id="codeSnippetWrapper"&gt;     &lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;add&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="ModelEntities"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;connectionstring&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="metadata=res://*/Model.csdl|Model.ssdl|res://*/Model.msl;provider=System.Data.SqlServerCe.3.5;provider connection string="&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;Data&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Source&lt;/span&gt;=&lt;span style="color:#ff0000;"&gt;Model&lt;/span&gt;.&lt;span style="color:#ff0000;"&gt;sdf&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;""&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;providername&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="System.Data.EntityClient"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;    &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;   &lt;div&gt;Notice I removed res://*/ from in front of Model.ssdl, this tells the loader to use a relative path to the executable on the filesystem versus attempting to read it from the assembly. We still use the same csdl and msl so we can leave those untouched. I also changed the provider name and connection string to use our local database. &lt;/div&gt;&lt;br /&gt;In doing all this we now have a common business layer that can leave on the client or the server that is capable of using the same entity model queries.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5693117124170619532-8751547310517841892?l=architecture-blog.rdacorp.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=xNDYyTKP_p4:KgSO2s0ceNk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=xNDYyTKP_p4:KgSO2s0ceNk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=xNDYyTKP_p4:KgSO2s0ceNk:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=xNDYyTKP_p4:KgSO2s0ceNk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=xNDYyTKP_p4:KgSO2s0ceNk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=xNDYyTKP_p4:KgSO2s0ceNk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=xNDYyTKP_p4:KgSO2s0ceNk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=xNDYyTKP_p4:KgSO2s0ceNk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RdaArchitectureEvangelistTeamBlog/~4/xNDYyTKP_p4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://architecture-blog.rdacorp.com/feeds/8751547310517841892/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5693117124170619532&amp;postID=8751547310517841892" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/8751547310517841892?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/8751547310517841892?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RdaArchitectureEvangelistTeamBlog/~3/xNDYyTKP_p4/using-adonet-entity-model-against-sql.html" title="Using an ADO.NET Entity Model Against SQL Server and SqlCE" /><author><name>Damon</name><uri>http://www.blogger.com/profile/03137988805724796652</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://architecture-blog.rdacorp.com/2010/04/using-adonet-entity-model-against-sql.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ACQ387fCp7ImA9WxFSEUs.&quot;"><id>tag:blogger.com,1999:blog-5693117124170619532.post-7050422858769879128</id><published>2010-04-13T08:28:00.001-04:00</published><updated>2010-04-13T08:29:22.104-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-13T08:29:22.104-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Azure Billing" /><category scheme="http://www.blogger.com/atom/ns#" term="David Makogon" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><title>Azure: Staging and Compute-Hour Metering</title><content type="html">In &lt;a href="http://rdaarchitecture.blogspot.com/2010/03/azure-true-cost-of-web-and-worker-roles.html" target="_blank" title="The True Cost of Web and Worker Roles"&gt;this post&lt;/a&gt;, I talked about how web and worker roles are considered live the moment they are deployed, whether stopped or running. I received a few follow-up questions about billing when using the Staging area, as well as clarification on how compute-hours are measured.&lt;br /&gt;
&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;&lt;h3&gt;Production and Staging&lt;/h3&gt;When deploying to Azure, you have a choice between Production and Staging:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;a href="http://lh5.ggpht.com/_rKuJyBZ8UWY/S7pDsACKC3I/AAAAAAAAAdc/0WsEAU4R9Ao/s1600-h/prod-and-staging%5B3%5D.png"&gt;&lt;img alt="prod-and-staging" border="0" height="168" src="http://lh3.ggpht.com/_rKuJyBZ8UWY/S7pDxkiWcYI/AAAAAAAAAdg/9QfyNe2Ipbw/prod-and-staging_thumb%5B1%5D.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="prod-and-staging" width="442" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
This comes in handy when upgrading your application. Let’s say you have an application already in Production, and you now have a new version you’d like to upgrade to. You can deploy that new version to a separate Staging area, which provides you with a separate “test URL” as well as any worker and web roles your application needs. You can run this app just like you’d run your production app. When you’re done testing, &lt;em&gt;swap staging and production.&lt;/em&gt; This is effectively a Virtual IP address swap, so your end-users simply see an upgraded application as soon as you choose to execute the swap. &lt;br /&gt;
&lt;br /&gt;
This is a terrific feature, allowing you to test an application without service disruption. It also allows you to quickly swap back to the previously-deployed version if something go wrong after deploying your new version to production.&lt;br /&gt;
&lt;br /&gt;
Once you’re sure your new version is working ok, &lt;em&gt;consider deleting your service from Staging. &lt;/em&gt;Be aware that &lt;strong&gt;&lt;em&gt;your staging area is also consuming virtual machine instances&lt;/em&gt;&lt;/strong&gt;. &lt;em&gt;Staging &lt;/em&gt;instances and &lt;em&gt;Production &lt;/em&gt;instances are equivalent: Each instance is a Virtual machine; &lt;em&gt;Staging&lt;/em&gt; instances are billed just like &lt;em&gt;Production&lt;/em&gt; instances. If you leave your service deployed to both Production and Staging, you will be accruing Compute-Hour charges for both. Just keep this in mind when estimating your monthly Azure costs.&lt;br /&gt;
&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;&lt;h3&gt;How the hour is metered&lt;/h3&gt;As each application is deployed, its virtual machines are created. The moment those virtual machines are in place, metering begins. This includes &lt;em&gt;stopped &lt;/em&gt;services. For instance: assuming we clicked Deploy on the Production area of our service, and uploaded an application comprising one worker role and one web role, we’d then see our deployment in a stopped state:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://lh5.ggpht.com/_rKuJyBZ8UWY/S8RixtpeT9I/AAAAAAAAAd8/nKfobE2uB4Q/s1600-h/deployed-paused.png"&gt;&lt;img alt="deployed-paused" border="0" height="268" src="http://lh3.ggpht.com/_rKuJyBZ8UWY/S7pD7Nv4hkI/AAAAAAAAAeA/1tDvZ9VQ40Q/deployed-paused_thumb.png?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="deployed-paused" width="447" /&gt;&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
At this moment, the billing clock begins for each of the instances, and billing is based on a 60-minute window: If you deploy at 4:16pm, your 60-minute window is from 4:16pm to 5:16pm (it’s not 4pm-5pm). In this example, I have two roles, with a combined consumption of 2 compute-hours per clock-hour.&lt;br /&gt;
If I decide to stop either of these roles before the entire hour is consumed, it’s still metered for the full hour.&lt;br /&gt;
&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;&lt;h3&gt;Multiple Deployments in a Clock-Hour&lt;/h3&gt;Let’s say I delete my deployment after only 5 minutes. And then I decide to deploy again to Production. At this moment, the clock starts again for my new deployment. Using our sample app above, with one worker role and one web role:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Deploy to Production at 4:16pm, delete deployment at 4:21pm. &lt;strong&gt;Compute-hours billed: 2&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Deploy again to Production at 4:25pm, delete deployment at 4:30pm. &lt;strong&gt;Compute-hours billed: 2&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Total clock time: 14 minutes. Total compute-hours: 4&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;I realize this is a contrived example, but I want to emphasize the fine details of compute-hours:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Each instance is metered from the moment it comes to life in a Virtual Machine.&lt;/li&gt;
&lt;li&gt;Compute-hours are rounded up to the nearest hour. So a service is metered at 1 compute-hour, whether it runs for only 5 minutes or 59 minutes.&lt;/li&gt;
&lt;li&gt;Services deployed within the same clock-hour are completely unrelated, billing-wise. If you stop and delete your application and then deploy it again, all within the same clock-hour, you will still be billed separately for each deployment.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5693117124170619532-7050422858769879128?l=architecture-blog.rdacorp.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=2MZ8iXvbEwY:Y9xleriB1_E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=2MZ8iXvbEwY:Y9xleriB1_E:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=2MZ8iXvbEwY:Y9xleriB1_E:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=2MZ8iXvbEwY:Y9xleriB1_E:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=2MZ8iXvbEwY:Y9xleriB1_E:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=2MZ8iXvbEwY:Y9xleriB1_E:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=2MZ8iXvbEwY:Y9xleriB1_E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=2MZ8iXvbEwY:Y9xleriB1_E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RdaArchitectureEvangelistTeamBlog/~4/2MZ8iXvbEwY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://architecture-blog.rdacorp.com/feeds/7050422858769879128/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5693117124170619532&amp;postID=7050422858769879128" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/7050422858769879128?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/7050422858769879128?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RdaArchitectureEvangelistTeamBlog/~3/2MZ8iXvbEwY/azure-staging-and-compute-hour-metering.html" title="Azure: Staging and Compute-Hour Metering" /><author><name>David Makogon</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_rKuJyBZ8UWY/S7pDxkiWcYI/AAAAAAAAAdg/9QfyNe2Ipbw/s72-c/prod-and-staging_thumb%5B1%5D.png?imgmax=800" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://architecture-blog.rdacorp.com/2010/04/azure-staging-and-compute-hour-metering.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08ERXYzeip7ImA9WxFTFkk.&quot;"><id>tag:blogger.com,1999:blog-5693117124170619532.post-2612215981430601611</id><published>2010-04-07T08:03:00.001-04:00</published><updated>2010-04-07T08:03:24.882-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-07T08:03:24.882-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="David Makogon" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET 4.0" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><category scheme="http://www.blogger.com/atom/ns#" term="Cloud Computing" /><title>Azure: New Guest OS 1.2</title><content type="html">&lt;p&gt;On April 5, Azure Guest OS 1.2 became available. If you’ve published any new Azure services in the past day or two, your new deployments are probably using v1.2. In the Azure Portal, take a peek at the service configuration:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_rKuJyBZ8UWY/S7x0hfbYuKI/AAAAAAAAAds/b6Q0Q5J7mdE/s1600-h/guestos12%5B3%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="guestos12" border="0" alt="guestos12" src="http://lh3.ggpht.com/_rKuJyBZ8UWY/S7x0h-nDlFI/AAAAAAAAAdw/gWiNFd6zu6M/guestos12_thumb%5B1%5D.png?imgmax=800" width="634" height="172" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So: what does v1.2 have?&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;HTTP dynamic compression for webroles &lt;/li&gt;    &lt;li&gt;Updates to the IIS URL Rewrite module &lt;/li&gt;    &lt;li&gt;.NET 4 RC &lt;/li&gt;    &lt;li&gt;Security patches &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Ooh - .NET 4 RC??? Does that mean we can now deploy .NET 4 RC builds to Azure??? Well… Not yet. The Azure 1.1 SDK only supports .NET 3.5 build output. If you try changing your role’s target framework to .NET 4, you’ll get an error:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_rKuJyBZ8UWY/S7x0itpRhqI/AAAAAAAAAd0/oJb_Da6kekU/s1600-h/dotnet40error%5B3%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dotnet40error" border="0" alt="dotnet40error" src="http://lh4.ggpht.com/_rKuJyBZ8UWY/S7x0jAG_zGI/AAAAAAAAAd4/hyYiR6e8Nl0/dotnet40error_thumb%5B1%5D.png?imgmax=800" width="626" height="82" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The .NET 4 RC framework is installed for compatibility testing. According to &lt;a href="http://msdn.microsoft.com/en-us/library/ff436045.aspx" target="_blank"&gt;this MSDN article&lt;/a&gt; about Guest OS 1.2, there’s a known issue with unversioned performance counters.&lt;/p&gt;  &lt;p&gt;This is a good sign though! April 12 is the Release-to-manufacturing (RTM) date for .NET 4. At MIX earlier this year, the Azure team announced that we’d see .NET 4 support within 90 days of RTM. Hopefully, having this new guest OS will help accelerate testing and bring that date closer to April 12. &lt;strong&gt;That also means you should &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazure/threads" target="_blank"&gt;send the Azure team any feedback&lt;/a&gt; you have regarding issues with the new Guest OS.&lt;/strong&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5693117124170619532-2612215981430601611?l=architecture-blog.rdacorp.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=c0pEeZHcFoo:IPQGGWhi5A0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=c0pEeZHcFoo:IPQGGWhi5A0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=c0pEeZHcFoo:IPQGGWhi5A0:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=c0pEeZHcFoo:IPQGGWhi5A0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=c0pEeZHcFoo:IPQGGWhi5A0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=c0pEeZHcFoo:IPQGGWhi5A0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=c0pEeZHcFoo:IPQGGWhi5A0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=c0pEeZHcFoo:IPQGGWhi5A0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RdaArchitectureEvangelistTeamBlog/~4/c0pEeZHcFoo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://architecture-blog.rdacorp.com/feeds/2612215981430601611/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5693117124170619532&amp;postID=2612215981430601611" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/2612215981430601611?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/2612215981430601611?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RdaArchitectureEvangelistTeamBlog/~3/c0pEeZHcFoo/azure-new-guest-os-12.html" title="Azure: New Guest OS 1.2" /><author><name>David Makogon</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_rKuJyBZ8UWY/S7x0h-nDlFI/AAAAAAAAAdw/gWiNFd6zu6M/s72-c/guestos12_thumb%5B1%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://architecture-blog.rdacorp.com/2010/04/azure-new-guest-os-12.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYDRXszeip7ImA9WxFSEUg.&quot;"><id>tag:blogger.com,1999:blog-5693117124170619532.post-6826404942466918438</id><published>2010-03-26T13:45:00.001-04:00</published><updated>2010-04-13T07:12:54.582-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-13T07:12:54.582-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Azure Billing" /><category scheme="http://www.blogger.com/atom/ns#" term="David Makogon" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure Portal" /><title>Azure: How to activate the MSDN Premium Special Account</title><content type="html">&lt;p&gt;When setting up your Azure account, one thing you’ll need to do is select an Azure &lt;em&gt;product &lt;/em&gt;to add to your shopping cart. Currently there’s only one product type available to the general public: &lt;strong&gt;Azure Platform Introductory Special.&lt;/strong&gt; This is essentially a pay-per-use account, with a 25 free monthly compute-hours, one SQL Azure database for 3 months,&amp;#160; and 500MB in/500MB out per month. Beyond that, you’re paying standard Azure rates. You can see the rate breakdowns &lt;a href="http://www.microsoft.com/windowsazure/offers/popup.aspx?lang=en&amp;amp;locale=en-US&amp;amp;offer=MS-AZR-0001P" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;If you’re an MSDN Premium subscriber, you have a significantly-better offer available:&lt;strong&gt; Windows Azure Platform MSDN Premium&lt;/strong&gt;. This plan offers 750 monthly compute-hours, 3 SQL Azure databases, and 7GB in/14GB out per month, for 8 months (see all details &lt;a href="http://www.microsoft.com/windowsazure/offers/popup.aspx?lang=en&amp;amp;locale=en-US&amp;amp;offer=MS-AZR-0005P" target="_blank"&gt;here&lt;/a&gt;).&amp;#160; &lt;em&gt;However,&lt;strong&gt; &lt;/strong&gt;&lt;/em&gt;&lt;strong&gt;it’s not exactly easy to get this offer activated&lt;/strong&gt;. Here’s how:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;MSDN Subscription Portal&lt;/h3&gt;  &lt;p&gt;First, navigate to your MSDN subscription at &lt;a href="http://msdn.microsoft.com"&gt;http://msdn.microsoft.com&lt;/a&gt;. Sign in and click My Account:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_rKuJyBZ8UWY/S6zymo3177I/AAAAAAAAAbU/NgWfkrQFb2w/s1600-h/MSDN-myaccount%5B2%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="MSDN-myaccount" border="0" alt="MSDN-myaccount" src="http://lh3.ggpht.com/_rKuJyBZ8UWY/S6zynKaCBBI/AAAAAAAAAbY/SgZnwVz5exk/MSDN-myaccount_thumb.jpg?imgmax=800" width="244" height="198" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now you should see your full account details, along with all available services. Select the Azure service option:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_rKuJyBZ8UWY/S6zynmJd4HI/AAAAAAAAAbc/-o4XMB2-f44/s1600-h/azure-benefit%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="azure-benefit" border="0" alt="azure-benefit" src="http://lh4.ggpht.com/_rKuJyBZ8UWY/S6zyoN0vgCI/AAAAAAAAAbg/fSM0OnYuBKo/azure-benefit_thumb%5B1%5D.jpg?imgmax=800" width="416" height="136" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;Microsoft Online Services Customer Portal&lt;/h3&gt;  &lt;p&gt;This will take you to the Microsoft Online Services Customer Portal. Login with the same Live ID as your MSDN subscription. If this is your first time here, you’ll need to fill out some profile information:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_rKuJyBZ8UWY/S60BhLUDgYI/AAAAAAAAAb0/Uj2TPj8IEy8/s1600-h/wizard1%5B2%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="wizard1" border="0" alt="wizard1" src="http://lh6.ggpht.com/_rKuJyBZ8UWY/S60BhbmDPeI/AAAAAAAAAb4/WLYeYfry2l0/wizard1_thumb.jpg?imgmax=800" width="244" height="178" /&gt;&lt;/a&gt; &lt;a href="http://lh5.ggpht.com/_rKuJyBZ8UWY/S60Bh2xsT7I/AAAAAAAAAb8/3uh2iOF062w/s1600-h/wizard2%5B2%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="wizard2" border="0" alt="wizard2" src="http://lh6.ggpht.com/_rKuJyBZ8UWY/S60BiOa0WpI/AAAAAAAAAcA/1t0f0TiGPw0/wizard2_thumb.jpg?imgmax=800" width="244" height="94" /&gt;&lt;/a&gt; &lt;a href="http://lh3.ggpht.com/_rKuJyBZ8UWY/S60BinHvOYI/AAAAAAAAAcE/C2pmXUGkomQ/s1600-h/wizard3%5B2%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="wizard3" border="0" alt="wizard3" src="http://lh5.ggpht.com/_rKuJyBZ8UWY/S60Biw_ct0I/AAAAAAAAAcI/GNshBW_DtJY/wizard3_thumb.jpg?imgmax=800" width="244" height="87" /&gt;&lt;/a&gt; &lt;a href="http://lh4.ggpht.com/_rKuJyBZ8UWY/S60BjJ_GaQI/AAAAAAAAAcM/kr22rt8KcCY/s1600-h/wizard4%5B2%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="wizard4" border="0" alt="wizard4" src="http://lh4.ggpht.com/_rKuJyBZ8UWY/S60BjYp9AiI/AAAAAAAAAcQ/1gprhNmps6M/wizard4_thumb.jpg?imgmax=800" width="244" height="52" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;. Once that’s done, you’ll see the MSDN Premium subscription offer in your cart:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_rKuJyBZ8UWY/S60FZEMcKEI/AAAAAAAAAc8/hk1Pe0w5TWk/s1600-h/shoppingcart-no-addr%5B6%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="shoppingcart-no-addr" border="0" alt="shoppingcart-no-addr" src="http://lh3.ggpht.com/_rKuJyBZ8UWY/S60FZbfcErI/AAAAAAAAAdA/wfe3YtbV5HY/shoppingcart-no-addr_thumb%5B4%5D.jpg?imgmax=800" width="487" height="226" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now all that’s left is to agree to the terms and checkout. You’ll have to provide your credit card information, &lt;strong&gt;&lt;em&gt;but this is only used for covering charges beyond those provided for free.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Once you complete this step, you should now have the MSDN Premium Azure product. Select the Subscription tab to confirm:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_rKuJyBZ8UWY/S60FZ2_UHfI/AAAAAAAAAcc/pbwPL6mo350/s1600-h/msdn-in-subscriptions%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="msdn-in-subscriptions" border="0" alt="msdn-in-subscriptions" src="http://lh5.ggpht.com/_rKuJyBZ8UWY/S60FaGp_FpI/AAAAAAAAAcg/wPeejkrLohg/msdn-in-subscriptions_thumb%5B1%5D.jpg?imgmax=800" width="515" height="127" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Note: It’s possible that the status is &lt;em&gt;pending&lt;/em&gt;, which simply means the account is still being provisioned. Chances are, if you refresh this page in a few minutes, it should be active.&lt;/p&gt;  &lt;p&gt;If you made it this far, &lt;strong&gt;congratulations&lt;/strong&gt;! You should now have Azure activated with your MSDN Premium benefits. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Azure Developer Portal&lt;/h3&gt;  &lt;p&gt;Now it’s time to visit the Azure portal, at &lt;a href="http://www.azure.com"&gt;www.azure.com&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_rKuJyBZ8UWY/S60Fad-IU4I/AAAAAAAAAck/Ga-w_4AGIWA/s1600-h/azureportal%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="azureportal" border="0" alt="azureportal" src="http://lh3.ggpht.com/_rKuJyBZ8UWY/S60Fa4Fiq2I/AAAAAAAAAco/jRfwIgsCKhU/azureportal_thumb%5B1%5D.jpg?imgmax=800" width="352" height="126" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Click &lt;strong&gt;Account&lt;/strong&gt; (in the top-right corner). This will show you the various portal links:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_rKuJyBZ8UWY/S60FbPCb5GI/AAAAAAAAAcs/unqrvMq88eE/s1600-h/portal-options%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="portal-options" border="0" alt="portal-options" src="http://lh4.ggpht.com/_rKuJyBZ8UWY/S60Fbsd0IRI/AAAAAAAAAcw/DAvy8OjmcJw/portal-options_thumb%5B1%5D.jpg?imgmax=800" width="338" height="168" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Click &lt;strong&gt;Go to the Windows Azure Developer Portal.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;At this point, simply login with your Live ID. Since its your first time, you’ll be asked to create an Azure project. Once you do, you’ll see it listed in &lt;strong&gt;My Projects:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_rKuJyBZ8UWY/S60Fb7U6TfI/AAAAAAAAAc0/mdiMVHIvKIw/s1600-h/MyProjects-blurred%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="MyProjects-blurred" border="0" alt="MyProjects-blurred" src="http://lh5.ggpht.com/_rKuJyBZ8UWY/S60FcUsWRPI/AAAAAAAAAc4/dmc3hIzDvtY/MyProjects-blurred_thumb%5B1%5D.jpg?imgmax=800" width="401" height="169" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h3&gt;Finish Line&lt;/h3&gt;  &lt;p&gt;And… you should now be all ready to add an Azure application service to your account! Now go run to Visual Studio, build your Hello Azure World! (a rite of passage), deploy it to your new Azure service, and &lt;strong&gt;go brag to all your friends!&lt;/strong&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5693117124170619532-6826404942466918438?l=architecture-blog.rdacorp.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=dQtPFDS529k:-nMezoeuR2A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=dQtPFDS529k:-nMezoeuR2A:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=dQtPFDS529k:-nMezoeuR2A:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=dQtPFDS529k:-nMezoeuR2A:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=dQtPFDS529k:-nMezoeuR2A:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=dQtPFDS529k:-nMezoeuR2A:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=dQtPFDS529k:-nMezoeuR2A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=dQtPFDS529k:-nMezoeuR2A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RdaArchitectureEvangelistTeamBlog/~4/dQtPFDS529k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://architecture-blog.rdacorp.com/feeds/6826404942466918438/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5693117124170619532&amp;postID=6826404942466918438" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/6826404942466918438?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/6826404942466918438?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RdaArchitectureEvangelistTeamBlog/~3/dQtPFDS529k/azure-how-to-activate-msdn-premium.html" title="Azure: How to activate the MSDN Premium Special Account" /><author><name>David Makogon</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_rKuJyBZ8UWY/S6zynKaCBBI/AAAAAAAAAbY/SgZnwVz5exk/s72-c/MSDN-myaccount_thumb.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://architecture-blog.rdacorp.com/2010/03/azure-how-to-activate-msdn-premium.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUENQHozfSp7ImA9WxBaFk4.&quot;"><id>tag:blogger.com,1999:blog-5693117124170619532.post-2732821625130275003</id><published>2010-03-23T17:08:00.001-04:00</published><updated>2010-03-26T16:01:31.485-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-26T16:01:31.485-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="David Makogon" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><title>Don’t Delete That Azure Service!</title><content type="html">&lt;p&gt;I’m having some serious fun with Azure these days. I have my own pet project, but I also have several small “demo” projects where I’m demonstrating something for various clients. Each of these demos has its own Azure service.&lt;/p&gt;  &lt;p&gt;An Azure Service is the place where you upload an application to: your web roles, your worker roles, storage. It has all your regional settings (such as geographic affinity), and manages how many instances you want to run for each web role and worker role. And, of course, the Azure service gets its own name within the cloudapp.net domain (e.g. http://YourServiceName.cloudapp.net).&lt;/p&gt;  &lt;p&gt;Once you upload code to an instance, you start incurring usage metering. However, you may create an Azure services without deploying any code,&amp;#160; which means no cost incurred. This lets you get things all set up, and eventually upload something for testing. Then, when you’re moving back to the development fabric to continue development, you can simply delete the deployment (but leave the Azure service definition intact). This lets you save those precious monthly compute-hours for when you really need ‘em (see my post &lt;a href="http://rdaarchitecture.blogspot.com/2010/03/azure-true-cost-of-web-and-worker-roles.html" target="_blank"&gt;here&lt;/a&gt; for more details about monthly hours).&lt;/p&gt;  &lt;p&gt;Up until today, you were able to create up to 20 hosted services within your account. Maybe that seems like a lot, but imagine you’re a consultant working on several Azure projects, maybe some for clients, some for yourself. And maybe you’re trying out a few demos based on some training material. Or you’re testing out a demo for a user group talk. Suddenly, that 20-service limit seems pretty reasonable. It’s nice to get things all set up for each project, and not have to worry about configuring them again. It’s also nice to not worry about setting up cloudapp.net names (or losing the one you found, because someone else snagged it after you deleted it).&lt;/p&gt;  &lt;p&gt;Well… as of today, each account is now capped at six Azure services. &lt;strong&gt;Don’t panic! If you currently have more than six configured services, &lt;em&gt;they will not be deleted by Azure; you’re grandfathered.&lt;/em&gt;&lt;/strong&gt; But… if &lt;em&gt;you &lt;/em&gt;delete them, you won’t be able to re-add them until you’re below the six-service limit.&lt;/p&gt;  &lt;p&gt;For more details about today’s Azure service changes, see &lt;a href="http://blogs.msdn.com/windowsazure/archive/2010/03/23/changed-limit-on-the-number-of-applications-per-windows-azure-subscription.aspx" target="_blank"&gt;this blog post&lt;/a&gt; by the Azure team.&lt;/p&gt;  &lt;p&gt;So my words of wisdom today are, simply: &lt;em&gt;Don’t delete that Azure service!&lt;/em&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5693117124170619532-2732821625130275003?l=architecture-blog.rdacorp.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=dVgRvAn5EUo:RysohX71oqw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=dVgRvAn5EUo:RysohX71oqw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=dVgRvAn5EUo:RysohX71oqw:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=dVgRvAn5EUo:RysohX71oqw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=dVgRvAn5EUo:RysohX71oqw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=dVgRvAn5EUo:RysohX71oqw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=dVgRvAn5EUo:RysohX71oqw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=dVgRvAn5EUo:RysohX71oqw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RdaArchitectureEvangelistTeamBlog/~4/dVgRvAn5EUo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://architecture-blog.rdacorp.com/feeds/2732821625130275003/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5693117124170619532&amp;postID=2732821625130275003" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/2732821625130275003?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/2732821625130275003?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RdaArchitectureEvangelistTeamBlog/~3/dVgRvAn5EUo/dont-delete-that-azure-service.html" title="Don’t Delete That Azure Service!" /><author><name>David Makogon</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://architecture-blog.rdacorp.com/2010/03/dont-delete-that-azure-service.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUCRHY5fSp7ImA9WxBaEkQ.&quot;"><id>tag:blogger.com,1999:blog-5693117124170619532.post-7874765565919534321</id><published>2010-03-22T10:39:00.006-04:00</published><updated>2010-03-22T16:37:45.825-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-22T16:37:45.825-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Application Architecture" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><category scheme="http://www.blogger.com/atom/ns#" term="AppFabric" /><title>Azure Migration Strategies and Architecture Video</title><content type="html">Dr Z. and I sat down to have a discussion around migrating existing enterprise applications into the Azure AppFabric, it's now been posted over at Channel 9 so take a look &lt;a href="http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Architecting-Solutions-with-Microsoft-Azure-NET-Services/"&gt;here&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here's the synopsis:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"&lt;span class="Apple-style-span"   style="  color: rgb(42, 15, 1); font-family:'Segoe UI', sans-serif;font-size:13px;"&gt;In this &lt;a href="http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Architecting-Solutions-with-Microsoft-Azure-NET-Services/"&gt;episode&lt;/a&gt;, &lt;a href="http://rdaarchitecture.blogspot.com/2009/06/net-services-talk-cloud-computing-group.html"&gt;Damon Squires&lt;/a&gt;, principal architect at &lt;a href="http://rdaarchitecture.blogspot.com/"&gt;RDA&lt;/a&gt;, discusses with Zhiming Xue where in a typical enterprise solution &lt;a href="http://www.microsoft.com/windowsazure/"&gt;Microsoft Azure&lt;/a&gt; &lt;a href="http://www.microsoft.com/windowsazure/appfabric/"&gt;AppFabric&lt;/a&gt; -- consisting of the Service Bus and the Access Control Service -- may be used, how on-premise data are communicated with these services running in the cloud and what benefits such a hybrid solution may bring to enterprise customers."&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5693117124170619532-7874765565919534321?l=architecture-blog.rdacorp.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=SUVQOEULTr4:Etzkd_Hcm3g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=SUVQOEULTr4:Etzkd_Hcm3g:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=SUVQOEULTr4:Etzkd_Hcm3g:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=SUVQOEULTr4:Etzkd_Hcm3g:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=SUVQOEULTr4:Etzkd_Hcm3g:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=SUVQOEULTr4:Etzkd_Hcm3g:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=SUVQOEULTr4:Etzkd_Hcm3g:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=SUVQOEULTr4:Etzkd_Hcm3g:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RdaArchitectureEvangelistTeamBlog/~4/SUVQOEULTr4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://architecture-blog.rdacorp.com/feeds/7874765565919534321/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5693117124170619532&amp;postID=7874765565919534321" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/7874765565919534321?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/7874765565919534321?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RdaArchitectureEvangelistTeamBlog/~3/SUVQOEULTr4/azure-migration-strategies-and.html" title="Azure Migration Strategies and Architecture Video" /><author><name>Damon</name><uri>http://www.blogger.com/profile/03137988805724796652</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://architecture-blog.rdacorp.com/2010/03/azure-migration-strategies-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUENQHozfip7ImA9WxBaFk4.&quot;"><id>tag:blogger.com,1999:blog-5693117124170619532.post-1776265016223949692</id><published>2010-03-17T14:16:00.001-04:00</published><updated>2010-03-26T16:01:31.486-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-26T16:01:31.486-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="David Makogon" /><category scheme="http://www.blogger.com/atom/ns#" term="RIA" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><title>RIA Services RC, Deployment Guide, and Azure</title><content type="html">&lt;p&gt;At the MIX conference this week, Scott Guthrie announced a Release Candidate of WCF RIA Services, along with a new RIA Services Toolkit, both available &lt;a href="http://silverlight.net/getstarted/riaservices/" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Saurabh Pant has a great &lt;a href="http://blogs.msdn.com/saurabh/archive/2010/03/16/ria-services-application-deployment.aspx" target="_blank"&gt;blog post&lt;/a&gt; about deploying RIA Services to your server. This post specifically targets .NET 4, Silverlight 4, and Visual Studio 2010, and even announces some hosting companies that now provide RIA Services RC support.&lt;/p&gt;  &lt;p&gt;While I won't rehash all of the deployment details, I wanted to draw attention to Azure deployments. Saurabh points out that RIA Services RC only supports .NET 4. Currently, Azure only supports .NET 3.5. This means the “server” side of your RIA Services app cannot yet be used in Azure (although you can develop it locally and run with the Development Fabric).&lt;/p&gt;  &lt;p&gt;I haven’t heard or seen any official statement about .NET 4 support on Azure, but my gut feeling (read: &lt;em&gt;educated guess&lt;/em&gt;) is that we’ll see an Azure Virtual Machine upgrade at the same time .NET 4 is RTM, currently slated for April 12. Hopefully this will all be cleared up in the next month.&lt;/p&gt;  &lt;p&gt;If you need to deploy a RIA Services application to Azure today, continue working with the RIA Services Beta which was announced at PDC in November. The Beta works with both .NET 3.5 and .NET 4.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5693117124170619532-1776265016223949692?l=architecture-blog.rdacorp.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=aZMY15Fkm-g:-2htb_P5IqE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=aZMY15Fkm-g:-2htb_P5IqE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=aZMY15Fkm-g:-2htb_P5IqE:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=aZMY15Fkm-g:-2htb_P5IqE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=aZMY15Fkm-g:-2htb_P5IqE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=aZMY15Fkm-g:-2htb_P5IqE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=aZMY15Fkm-g:-2htb_P5IqE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=aZMY15Fkm-g:-2htb_P5IqE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RdaArchitectureEvangelistTeamBlog/~4/aZMY15Fkm-g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://architecture-blog.rdacorp.com/feeds/1776265016223949692/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5693117124170619532&amp;postID=1776265016223949692" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/1776265016223949692?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/1776265016223949692?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RdaArchitectureEvangelistTeamBlog/~3/aZMY15Fkm-g/ria-services-rc-deployment-guide-and.html" title="RIA Services RC, Deployment Guide, and Azure" /><author><name>David Makogon</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://architecture-blog.rdacorp.com/2010/03/ria-services-rc-deployment-guide-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUENQHoyeCp7ImA9WxBaFk4.&quot;"><id>tag:blogger.com,1999:blog-5693117124170619532.post-6241817357829282446</id><published>2010-03-15T15:10:00.001-04:00</published><updated>2010-03-26T16:01:31.490-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-26T16:01:31.490-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="David Makogon" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="MIX" /><title>Silverlight 4 RC Announced, Plays Nice with Visual Studio Again</title><content type="html">&lt;p&gt;At PDC In November, we were treated to the announcement of Silverlight 4 and its sheer number of enhancements over version 3 (you can look at Tim Heuer’s &lt;a href="http://bit.ly/aKcm7v" target="_blank"&gt;blog post&lt;/a&gt; to see all the new features explained). Silverlight 4 Beta worked great with Visual Studio 2010 Beta 2.&lt;/p&gt;  &lt;p&gt;Then we were treated to yet another announcement in February: Visual Studio 2010 RC, with many bug fixes and serious performance speed-up. Of course, I immediately uninstalled VS2010 Beta 2 and installed the RC &lt;em&gt;before &lt;/em&gt;reading all the twitter traffic about &lt;strong&gt;&lt;em&gt;Silverlight 4 being incompatible with Visual Studio 2010 RC!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Since then, we’ve heard nothing about the re-integration of SL4 with VS2010 except that it would “eventually happen.” Ever since, I’ve been working with two VM’s: One with VS2010 Beta 2 for SL4 development, and one with VS2010 RC for Azure development (the new Azure SDK requires VS2010 RC).&lt;/p&gt;  &lt;p&gt;Well… as of this morning’s MIX keynote, the two are reunited again! The new Silverlight 4 Release Candidate is now available for download at &lt;a href="http://www.silverlight.net" target="_blank"&gt;www.silverlight.net&lt;/a&gt;, and is fully compatible with VS2010 RC. This release also includes an update to RIA Services RC as well.&lt;/p&gt;  &lt;p&gt;While I haven’t had time to convert any projects, I did have time to install Silverlight 4 RC, out of curiosity. Sure enough, SL4 is now an option when creating a new Silverlight project:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_rKuJyBZ8UWY/S56GJV4uOXI/AAAAAAAAAbM/-t6ElA8JvNY/s1600-h/sl4-vs2010rc%5B2%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="sl4-vs2010rc" border="0" alt="sl4-vs2010rc" src="http://lh5.ggpht.com/_rKuJyBZ8UWY/S56GKE8exEI/AAAAAAAAAbQ/bpylt-Kmt0A/sl4-vs2010rc_thumb.png?imgmax=800" width="180" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Before installing, I did need to uninstall the SL4 Beta tools. After that, the installation went very smoothly.&lt;/p&gt;  &lt;p&gt;Time to delete my VS2010 Beta 2 VM…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5693117124170619532-6241817357829282446?l=architecture-blog.rdacorp.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=Gpxw1BEUmYE:U-8I5iouNI8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=Gpxw1BEUmYE:U-8I5iouNI8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=Gpxw1BEUmYE:U-8I5iouNI8:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=Gpxw1BEUmYE:U-8I5iouNI8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=Gpxw1BEUmYE:U-8I5iouNI8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=Gpxw1BEUmYE:U-8I5iouNI8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=Gpxw1BEUmYE:U-8I5iouNI8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=Gpxw1BEUmYE:U-8I5iouNI8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RdaArchitectureEvangelistTeamBlog/~4/Gpxw1BEUmYE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://architecture-blog.rdacorp.com/feeds/6241817357829282446/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5693117124170619532&amp;postID=6241817357829282446" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/6241817357829282446?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/6241817357829282446?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RdaArchitectureEvangelistTeamBlog/~3/Gpxw1BEUmYE/silverlight-4-rc-announced-plays-nice.html" title="Silverlight 4 RC Announced, Plays Nice with Visual Studio Again" /><author><name>David Makogon</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_rKuJyBZ8UWY/S56GKE8exEI/AAAAAAAAAbQ/bpylt-Kmt0A/s72-c/sl4-vs2010rc_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://architecture-blog.rdacorp.com/2010/03/silverlight-4-rc-announced-plays-nice.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYDRXszeyp7ImA9WxFSEUg.&quot;"><id>tag:blogger.com,1999:blog-5693117124170619532.post-593830943832580623</id><published>2010-03-12T14:48:00.001-05:00</published><updated>2010-04-13T07:12:54.583-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-13T07:12:54.583-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Azure Billing" /><category scheme="http://www.blogger.com/atom/ns#" term="David Makogon" /><category scheme="http://www.blogger.com/atom/ns#" term=".net" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Azure" /><category scheme="http://www.blogger.com/atom/ns#" term="Cloud Computing" /><title>Azure: The true cost of web and worker roles</title><content type="html">&lt;p&gt;Since February 1, Azure customers are now being billed for their consumption of Azure resources. If you were an early adopter, you might have been spoiled by the free usage during CTP over the past year, or even during January of this year, when “mock bills” were generated but no actual costs accrued.&lt;/p&gt;  &lt;p&gt;Recently I’ve been fielding questions about the true expense of running Azure web roles and worker roles, including questions about Microsoft’s “free” account for MSDN Premium developers. Let me share a few tidbits here that will, hopefully, help you manage your Azure costs.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Roles and Virtual Machines&lt;/h3&gt;  &lt;p&gt;First things first: web and worker roles are hosted in virtual machines (VMs). Each role deploys to its own VM. So, if you have a web role for your Silverlight application, and a worker role for some background tasks (like periodically fetching data from an external source and storing it in SQL Azure), you will actually consume two VMs, one for each role.&lt;/p&gt;  &lt;h3&gt;Virtual Machines and Instances&lt;/h3&gt;  &lt;p&gt;Ok, next up: &lt;em&gt;instances.&lt;/em&gt; At the most basic level, you could view a VM as synonymous with an &lt;em&gt;instance, &lt;/em&gt;and in the example above, you’d have two instances. Things take a twist, though, when you consider that Azure offers multiple VM sizes. The smallest size sets the baseline, and is equivalent to 1 instance:&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="140"&gt;Type&lt;/td&gt;        &lt;td valign="top" width="141"&gt;Instance count&lt;/td&gt;        &lt;td valign="top" width="117"&gt;Cost per hour&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="140"&gt;Small&lt;/td&gt;        &lt;td valign="top" width="141"&gt;1&lt;/td&gt;        &lt;td valign="top" width="117"&gt;0.12&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="140"&gt;Medium&lt;/td&gt;        &lt;td valign="top" width="141"&gt;2&lt;/td&gt;        &lt;td valign="top" width="117"&gt;0.24&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="140"&gt;Large&lt;/td&gt;        &lt;td valign="top" width="141"&gt;4&lt;/td&gt;        &lt;td valign="top" width="117"&gt;0.48&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="140"&gt;Extra Large&lt;/td&gt;        &lt;td valign="top" width="152"&gt;8&lt;/td&gt;        &lt;td valign="top" width="148"&gt;0.96&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Each of the VMs vary by number of CPU cores, RAM and disk space. The price scales along with the instance count, so an Extra Large VM costs 8x what a Small VM costs.&lt;/p&gt;  &lt;p&gt;Instances running ‘round-the-clock effectively cost 24 hours x 0.12 x 30 days =&lt;strong&gt; $86 monthly &lt;/strong&gt;for a Small VM, up to about&lt;strong&gt; $690 monthly&lt;/strong&gt; for an Extra large VM.&lt;/p&gt;  &lt;p&gt;Microsoft bills in &lt;em&gt;instance-hours&lt;/em&gt;. So you might be billed 48 instance-hours on a given 24-hour period, which either means you had two Small VM running for 24 hours or one Medium VM running for 24 hours.&lt;/p&gt;  &lt;h3&gt;Instances and Lifetimes&lt;/h3&gt;  &lt;p&gt;Now we’re getting to the fun part. Let’s say you just created a brand new Azure service, setting up a new name (like MyCoolApp.cloudapp.net). You just finished your first code iteration, and you publish your code to that new service of yours. Just two roles, both set up with one Small VM each.&lt;/p&gt;  &lt;p&gt;You might notice that it takes a few minutes to deploy your code to that new service. Why? Because Azure is spinning up new VMs for you. Why is that important? Hold that thought a moment…&lt;/p&gt;  &lt;p&gt;Ok, you’re done uploading and deploying, and &lt;em&gt;finally&lt;/em&gt;, the Azure dashboard tells you your app is running. &lt;strong&gt;&lt;em&gt;You are officially on the clock.&lt;/em&gt;&lt;/strong&gt; You are now being billed for your two instances.&lt;/p&gt;  &lt;p&gt;Now let’s get back to the point about your two new VMs. You might decide that, after your first set of tests, you’re going to &lt;em&gt;suspend &lt;/em&gt;your new service. That is, leave everything uploaded (so you can show off your new app to the Boss later today). Guess what: &lt;strong&gt;&lt;em&gt;You are still officially on the clock.&lt;/em&gt;&lt;/strong&gt; The simple truth is, Azure is still hosting two VMs for you, each taking up a “slot” in the cloud fabric. So you’re still being billed for it, whether the web and worker roles are running or suspended.&lt;/p&gt;  &lt;h3&gt;Lifetimes and Clock time&lt;/h3&gt;  &lt;p&gt;Alright – if you’ve gotten this far, you’ve realized that your newly-deployed app, even in a suspended state, is going to burn through hours pretty quickly. And if you’re an MSDN Premium subscriber, with 750 free compute-hours monthly, you might have just done some quick math:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;2 instances x 24 hours x 30 days = 1,440 hours !!!&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Essentially, your MSDN account is good for one Small VM (equal to 1 instance) running ‘round the clock, as that 1 instance burns just under 750 compute-hours.&lt;/p&gt;  &lt;p&gt;So you quickly scramble to delete your deployment from your service (don’t worry, your service definition, and fancy URL, stay in place; just your code and VMs get deleted). Lucky for you, your app was only live for about 10 minutes before you discovered this. So You can afford to deploy several times daily with little-to-no risk, as long as you delete the deployment after each test / demo cycle. Right?&lt;/p&gt;  &lt;p&gt;Well, not quite right. When you deploy a VM, you are billed hourly. So even if the VM is up for 10 minutes, you are billed for a compute-hour. Since our example is using two instances, we’ve consumed 2 compute-hours in a very short time.&lt;/p&gt;  &lt;h3&gt;Clock time vs CPU time&lt;/h3&gt;  &lt;p&gt;This final per-instance tidbit might be obvious by now, but I’ll call it out anyway, just for good measure. Each VM, whether suspended or active, is costing you in compute-hours. And to take that one step further: Even VMs sitting around mostly idle &lt;em&gt;still consume compute-hours at the same rate.&lt;/em&gt; Let’s go back and think about that worker role we have. Maybe it wakes up every 24 hours and fetches temperature data, and stores it in your local database. Maybe that service call takes, oh, 10 seconds to retrieve all needed data, and another few seconds to store it. Then it goes to sleep for 23.99 hours. &lt;em&gt;You are still running at 0.12 cents per instance-hour.&lt;/em&gt;&lt;/p&gt;  &lt;h2&gt;Cost-based architecture&lt;/h2&gt;  &lt;h3&gt;What to do today&lt;/h3&gt;  &lt;p&gt;So here we are, fully armed with the true cost of these web and worker roles. And here we are, with our elegant Azure application architecture, with a web role for our Silverlight app, a WCF web role for our service tier, and one worker role for each 3rd-party service we want to interact with (that way, we have a very modular system, with each role doing only what it needs to). You probably see where I’m going with this: While our web role is going to be super-busy (and we might need to scale it up to handle our web traffic), and our WCF web role might have to be scaled up as well, our worker roles will likely remain at 1 instance per 3rd-party service.&lt;/p&gt;  &lt;p&gt;From a cost perspective, each of those worker roles, sitting almost-completely idle, is burning $86 monthly. Just three external services and you’re up to $250 per month.&lt;/p&gt;  &lt;p&gt;Going back to the MSDN Premium accounts, you would require 5 instances running, in order to test your application. That means you’d burn through your 750 hours in about 6 days.&lt;/p&gt;  &lt;p&gt;You will want to consider Azure’s pricing model when developing your architecture. The cost structure associated with instances and their lifetimes may mean making compromises such as rolling all of your 3rd-party integration code into a single worker role, and managing your polling intervals accordingly.&lt;/p&gt;  &lt;h3&gt;Future-thinking&lt;/h3&gt;  &lt;p&gt;The Azure team is reaching out to the community, asking for input about future ideas, where you can suggest a new idea or vote on someone else’s idea&amp;#160; (&lt;strong&gt;check out the voting site &lt;/strong&gt;&lt;a title="My Great Windows Azure Idea" href="http://www.mygreatwindowsazureidea.com" target="_blank"&gt;&lt;strong&gt;here&lt;/strong&gt;&lt;/a&gt;). I want to draw your attention to a few ideas that could really help reduce cost:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="Provide multiple roles per instance" href="http://www.mygreatwindowsazureidea.com/forums/34192-windows-azure-feature-voting/suggestions/397209-provide-multiple-roles-per-instance?ref=title" target="_blank"&gt;Provide multiple roles per instance&lt;/a&gt;. The idea would be to host, say, all of your worker roles in a single instance. Maybe this wouldn’t help with your web roles, since they’ll likely be much busier, but for lower-usage worker roles, this could work out nicely. &lt;/li&gt;    &lt;li&gt;&lt;a title="Provide a way to schedule worker roles so they only run when needed" href="http://www.mygreatwindowsazureidea.com/forums/34192-windows-azure-feature-voting/suggestions/396309-provide-a-way-to-schedule-worker-roles-so-they-onl?ref=title" target="_blank"&gt;Provide a way to schedule worker roles so they only run when needed&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;&lt;a title="Make it less expensive to run my very small service on Windows Azure" href="http://www.mygreatwindowsazureidea.com/forums/34192-windows-azure-feature-voting/suggestions/392901-make-it-less-expensive-to-run-my-very-small-servic?ref=title" target="_blank"&gt;Make it less expensive to run my very small service on Windows Azure&lt;/a&gt;. While this topic is a bit heated, it’s gotten the attention of Mike Wickstrand, Senior Director of Azure Product Planning. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;What other great ideas would you add, to help create a more cost-effective model for your Azure rollout?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5693117124170619532-593830943832580623?l=architecture-blog.rdacorp.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=93bVYnCezY0:N6LxHAOEFTY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=93bVYnCezY0:N6LxHAOEFTY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=93bVYnCezY0:N6LxHAOEFTY:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=93bVYnCezY0:N6LxHAOEFTY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=93bVYnCezY0:N6LxHAOEFTY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=93bVYnCezY0:N6LxHAOEFTY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?a=93bVYnCezY0:N6LxHAOEFTY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RdaArchitectureEvangelistTeamBlog?i=93bVYnCezY0:N6LxHAOEFTY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RdaArchitectureEvangelistTeamBlog/~4/93bVYnCezY0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://architecture-blog.rdacorp.com/feeds/593830943832580623/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5693117124170619532&amp;postID=593830943832580623" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/593830943832580623?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5693117124170619532/posts/default/593830943832580623?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RdaArchitectureEvangelistTeamBlog/~3/93bVYnCezY0/azure-true-cost-of-web-and-worker-roles.html" title="Azure: The true cost of web and worker roles" /><author><name>David Makogon</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_rKuJyBZ8UWY/SaVobrBC2ZI/AAAAAAAAAQ4/H91u3gFUMOA/S220/FacebookProfile-David.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://architecture-blog.rdacorp.com/2010/03/azure-true-cost-of-web-and-worker-roles.html</feedburner:origLink></entry></feed>

