<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msdnlaos.net/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">RAM in Laos</title><subtitle type="html" /><id>http://msdnlaos.net/blogs/risman/atom.aspx</id><link rel="alternate" type="text/html" href="http://msdnlaos.net/blogs/risman/default.aspx" /><link rel="self" type="application/atom+xml" href="http://msdnlaos.net/blogs/risman/atom.aspx" /><generator uri="http://communityserver.org" version="4.1.31106.3070">Community Server</generator><updated>2009-03-17T00:51:54Z</updated><entry><title>Geneva Framework – Quick Intro</title><link rel="alternate" type="text/html" href="/blogs/risman/archive/2009/04/18/geneva-framework-quick-intro.aspx" /><id>/blogs/risman/archive/2009/04/18/geneva-framework-quick-intro.aspx</id><published>2009-04-18T11:59:24Z</published><updated>2009-04-18T11:59:24Z</updated><content type="html">&lt;p&gt;This new stuff will make me busy for the next 7 weeks as we will have POC for that. For you how are new to Geneva, you can download it at connect.microsoft.com including all of its tutorials and guidance around claim-based identity. In claim-based paradigm, user presents an identity to application as a set of claims. One claim could be the user ID, emails, or another The main idea is that an external identity system is configured to give your application everything it needs to know about the user with each request she makes, along with cryptographic assurance that the identity data you receive comes from a trusted source.    &lt;br /&gt;    &lt;br /&gt;Let see simple scenario. Let say, you are creating a weather web services with smart client model. Diagram below shows a claims-aware weather Web service (the Relying Party application) and a smart client that wants to use that weather service. The RP exposes a policy that describes its addresses, bindings, and contracts. But the policy also includes a list of claims that the RP needs, such as user name, e-mail address, and role memberships. The policy also tells the smart client the address of the STS from which it should retrieve these claims. After retrieving this policy (1), the client now knows where to go to authenticate: the STS. The user presents credentials (2) and the smart client makes a web service request (3) to the STS, requesting the claims that the RP asked for in its policy. The job of the STS is to authenticate the user and return a security token that gives the RP all of the claims it needs. The smart client then makes its request to the weather web service as the relying party (4), and sending the security token along in the security SOAP header. The weather service as RP now receives claims with each request, and simply rejects any requests that don’t include a security token from the issuing authority that it trusts. &lt;/p&gt;  &lt;p&gt;We already know this concept in general. But what about if you are required to reuse existing user identity, for example Windows Live passport or you have list of website users in SQL Database? Yes.. Here is where Geneva Framework can help you. You can make your custom STS that can read claims store in database (maybe in legacy system) and also directory services. Geneva is not only about SSO or Federation, but more than that because you will be able to create custom STS that match to specific requirement. &lt;/p&gt;  &lt;p&gt;What about interoperability? Several WS-* standards are used in the previous scenario. Policy is retrieved using WS-MetadataExchange, and the policy itself is structured according to the WS-Policy specification. The STS exposes endpoints that implement the &lt;strong&gt;WS-Trust specification&lt;/strong&gt;, which describes how to request and receive security tokens. Most STSs today issue tokens formatted with &lt;strong&gt;Security Assertion Markup Langauge (SAML)&lt;/strong&gt;. SAML is an industry-recognized XML vocabulary that can be used to represent claims in an interoperable way.     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/01_5F00_52286F22.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="01" border="0" alt="01" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/01_5F00_thumb_5F00_730BBBFC.jpg" width="377" height="288" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;See you in other Geneva story. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Cheers – RAM&amp;#160; &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnlaos.net/aggbug.aspx?PostID=54" width="1" height="1"&gt;</content><author><name>risman</name><uri>http://msdnlaos.net/members/risman/default.aspx</uri></author></entry><entry><title>Beginner Guide - C++ for Windows</title><link rel="alternate" type="text/html" href="/blogs/risman/archive/2009/04/11/beginner-guide-c-for-windows.aspx" /><id>/blogs/risman/archive/2009/04/11/beginner-guide-c-for-windows.aspx</id><published>2009-04-11T04:15:00Z</published><updated>2009-04-11T04:15:00Z</updated><content type="html">&lt;p&gt;We have long weekend due to the election day in Indonesia. I use the time to refresh my C++ skills – language, design pattern and Win32. Actually, it was requested by one folk from Vietnam to drive C++ in our MSDN community. I agreed with him as we need to balance our MSDN contents for both native and managed development. If you like C++, below is my guidance on how to improve your C++ programming skills on Windows, assuming you already good in data structure and algorithm from school.&amp;#160; &lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;#1 – Be good in language&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You don’t have to know all C++ language aspects to write C++ program. But to enable you write good codes, I do suggest you to master the language before learn design skills. I always consult to &lt;a href="http://www.amazon.com/C-Complete-Reference-Herbert-Schildt/dp/0072226803/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1239423541&amp;amp;sr=1-1"&gt;The C++ Complete Reference&lt;/a&gt;, &lt;a href="http://www.amazon.com/C-Programming-Language-Special-3rd/dp/0201700735/ref=sr_1_5?ie=UTF8&amp;amp;s=books&amp;amp;qid=1239423490&amp;amp;sr=1-5"&gt;The C++ Programming Language&lt;/a&gt; and &lt;a href="http://www.amazon.com/Primer-4th-Stanley-B-Lippman/dp/0201721481/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1239423523&amp;amp;sr=1-1"&gt;C++ Primer&lt;/a&gt; for my language skills. Put attention to object oriented language features, generic/template and STL. I also use &lt;a href="http://www.boost.org/"&gt;boost&lt;/a&gt; for other stuffs that is not included in standard libraries. Practice, practice and practice are the key.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;#2 – Learn GoF design patterns&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;The well accepted basic catalog for design patterns came from &lt;a href="http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1239423773&amp;amp;sr=1-1"&gt;Gang of Four&lt;/a&gt;. But most of developers have difficulties to learn GoF without real sample scenarios. I found the following website very useful for me as it has a lot of documentations and samples of GoF with C++. Click on the picture to go to the Vince Huston website. If you know other website, please help to put in the comment section. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.vincehuston.org/dp/"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="DP" border="0" alt="DP" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/DP_5F00_56792B36.jpg" width="451" height="355" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;#3 - Learn Win32 &lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Most of feedbacks I got from community is, C++ is easy, but programming C++ in Windows is hard because of the nature Win32 API. &lt;strong&gt;Actually that is true&lt;/strong&gt;. The hardest part of programming C++ on Windows is the learning Win32 and other Windows toolkits/frameworks like the platform SDK Win32, WDK, MFC, COM, WTL, and ATL that you will need in a real project. Framework selection will affect our design as we will not programming in vacuum. If you agreed with me, then the following resources will be your good friends:&lt;/p&gt;  &lt;p&gt;- &lt;a href="http://www.amazon.com/Programming-Windows%C2%AE-Fifth-Microsoft/dp/157231995X/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1239425338&amp;amp;sr=1-1"&gt;Programming Windows&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://www.amazon.com/Windows-Programming-Addison-Wesley-Microsoft-Technology/dp/0321256190/ref=sr_1_3?ie=UTF8&amp;amp;s=books&amp;amp;qid=1239425338&amp;amp;sr=1-3"&gt;Windows System Programming&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://www.amazon.com/Windows-via-C-Pro-Developer/dp/0735624240/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1239424536&amp;amp;sr=1-1"&gt;Windows via C/C++&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://www.amazon.com/Programming-Windows-Second-Jeff-Prosise/dp/1572316950/ref=sr_1_9?ie=UTF8&amp;amp;s=books&amp;amp;qid=1239425338&amp;amp;sr=1-9"&gt;Programming Windows with MFC&lt;/a&gt;     &lt;br /&gt;- Platform SDK Documentation. You can choose &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=4377f86d-c913-4b5c-b87e-ef72e5b4e065&amp;amp;displaylang=en"&gt;Vista&lt;/a&gt;, &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e6e1c3df-a74f-4207-8586-711ebe331cdc&amp;amp;displaylang=en"&gt;Windows 2008&lt;/a&gt; or &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=a91dc12a-fc94-4027-b67e-46bab7c5226c&amp;amp;DisplayLang=en"&gt;Windows 7 SDK&lt;/a&gt;.     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;I do believe that native development will still have its own place. But that is your own choice to become full managed code developer or combine it with native C++ knowledge. In our beloved MSDN community, I planned to balance it. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Cheers – RAM &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnlaos.net/aggbug.aspx?PostID=53" width="1" height="1"&gt;</content><author><name>risman</name><uri>http://msdnlaos.net/members/risman/default.aspx</uri></author></entry><entry><title>.NET RIA Services with Offline Scenario?</title><link rel="alternate" type="text/html" href="/blogs/risman/archive/2009/04/04/net-ria-services-is-good-enough.aspx" /><id>/blogs/risman/archive/2009/04/04/net-ria-services-is-good-enough.aspx</id><published>2009-04-04T05:50:05Z</published><updated>2009-04-04T05:50:05Z</updated><content type="html">&lt;p&gt;I am working to help some of physicists who run &lt;a href="http://www.kucingfisika.com"&gt;KucingFisika&lt;/a&gt;, to design their future multimedia e-learning site with Silverlight. After looking around for design practices, I found that Microsoft .NET RIA Services is good as our base line. This is now available and you can &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=76bb3a07-3846-4564-b0c3-27972bcaabce&amp;amp;displaylang=en"&gt;download&lt;/a&gt; and later explore it like I do. In this post, I would like to encourage you to see that we can add additional scenarios, making RIA Services really applicable in low bandwidth condition like us in Asia – &lt;font color="#ff0000"&gt;adding offline feature&lt;/font&gt;. From marketing point of view: &lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="1"&gt;Microsoft .NET RIA Services simplifies the traditional n-tier application pattern by bringing together the ASP.NET and Silverlight platforms. RIA Services provides a pattern to write application logic that runs on the mid-tier and controls access to data for queries, changes and custom operations. It also provides end-to-end support for common tasks such as data validation, authentication and roles by integrating with Silverlight components on the client and ASP.NET on the mid-tier.      &lt;br /&gt;&lt;/font&gt;    &lt;br /&gt;From technical point of view (you can read more from its PDF documentation). It is a framework that provides patterns for writing LOB application logic and validation (by design). LOB applications use data that needs to flow across tiers. It may be created and used through basic &lt;font color="#0000ff"&gt;CRUD&lt;/font&gt; operations or it may be accessed through domain-specific custom operations in encapsulated form such as an approval operation. In an internet application, there is a trust boundary between the client and the mid-tier server. &lt;font color="#0000ff"&gt;&lt;font color="#ff0000"&gt;Hence, it is important to have a stylized way to express what resources are available to the client tier and what operations are permitted&lt;/font&gt;.&lt;/font&gt; In addition to defining the resources and operations, a developer needs to validate the data as it is created or updated. The validation needs to run on the presentation tier for giving immediate feedback to the user and on the mid-tier for ensuring that the rules defined for the application are enforced. Thus, there may be common validation across the tiers as well as tier-specific validations that need to be integrated with the resources and operations.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v01_5F00_6C037486.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="v01" border="0" alt="v01" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v01_5F00_thumb_5F00_0D7F51BE.jpg" width="494" height="282" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Lets look at the anatomy of a common Web application compared to RIA. With a RIA, most of the presentation logic moves to the client to improve the UX and to make effective use of &lt;strong&gt;&lt;font color="#ff0000"&gt;local state&lt;/font&gt;&lt;/strong&gt;. The result is additional work for the developer: defining a full-fledged services layer, new types and contracts to share etc. and continually evolving them as the app evolves on either end. &lt;font color="#0000ff"&gt;A RIA isn&amp;#39;t just a client app, but an &amp;quot;Internet&amp;quot; app that includes a server component&lt;/font&gt;. This is where RIA Service guidance will give you values – end-to-end pattern for this additional work. But remember, there is no perfect design/pattern, we can always improve it based on our requirements. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v02_5F00_19CD294D.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="v02" border="0" alt="v02" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v02_5F00_thumb_5F00_3D95B50D.jpg" width="350" height="146" /&gt;&lt;/a&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v03_5F00_3CAD2956.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="v03" border="0" alt="v03" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v03_5F00_thumb_5F00_46EE27E9.jpg" width="350" height="146" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The first part of RIA Services pattern is to write a &lt;strong&gt;&lt;font color="#0000ff"&gt;DomainService&lt;/font&gt;&lt;/strong&gt; class. This represents your application domain, your application logic, or business logic, a set of operations – CRUD based or custom domain-specific, DAL specific, authorization and validation. A DomainService is optimized to be stateless - to respond to query requests and to change set processing requests. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v05_5F00_29B85A12.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="v05" border="0" alt="v05" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v05_5F00_thumb_5F00_1AFD8860.jpg" width="490" height="178" /&gt;&lt;/a&gt; &lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v06_5F00_48024F61.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="v06" border="0" alt="v06" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v06_5F00_thumb_5F00_4BFC7766.jpg" width="240" height="176" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The second part of the pattern is what we generate - the client-side data model - in a &lt;strong&gt;&lt;font color="#0000ff"&gt;DomainContext&lt;/font&gt;&lt;/strong&gt; class. This class represents the view of what the client can see. It contains lists of objects, one for each type exposed to the client, and it contains a set of load methods that roughly correspond to the queries exposed on the service. These load methods can be used to load objects into the corresponding lists. The individual objects and lists track changes and raise change notifications. The DomainContext can extract all the changes, create a change set and submit it to the service for processing and committing. A DomainContext is optimized for taking advantage of the stateful environment and to be a well-behaved citizen in a binding-centric presentation technology such as Silverlight or WPF.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.nikhilk.net/NET-RIA-Services-Vision-Architecture.aspx"&gt;Nikhil Kothari&lt;/a&gt; describe .NET RIA Services vision as &lt;strong&gt;RAD for RIA&lt;/strong&gt;, which is I totally agreed and have the same sense.But there is one requirement here in Asia that we must consider – &lt;font color="#ff0000"&gt;low bandwidth condition&lt;/font&gt;. This will rise new scenario - &lt;font color="#0000ff"&gt;offline-enabled RIA application&lt;/font&gt;&lt;font color="#000000"&gt;, means that we need to add local storage scenario for the &lt;font color="#0000ff"&gt;&lt;strong&gt;DomainContext&lt;/strong&gt;&lt;/font&gt;.&lt;/font&gt; The design challenges of all the offline-enabled applications are: &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;How to isolate client data layer&lt;/font&gt;       &lt;br /&gt;&lt;/strong&gt;    &lt;br /&gt;What is actually the data layer in RIA? It that the API that server exposes to AJAX? &lt;a href="http://code.google.com/apis/gears/architecture.html"&gt;Gears&lt;/a&gt; provides a good vision on &lt;strong&gt;&lt;font color="#0000ff"&gt;Server Data Layer&lt;/font&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;font color="#0000ff"&gt;Local Data Layer&lt;/font&gt;&lt;/strong&gt;, controlled by a &lt;strong&gt;&lt;font color="#0000ff"&gt;Data Switch&lt;/font&gt;&lt;/strong&gt;. Gears propose JavaScript DB API with SQLite to enable local data storage. It is a good project to start with SQL Compact Edition, however, but an &lt;strong&gt;ActiveXObject&lt;/strong&gt; should be created for SQL Compact Edition/SQL Express/ESENT. &lt;strong&gt;&lt;font color="#ff0000"&gt;Anyone interested here?&lt;/font&gt;&lt;/strong&gt;     &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v07_5F00_3BC089A0.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="v07" border="0" alt="v07" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v07_5F00_thumb_5F00_5DB8BF99.jpg" width="500" height="203" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;Offline strategy – what features need offline scenario&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This is the harder part for me, as closely related to our application scenarios. Let say, I want to design &lt;font color="#0000ff"&gt;Physics e-learning application&lt;/font&gt; that contains RIA/Silverlight based simulation, &lt;a href="http://www.codeplex.com/FarseerPhysics"&gt;Farseer Physics Engine&lt;/a&gt; for example. Some numerical calculation should be done at client side and its results should be store locally in order to feed parameters for responsive and dynamic GUI animation. You might think that you would always want to use the local store since it is faster. However, there are many practical reasons why you may want or need to access the data on server instead. For instance: &lt;/p&gt;  &lt;p&gt;- Data may be so transient in nature that it makes no sense to cache it. I will use &lt;a href="http://geeks.netindonesia.net/blogs/risman/archive/2009/04/04/project-velocity-answer-to-memcached.aspx"&gt;Project Velocity for cache&lt;/a&gt; anyway.     &lt;br /&gt;- Some Simulation&amp;#39;s data makes sense only while online.     &lt;br /&gt;- The App may choose to store only the most frequently accessed data.     &lt;br /&gt;- Numerical computational and/or disk space requirements make it unfeasible to recreate the feature offline.     &lt;br /&gt;    &lt;br /&gt;Typically, the optimal solution is to use the local store as much as possible, since it&amp;#39;s usually faster than a remote connection. However, the more work an application does locally, the more code you need to write to implement the feature locally and to synchronize the corresponding data. There is a cost/benefit tradeoff to consider, and some features may not be worthwhile to support locally. &lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;In fact, .NET RIA Service provide ready to extend set of capability that I like. But, a lot of work should be done to make it work like I want. That is my problem though :). &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;Application Modality&lt;/font&gt;&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;What is modality – feature to switch from online to offline states or vice versa. Modal applications usually indicated through some change in the user interface. The user is made aware of the state and participates in switching states in some manner. Modeless applications attempt to transition seamlessly between online and offline states, without significant UI changes. The user does not need to participate in switching states, which the application does automatically. &lt;/p&gt;  &lt;p&gt;In a modal application, when the application is online it communicates with the server. When it&amp;#39;s offline, it uses the local store. Data must be &lt;strong&gt;&lt;font color="#0000ff"&gt;synchronized&lt;/font&gt;&lt;/strong&gt; when the app switches between modes. The advantage of making a modal application is that it&amp;#39;s “relatively simple” to implement and therefore a reasonable way to bootstrap the application to function offline. But some disadvantages are: The user must decide and remember to switch modes. Since the local store is not always up-to-date, it can&amp;#39;t be used to improve the application&amp;#39;s responsiveness when connected to the server. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;Data Synchronization&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;What is the sync strategy for this kind of application? No matter which connection and modality strategy we use, the data in the local database will get out of sync with the server data. For example, local data and server data get out of sync when: &lt;/p&gt;  &lt;p&gt;- The user makes changes while offline    &lt;br /&gt;- Data is shared and can be changed by external parties     &lt;br /&gt;- Data comes from an external source     &lt;br /&gt;    &lt;br /&gt;There are many approaches to synchronization and none are perfect for all situations. We have &lt;strong&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=109DB36E-CDD0-4514-9FB5-B77D9CEA37F6&amp;amp;displaylang=en"&gt;Microsoft Sync Framework&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=479F2216-E6F2-486F-80C9-2CFADE5082C1&amp;amp;displaylang=en"&gt;Astroria Offline&lt;/a&gt;&lt;/strong&gt; as candidates for reusable framework here (where I am still arguing). The most important thing for engineer to decide is manual or background synchronization. In manual sync user decides when to synchronize. It can be implemented simply by uploading all the old local data to the server, and then downloading a fresh copy from the server before going offline. In background sync, the application continuously synchronizes the data between the local data store and the server. This can be implemented by pinging the server every once in a while or better yet, letting the server push or stream data to the client. With Silverlight supports on WCF, this should be easy to implement. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v08_5F00_4F1D77DA.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="v08" border="0" alt="v08" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v08_5F00_thumb_5F00_3E45A75F.jpg" width="500" height="204" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Well, the next step for me is to gather our detail requirements and see how current frameworks can help. I am still hacking the MSF, Astoria Offline, RIA Services, and Velocity. For sure, I will share with you if I found interesting things. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Have nice weekend without insomnia!. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Cheers – RAM &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnlaos.net/aggbug.aspx?PostID=52" width="1" height="1"&gt;</content><author><name>risman</name><uri>http://msdnlaos.net/members/risman/default.aspx</uri></author></entry><entry><title>Project Velocity – Answer to Memcached?</title><link rel="alternate" type="text/html" href="/blogs/risman/archive/2009/04/04/project-velocity-answer-to-memcached.aspx" /><id>/blogs/risman/archive/2009/04/04/project-velocity-answer-to-memcached.aspx</id><published>2009-04-03T17:22:52Z</published><updated>2009-04-03T17:22:52Z</updated><content type="html">&lt;p&gt;Regarding &lt;a href="http://geeks.netindonesia.net/blogs/risman/archive/2009/04/03/memcached-for-windows.aspx"&gt;my previous post&lt;/a&gt; about Memcached, &lt;a href="http://geeks.netindonesia.net/blogs/zeddy"&gt;Zeddy&lt;/a&gt; pointed me to &lt;a href="http://msdn.microsoft.com/en-us/data/cc655792.aspx"&gt;Project Velocity&lt;/a&gt;. This is exactly what I am looking for!. A highly scalable in-memory, distributed cache cluster in farm deployment, high availability and of course, concurrency ready and x64 support!. Applications can store any serializable CLR object without worrying about where the object gets stored. Scalability can be achieved by simply adding more cache servers on demand. “Velocity” also allows for copies of data to be stored across the cluster, thus protecting data against failures. “Velocity” can be configured to run as a service accessed over the network or can be run embedded with the distributed application. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;Key Features&lt;/font&gt;&amp;#160;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;quot;Velocity&amp;quot; consists of a cluster of servers that communicate with each other to form a single, unified application cache system. A client application can communicate with one or more of the servers in the cluster to perform cache operations such as Get, Put, or Remove. Multiple client applications can work with the same cached objects that use any of the servers in the cache cluster. The primary components of the physical model consist of the cache server, the cache host Windows service, the cache cluster, the PowerShell-based cache administration tool, and the cluster configuration storage location. The following diagram shows how all these elements relate.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;#160; &lt;br /&gt;&lt;/strong&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v01_5F00_1E700B68.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="v01" border="0" alt="v01" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v01_5F00_thumb_5F00_122E45A7.jpg" width="500" height="315" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;- Caches any serializable CLR object and provides access through simple cache APIs.    &lt;br /&gt;- Supports enterprise scale: tens to hundreds of computers – with unified cache view from clients     &lt;br /&gt;- Configurable to run as a service accessed over the network or run embedded with the application.     &lt;br /&gt;- Supports common cache configurations.     &lt;br /&gt;- Supports dynamic scaling by adding new nodes.     &lt;br /&gt;- Configurable number of backup copies to provide high availability.     &lt;br /&gt;- Automatic load balancing.     &lt;br /&gt;- Integration with administration and monitoring tools such as ETW, System Center, etc.     &lt;br /&gt;- Provides tight integration with ASP.NET to be able to cache ASP.NET session data     &lt;br /&gt;- Follows the cache-aside architecture (also known as Explicit Caching) for V1.     &lt;br /&gt;- Support for multiple client languages (for example, PHP, C#, C++, etc.).&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;Key Scenarios : &lt;/strong&gt;&lt;strong&gt;Social Networking Site and Enterprise LOB&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Not only for social networking scenarios, Velocity was designed to support enterprise application. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v02_5F00_2FAFFAD9.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="v02" border="0" alt="v02" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v02_5F00_thumb_5F00_0503F42F.jpg" width="350" height="183" /&gt;&lt;/a&gt;&lt;strong&gt;&amp;#160;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v03_5F00_2E879995.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="v03" border="0" alt="v03" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v03_5F00_thumb_5F00_0A226979.jpg" width="350" height="163" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;High Availability Model&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The logical model of the cache cluster consists of named caches, regions, and cached objects. In the diagram, named caches span all the cache hosts in the cluster, but regions are limited to just one cache host in the cluster. The high availability feature supports continuous availability of your cached data by storing copies of cached data on separate cache hosts, as illustrated in the next diagram. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/x01_5F00_71167366.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="x01" border="0" alt="x01" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/x01_5F00_thumb_5F00_2AC5E0C6.jpg" width="345" height="250" /&gt;&lt;/a&gt; &lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/x03_5F00_575E74D2.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="x03" border="0" alt="x03" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/x03_5F00_thumb_5F00_1B420D50.jpg" width="380" height="250" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;With high availability enabled on a multi-server cluster, your application can still retrieve its cached data if a cache server fails. A copy of each cached object or region is maintained on a separate cache host. The cache cluster manages maintenance of these copies and supplies them to your application if the primary copies are not available. &lt;strong&gt;No code changes are required&lt;/strong&gt; to make your cache-enabled applications highly available. &lt;/p&gt;  &lt;p&gt;All &amp;quot;Velocity&amp;quot; cache hosts use TCP/IP to communicate with each other and support the cache cluster. To function correctly, each cache server needs firewall exceptions to be configured for the cache host service. Three separate ports are used: the &lt;strong&gt;cluster port&lt;/strong&gt;, the &lt;strong&gt;arbitration port&lt;/strong&gt;, and the &lt;strong&gt;cache port&lt;/strong&gt;. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;Client Types&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In order to store data in the cache on a cache cluster, the &lt;font color="#0000ff"&gt;System.Data.Caching.CacheFactory.GetCache(System.String)&lt;/font&gt; method is used to return a Cache object for you to work with in application code. Once instantiated, this Cache object is referred to as the cache client.&lt;/p&gt;  &lt;p&gt;There are two types of cache clients: &lt;strong&gt;routing&lt;/strong&gt; and &lt;strong&gt;simple&lt;/strong&gt;. Each cache client also has the option to store cached data locally, which is named local cache. These cache client options are specified in the application configuration settings.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/x04_5F00_2A854992.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="x04" border="0" alt="x04" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/x04_5F00_thumb_5F00_596739CF.jpg" width="500" height="335" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;Deployment Models&lt;/font&gt;&lt;/strong&gt;     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Velocity” can be deployed as a service or embedded within the application. In cache service, client applications access the Velocity cache through client APIs (TCP/IP or pipes), just like Memcached.&amp;#160; In embedded mode, application (like ASP.NET) provides host for Velocity. The distributed cache runs as part of the application (or container) and the memory for the cache is shared with that of the application. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v05_5F00_46063796.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="v05" border="0" alt="v05" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v05_5F00_thumb_5F00_3BD14AD1.jpg" width="500" height="320" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Microsoft project code named &amp;quot;Velocity&amp;quot; offers many options for specifying and storing the configuration details that are used by the cache cluster and the client application. Cache-based applications have the option of specifying configuration information programmatically or by using an application configuration file. There are three options available for storing cluster configuration settings: in &lt;strong&gt;XML&lt;/strong&gt;, in a &lt;strong&gt;SQL Server Compact&lt;/strong&gt; data file, or in a SQL Server 2005 or 2008.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/x05_5F00_7021ABB2.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="x05" border="0" alt="x05" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/x05_5F00_thumb_5F00_35866044.jpg" width="600" height="300" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;Performance Test&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Below is the test result for Velocity. The application consisted of simulating lots of users on many distributed client computers. Each user thread performs operations like Get, Put, and Remove on a &lt;strong&gt;&lt;font color="#ff0000"&gt;20K&lt;/font&gt;&lt;/strong&gt; payload. It is a plot of&amp;#160; throughput as the load gradually increased and also as new servers were added. The throughput increases as the load increases until it reaches saturation and stabilizes. At this point, if we add more servers, load balancing kicks in and the throughput increases again and the response time goes down. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v06_5F00_7E6C3670.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="v06" border="0" alt="v06" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v06_5F00_thumb_5F00_3EEE3746.jpg" width="700" height="399" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;How to Start&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;For now, just install the Velocity in your machine and explore the sample codes. You can also refer to the following sources. Part of it is already referenced in this post.    &lt;br /&gt;    &lt;br /&gt;- &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=B24C3708-EEFF-4055-A867-19B5851E7CD2&amp;amp;displaylang=en"&gt;Download Velocity CTP 2&lt;/a&gt; and &lt;a href="http://code.msdn.microsoft.com/velocity"&gt;Sample Codes&lt;/a&gt;&amp;#160; &lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/cc645013.aspx"&gt;Microsoft Project Code Named “Velocity”&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://blogs.msdn.com/velocity"&gt;Microsoft Project Code Named &amp;quot;Velocity&amp;quot; Team Blog&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/bb896679.aspx"&gt;Velocity MSDN Documentation&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;I will show you more about Velocity in my next post. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Cheers – RAM&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnlaos.net/aggbug.aspx?PostID=51" width="1" height="1"&gt;</content><author><name>risman</name><uri>http://msdnlaos.net/members/risman/default.aspx</uri></author></entry><entry><title>Qt 4.5 with Visual Studio 2008 (VC++ Express)</title><link rel="alternate" type="text/html" href="/blogs/risman/archive/2009/04/02/qt-4-5-with-visual-studio-2008-vc-express.aspx" /><id>/blogs/risman/archive/2009/04/02/qt-4-5-with-visual-studio-2008-vc-express.aspx</id><published>2009-04-01T18:01:31Z</published><updated>2009-04-01T18:01:31Z</updated><content type="html">&lt;p&gt;&lt;a href="http://www.qtsoftware.com/"&gt;Qt&lt;/a&gt; is a cross platform GUI toolkit from Nokia. Its SDK is available under an LPGL license, it means we can use it free of charge to develop proprietary, commercial, closed-source software (thanks to Nokia).&amp;#160; However, the current LPGL release leaves some gaps in using Qt from within Visual Studio 2008. This is somewhat understandable given that Visual Studio integration was a commercial-only offering and Nokia has Qt Creator (and not Visual Studio).&amp;#160; My problem with &lt;strong&gt;Qt Creator&lt;/strong&gt; is it uses &lt;strong&gt;MingGW&lt;/strong&gt; (gcc) compiler which is nowhere near as good as VC++ 2008.&amp;#160; Also for Visual Studio background like me, who is not familiar with Qt creator, learning Qt Creator will take time. Thanks to &lt;a href="http://geeks.netindonesia.net/blogs/lontong"&gt;Wiria&lt;/a&gt; and &lt;a href="http://geeks.netindonesia.net/blogs/agus/"&gt;AK&lt;/a&gt; who brought Qt to my table for a review.     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Qt GUI Toolkit is very useful to develop portable application (single source codes) for *NIX, MAC and Windows (including Windows 98 but not being tested for Windows 7).&amp;#160; In this post, I will show you how to start using Qt SDK only with Visual C++ 2008, you can use FREE Visual C++ 2008 express too.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#000080"&gt;Build VC++ Version of Qt&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;- Download and install &lt;a href="http://www.qtsoftware.com/downloads/sdk-windows-cpp"&gt;qt-sdk-win-opensource-2009.01.1&lt;/a&gt;.     &lt;br /&gt;- Install the SDK to default directory, in my case C:\qt\2009.01. I didn;t install MingGW and Qt Creator as I don’t need.&amp;#160;&amp;#160; &lt;br /&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/01_5F00_37BC5195.jpg"&gt;&lt;img title="01" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="138" alt="01" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/01_5F00_thumb_5F00_4D466465.jpg" width="380" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;- Once QT and VisualStudio 2008 both are installed and ready, open the VisualStudio 2008 Command Prompt.    &lt;br /&gt;- Change directory to the Qt SDK installation folder in the Command Prompt. Usually it would be of the form &amp;quot;C:\Qt\2009.01\qt&amp;quot;     &lt;br /&gt;- Run Configure.exe to target platform win32-msvc2008. You can simply run by typing &lt;strong&gt;configure&lt;/strong&gt; or using other options. For example:     &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160; &lt;font size="2"&gt;C:\Qt\2009.01\configure -no-sql-sqlite -no-qt3support -no-opengl -platform win32-msvc2008&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160; -no-libtiff -no-dbus -no-phonon -no-phonon-backend -no-webkit &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;- Build Qt for use with Visual Studio 2008 by typing &lt;strong&gt;nmake&lt;/strong&gt;     &lt;br /&gt;- &lt;strong&gt;Configure&lt;/strong&gt; and &lt;strong&gt;nmake&lt;/strong&gt; will take time, be patient enough. &lt;font color="#ff0000"&gt;In my case, I started to build 19.17 PM and completed on 23.47 (4:30 hours)!&lt;/font&gt;     &lt;br /&gt;- Once completed, Qt SDK is ready for Visual Studio 2008.     &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/03_5F00_3D46F9D4.jpg"&gt;&lt;img title="03" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="219" alt="03" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/03_5F00_thumb_5F00_47C3B9F5.jpg" width="410" border="0" /&gt;&lt;/a&gt; &lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/09_5F00_6FB61D7A.jpg"&gt;&lt;img title="09" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="219" alt="09" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/09_5F00_thumb_5F00_7FEDF741.jpg" width="438" border="0" /&gt;&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;&lt;strong&gt;&lt;font color="#000080"&gt;Build and Run the Qt SDK Samples&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Once your Qt SDK is ready to be used you can see samples directory in your Qt SDK installation (usually, &lt;font color="#0000ff"&gt;C:\Qt\2009.01\qt\examples&lt;/font&gt;) and then open the examples.sln file from your Visual Studio 2008. If double-clicking .sln file does not work, open it manually from your Visual Studio. There are a lot of samples from Qt SDK. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/12_5F00_5E01D316.jpg"&gt;&lt;img title="12" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="402" alt="12" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/12_5F00_thumb_5F00_011E5655.jpg" width="625" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;If you build and debug – calculator project of instance – you will notification that the application because QtGuid4.dll was not found. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/10_5F00_3FDF6589.jpg"&gt;&lt;img title="10" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="164" alt="10" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/10_5F00_thumb_5F00_1677F7BE.jpg" width="410" border="0" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/11_5F00_0F489579.jpg"&gt;&lt;img title="11" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="254" alt="11" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/11_5F00_thumb_5F00_4DBDBD52.jpg" width="238" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;To let Visual Studio knows the include and library files of Qt, add their paths to the:&amp;#160;&amp;#160; &lt;br /&gt;    &lt;br /&gt;&lt;font color="#0000ff"&gt;Visual Studio Tools|Options|Projects and Solutions|VC++ Directories&lt;strong&gt;        &lt;br /&gt;        &lt;br /&gt;&lt;/strong&gt;&lt;/font&gt;section. Typically you would want to add &lt;font color="#0000ff"&gt;C:\Qt\2009.01\qt\include&lt;/font&gt; to the Include, &lt;font color="#0000ff"&gt;C:\Qt\2009.01\qt\lib&lt;/font&gt; to the libraries and &lt;font color="#0000ff"&gt;C:\Qt\2009.01\qt\bin&lt;/font&gt; to the Executables sections. Also you can add C:\Qt\2009.01\qt\bin to the Path System variable so that the Qt dlls get probed correctly when loaded from your application. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/13_5F00_1496BA83.jpg"&gt;&lt;img title="13" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="381" alt="13" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/13_5F00_thumb_5F00_33E57324.jpg" width="625" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;A lot of Qt samples inside the SDK. Try to build and run those sample applications to see how powerful Qt as GUI Toolkit. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/14_5F00_23496437.jpg"&gt;&lt;img title="14" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="487" alt="14" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/14_5F00_thumb_5F00_27DB5AF2.jpg" width="625" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#000080"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#000080"&gt;Using Qt’s Visual Studio 2008 Plug-in&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You can try Visual Studio add-in RC version (this will be a commercial product) to get integrated Qt templates and visual IDE features in Visual Studio 2008. I will not cover in this post, but this tools is promising. I will show you in my other Qt-VC++ post. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/04_5F00_529F8538.jpg"&gt;&lt;img title="04" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="419" alt="04" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/04_5F00_thumb_5F00_0C5E56BE.jpg" width="625" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Hope this helps!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Ciao – RAM &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnlaos.net/aggbug.aspx?PostID=50" width="1" height="1"&gt;</content><author><name>risman</name><uri>http://msdnlaos.net/members/risman/default.aspx</uri></author></entry><entry><title>Insomnia? So.. take REST!</title><link rel="alternate" type="text/html" href="/blogs/risman/archive/2009/03/29/insomnia-so-take-rest.aspx" /><id>/blogs/risman/archive/2009/03/29/insomnia-so-take-rest.aspx</id><published>2009-03-29T03:47:41Z</published><updated>2009-03-29T03:47:41Z</updated><content type="html">&lt;p&gt;If you are getting &lt;a href="http://en.wikipedia.org/wiki/Insomnia"&gt;insomnia&lt;/a&gt; then you need to REST.&amp;#160; For all types of insomnia (transient, acute, chronic), you need to take REST for a while. Yes, I will do later. But the REST is actually the one who made me insomnia. &lt;/p&gt;  &lt;p&gt;I will post more after taking some rest, but for know, you can try to look on it:&lt;/p&gt;  &lt;p&gt;- &lt;a href="http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24644"&gt;WCF REST Starter Kit&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/dd203052.aspx"&gt;A Guide to Designing and Building RESTful Web Services with WCF 3.5&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/data/cc300162.aspx"&gt;ADO.NET Data Services and Entity Framework How do I videos&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;Enjoy!     &lt;br /&gt;    &lt;br /&gt;Cheers - RAM&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnlaos.net/aggbug.aspx?PostID=49" width="1" height="1"&gt;</content><author><name>risman</name><uri>http://msdnlaos.net/members/risman/default.aspx</uri></author></entry><entry><title>FastCGI Application on Windows Azure</title><link rel="alternate" type="text/html" href="/blogs/risman/archive/2009/03/29/fastcgi-application-on-windows-azure.aspx" /><id>/blogs/risman/archive/2009/03/29/fastcgi-application-on-windows-azure.aspx</id><published>2009-03-29T02:30:14Z</published><updated>2009-03-29T02:30:14Z</updated><content type="html">&lt;p&gt;FastCGI is a protocol for interfacing interactive programs with a web server like IIS. It is a variation of earlier Common Gateway Interface (CGI) and very useful to reduce the overhead associated with interfacing the IIS and CGI programs, allowing a server to handle more web page requests at once. Instead of creating a new process for every request, FastCGI can use a single persistent process which handles many requests over its lifetime. Processing of multiple requests simultaneously is achieved either by using a single connection with internal multiplexing (ie. multiple requests over a single connection) and/or by using multiple connections. Many such processes can exist, something that can increase stability and scalability, read more at &lt;a href="http://en.wikipedia.org/wiki/FastCGI"&gt;Wikipedia&lt;/a&gt; and &lt;a href="http://www.fastcgi.com/devkit/doc/fcgi-spec.html"&gt;its original spec&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;FastCGI is language and platform independent protocol (but mostly C/C++ in nature). Not too much development at protocol level of FastCGI as it is very stable protocol, but it can be use in many web application scenarios because it ca add two &lt;a href="http://www.fastcgi.com"&gt;new benefits&lt;/a&gt; that can boost scalability and availability:     &lt;br /&gt;    &lt;br /&gt;&lt;font color="#0000ff"&gt;- Distributed computing: run FastCGI applications on a different machine      &lt;br /&gt;- Multiple and extensible roles: CGI applications compute the response to an HTTP request.       &lt;br /&gt;      &lt;br /&gt;&lt;/font&gt;&lt;font color="#000000"&gt;In this post, I will explain how to develop FastCGI on Windows Azure using C++. I took a simple &lt;a href="http://msdn.microsoft.com/en-us/library/dd573370.aspx"&gt;FastCFI sample&lt;/a&gt; from &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=b44c10e8-425c-417f-af10-3d2839a5a362&amp;amp;displaylang=en"&gt;Windows Azure SDK March 2009 CTP&lt;/a&gt;. The sample program is designed to run as a sub-process of a Windows Azure Web or Worker role. &lt;/font&gt;It is a simple web role that demonstrates running a FastCGI application. By reading this post, you will understand how to:&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;- Enabling native code execution within the service definition file      &lt;br /&gt;- Configuring FastCGI in the web.roleConfig file       &lt;br /&gt;- Calling the Microsoft Service Hosting Runtime Native Library from a native C++ code       &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;Note:&lt;/font&gt;&amp;#160; You can use MS C/C++ compiler and MSBUild to compile.     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; All the command scripts are ready in the sample. Or using VC++ build project.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/01_5F00_7A4E66E2.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="01" border="0" alt="01" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/01_5F00_thumb_5F00_3F76983F.jpg" width="276" height="181" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/02_5F00_0C0AAF16.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="02" border="0" alt="02" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/02_5F00_thumb_5F00_69462500.jpg" width="317" height="404" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The FastCGIApplication in this sample is pretty simple. It logs information and read configuration settings by calling Microsoft Service Hosting Runtime Native Library (&lt;font color="#0000ff"&gt;msshrt.lib &lt;font color="#000000"&gt;and &lt;/font&gt;ServiceHosting.h&lt;/font&gt;). The Service Hosting Runtime Native Library provides a native API for interacting with the role management agent and with the local storage resource in the Windows Azure environment or in the development fabric. You have to make sure Microsoft Service Hosting Runtime Native Library installed in you machine, usually at :     &lt;br /&gt;    &lt;br /&gt;&lt;font color="#0000ff"&gt;C:\Program Files\Windows Azure SDK\v1.0\      &lt;br /&gt;&lt;/font&gt;    &lt;br /&gt;Its definition was located in &lt;font color="#0000ff"&gt;FastCGIApplication.proj&lt;/font&gt;. If you are using x64 machine like me, you have to change the &lt;strong&gt;&lt;font color="#0000ff"&gt;msshrt.lib&lt;/font&gt;&lt;/strong&gt; location to &lt;font color="#0000ff"&gt;(ServiceHostingSDKInstallPath)\lib\x64&lt;/font&gt;. &lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
   &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ServiceHostingSDKInstallPath &lt;/span&gt;&lt;span style="color:red;"&gt;Condition&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;#39;$(ServiceHostingSDKInstallPath)&amp;#39;==&amp;#39;&amp;#39;&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;      &lt;/span&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\ServiceHosting\v1.0@InstallPath)&lt;br /&gt;&lt;/strong&gt;&lt;/font&gt;  &lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ServiceHostingSDKInstallPath&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
   &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ServiceHostingSDKInclude&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;%22$(ServiceHostingSDKInstallPath)\inc%22&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ServiceHostingSDKInclude&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
   &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ServiceHostingSDKLib&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;%22$(ServiceHostingSDKInstallPath)\lib\x64\&lt;strong&gt;&lt;font color="#0000ff"&gt;msshrt.lib&lt;/font&gt;&lt;/strong&gt;%22&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ServiceHostingSDKLib&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
     &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;CPPCompiler&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;cl.exe /Zi&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;CPPCompiler&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
   &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;OutputExe&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;FastCGIApplication.exe&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;OutputExe&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
 &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/03_5F00_66ACCD75.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="03" border="0" alt="03" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/03_5F00_thumb_5F00_14C67D96.jpg" width="712" height="195" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Below is its main program:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;#include &lt;/span&gt;&lt;span style="color:#a31515;"&gt;&amp;quot;Common.h&amp;quot;
&lt;/span&gt;&lt;span style="color:blue;"&gt;#include &lt;/span&gt;&lt;span style="color:#a31515;"&gt;&amp;quot;FastCGI.h&amp;quot;
&lt;/span&gt;&lt;span style="color:blue;"&gt;#include &lt;/span&gt;&lt;span style="color:#a31515;"&gt;&amp;lt;stdio.h&amp;gt;
&lt;/span&gt;&lt;span style="color:blue;"&gt;int __cdecl &lt;/span&gt;main(&lt;span style="color:blue;"&gt;int &lt;/span&gt;argc, __in_ecount(argc) LPSTR argv[])
{
    Initialize();
    LogInformation(&lt;span style="color:#a31515;"&gt;&amp;quot;Starting FastCGI Processing&amp;quot;&lt;/span&gt;);
    std::string msg = GetConfigurationSetting(&lt;span style="color:#a31515;"&gt;&amp;quot;MessageOfTheDay&amp;quot;&lt;/span&gt;);
    FastCGI fastCGI(msg);
    fastCGI.ProcessRequests();
    LogInformation(&lt;span style="color:#a31515;"&gt;&amp;quot;Exited&amp;quot;&lt;/span&gt;);
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;In the ProcessRequests(), this FastCGIApplication will calculte size of response based on information in message header, allocate memory for response,&amp;#160; and define response from FastCGI server. &lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;void &lt;/span&gt;FastCGI::ProcessRequests()
{
    FCGI_Header headerOfMessage;
    FCGI_StdOutErrorRecord message_StdErr;

    DWORD dwBytesWritten = 0;
    DWORD dwError = 0;
    DWORD dwResponseSize  = 0;
    DWORD dwRequestId = 0;
    PBYTE pBuffer;
    HRESULT hr = S_OK;
    &lt;span style="color:blue;"&gt;while &lt;/span&gt;( TRUE )
    {                        
        ZeroMemory( &amp;amp;headerOfMessage, &lt;span style="color:blue;"&gt;sizeof&lt;/span&gt;( headerOfMessage ) );
        Recieve((PBYTE)&amp;amp;headerOfMessage, &lt;span style="color:blue;"&gt;sizeof&lt;/span&gt;(headerOfMessage) );
        &lt;br /&gt;        &lt;span style="color:green;"&gt;&lt;strong&gt;// Calculate size of response based on information in the message header
&lt;/strong&gt;        &lt;/span&gt;dwResponseSize = ( headerOfMessage.contentLengthB1 &amp;lt;&amp;lt; 8 )
            + headerOfMessage.contentLengthB0
            + headerOfMessage.paddingLength;

        &lt;span style="color:blue;"&gt;if&lt;/span&gt;( dwResponseSize &amp;gt; 0 )
        {                
            &lt;span style="color:green;"&gt;// Allocate memory for response
            &lt;/span&gt;pBuffer = &lt;span style="color:blue;"&gt;new &lt;/span&gt;BYTE[dwResponseSize + 1];
            &lt;span style="color:blue;"&gt;if &lt;/span&gt;( NULL == pBuffer )
            {
                dwError = ERROR_OUTOFMEMORY;
                Error(&lt;span style="color:#a31515;"&gt;&amp;quot;Could not allocate memory&amp;quot; &lt;/span&gt;);
            }
            ZeroMemory( pBuffer, dwResponseSize );
            Recieve(pBuffer, dwResponseSize );
        }    
        dwRequestId = (headerOfMessage.requestIdB1 &amp;lt;&amp;lt; 8) + headerOfMessage.requestIdB0;
&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/pre&gt;

&lt;pre class="code"&gt;&lt;strong&gt;        &lt;/strong&gt;&lt;span style="color:green;"&gt;&lt;strong&gt;// Switch based on header type and define your own response to each of the &lt;br /&gt;        //  &lt;/strong&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&lt;strong&gt;messages from the FastCGI Server
&lt;/strong&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;switch&lt;/span&gt;( headerOfMessage.type )
        {
        &lt;span style="color:blue;"&gt;case &lt;/span&gt;FCGI_BEGIN_REQUEST :
            LogVerbose(&lt;span style="color:#a31515;"&gt;&amp;quot;FCGI_BEGIN_REQUEST&amp;quot;&lt;/span&gt;);
            &lt;span style="color:blue;"&gt;break&lt;/span&gt;;

        &lt;span style="color:blue;"&gt;case &lt;/span&gt;FCGI_PARAMS :
            LogVerbose(&lt;span style="color:#a31515;"&gt;&amp;quot;FCGI_PARAMS&amp;quot;&lt;/span&gt;);
            &lt;span style="color:blue;"&gt;break&lt;/span&gt;;

        &lt;span style="color:blue;"&gt;case &lt;/span&gt;FCGI_STDIN :
            LogVerbose(&lt;span style="color:#a31515;"&gt;&amp;quot;FCGI_STDIN&amp;quot;&lt;/span&gt;);
            ProcessRequest(dwRequestId);
            &lt;span style="color:blue;"&gt;break&lt;/span&gt;;

        &lt;span style="color:blue;"&gt;case &lt;/span&gt;FCGI_NULL_REQUEST_ID :
            LogVerbose(&lt;span style="color:#a31515;"&gt;&amp;quot;FCGI_NULL_REQUEST_ID&amp;quot; &lt;/span&gt;);
            &lt;span style="color:blue;"&gt;break&lt;/span&gt;;

        &lt;span style="color:blue;"&gt;default &lt;/span&gt;:
            Error(&lt;span style="color:#a31515;"&gt;&amp;quot;Unhandled type obtained, quitting&amp;quot; &lt;/span&gt;);
            &lt;span style="color:blue;"&gt;break&lt;/span&gt;;
        }
    } &lt;span style="color:green;"&gt;//end while
&lt;/span&gt;}&lt;/pre&gt;

&lt;p&gt;If you are using VC++, you can build the FastCGIApplication and debug your FastCGI_WebRole project. Make sure the the WebRole project has &lt;font color="#0000ff"&gt;web.configrole&lt;/font&gt; where application full path is defined. Note that &lt;font color="#0000ff"&gt;%RoleRoot%&lt;/font&gt; is point to the root of your WebRole project, the same location with &lt;font color="#0000ff"&gt;web.configrole&lt;/font&gt; and &lt;font color="#0000ff"&gt;web.config&lt;/font&gt; files:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a31515;"&gt;xml &lt;/span&gt;&lt;span style="color:red;"&gt;version&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;1.0&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;encoding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;utf-8&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;?&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configuration&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.webServer&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;fastCgi&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;application &lt;/span&gt;&lt;span style="color:red;"&gt;fullPath&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;%RoleRoot%\FastCGIApplication.exe&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;fastCgi&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.webServer&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configuration&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;
  &lt;br /&gt;You also have to enable native code execution in Service definition file (&lt;font color="#0000ff"&gt;ServiceDefinition.csdef&lt;/font&gt;), as shown in the following codes.&amp;#160; &lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a31515;"&gt;xml &lt;/span&gt;&lt;span style="color:red;"&gt;version&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;1.0&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;encoding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;utf-8&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;?&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ServiceDefinition &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;FastCGI&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;WebRole &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;WebRole&lt;/span&gt;&amp;quot; &lt;strong&gt;&lt;span style="color:red;"&gt;enableNativeCodeExecution&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;true&lt;/span&gt;&amp;quot;&lt;/strong&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;InputEndpoints&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
      &amp;lt;!-- &lt;/span&gt;&lt;span style="color:green;"&gt;Must use port 80 for http and port 443 for https when running in the cloud &lt;/span&gt;&lt;span style="color:blue;"&gt;--&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;InputEndpoint &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;HttpIn&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;protocol&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;port&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;80&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;InputEndpoints&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ConfigurationSettings&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Setting &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;MessageOfTheDay&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ConfigurationSettings&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;WebRole&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ServiceDefinition&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
  &lt;br /&gt;Ok, other thing that you should check is your &lt;font color="#0000ff"&gt;web.config&lt;/font&gt; file. Make sure you have &lt;font color="#0000ff"&gt;defaultDocument&lt;/font&gt; pointed to &lt;font color="#0000ff"&gt;index.htm&lt;/font&gt; and has mapped the path of &lt;font color="#0000ff"&gt;FastCGIApplication.exe&lt;/font&gt;.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a31515;"&gt;xml &lt;/span&gt;&lt;span style="color:red;"&gt;version&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;1.0&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;?&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configuration&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.web&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color:blue;"&gt;   &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;compilation &lt;/span&gt;&lt;span style="color:red;"&gt;debug&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;true&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.web&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.webServer&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;!-- &lt;/span&gt;&lt;span style="color:green;"&gt;Setup index.htm as a default document. &lt;/span&gt;&lt;span style="color:blue;"&gt;--&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;defaultDocument&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;files&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;add &lt;/span&gt;&lt;span style="color:red;"&gt;value&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;index.htm&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;
      &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;files&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;defaultDocument&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    
    &amp;lt;!-- &lt;/span&gt;&lt;span style="color:green;"&gt;Map a particular path to our FastCGI application. &lt;/span&gt;&lt;span style="color:blue;"&gt;--&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;handlers&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;add &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;FastCGI Sample&lt;/span&gt;&amp;quot; 
           &lt;span style="color:red;"&gt;path&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;MessageOfTheDay&lt;/span&gt;&amp;quot; 
           &lt;span style="color:red;"&gt;verb&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;*&lt;/span&gt;&amp;quot; 
           &lt;span style="color:red;"&gt;modules&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;FastCgiModule&lt;/span&gt;&amp;quot; 
           &lt;span style="color:red;"&gt;scriptProcessor&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;%RoleRoot%\FastCGIApplication.exe&lt;/span&gt;&amp;quot; 
           &lt;span style="color:red;"&gt;resourceType&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Unspecified&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;handlers&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.webServer&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configuration&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;
  &lt;br /&gt;Now let see what is inside the &lt;font color="#0000ff"&gt;index.htm&lt;/font&gt;. It basically a simple HTML page with a link to &lt;font color="#0000ff"&gt;MessageOfTheDay&lt;/font&gt;. There is no page like that, because FastCGIApplication.exe is the interpreter who will response to the HTTP request. &lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;h1&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;A FastCGI Application&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;h1&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &lt;/span&gt;The path &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;a &lt;/span&gt;&lt;span style="color:red;"&gt;href&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MessageOfTheDay&amp;quot;&amp;gt;&lt;/span&gt;MessageOfTheDay&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;a&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; &lt;/span&gt;is an example FastCGI application.
    The applications use the native runtime API to log information 
    and read configuration settings. After clicking on this page you can examine the logs 
    to see information about the handling of the request.&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/05_5F00_3A10256A.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="05" border="0" alt="05" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/05_5F00_thumb_5F00_516A8E01.jpg" width="630" height="237" /&gt;&lt;/a&gt; 

  &lt;br /&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/06_5F00_512AB874.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="06" border="0" alt="06" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/06_5F00_thumb_5F00_59EA9AF3.jpg" width="630" height="139" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Ok, now let give more instances in Service configuration file (&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Instances &lt;/span&gt;&lt;span style="color:red;"&gt;count&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;4&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;) then debug the WebRole project to see the local development fabric. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/07_5F00_2D31BB4D.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="07" border="0" alt="07" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/07_5F00_thumb_5F00_0A112410.jpg" width="630" height="394" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Want to see this application running in cloud? Simple, right click on the FastCGI web role project, then click publish. Visual Studio will create a ready to deploy package for you (&lt;font color="#0000ff"&gt;fastcgi.cspkg&lt;/font&gt; and &lt;font color="#0000ff"&gt;serviceconfiguration.cscfg&lt;/font&gt;) then redirect your browser to &lt;a href="https://lx.azure.microsoft.com/Cloud/Provisioning/Default.aspx"&gt;Windows Azure cloud provisioning site&lt;/a&gt;. You will need .NET passport and Azure invitation code to get access to that site. I create my FastCGI project there and deploy the FastCGI application in 4 steps:&lt;/p&gt;

&lt;p&gt;
  &lt;br /&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;1. Create a new project 
      &lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/08_5F00_661826E8.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="08" border="0" alt="08" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/08_5F00_thumb_5F00_35FDAF9A.jpg" width="500" height="267" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;2. Set the hosted service name (URL) 
      &lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;

  &lt;br /&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/09_5F00_30EB4C1E.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="09" border="0" alt="09" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/09_5F00_thumb_5F00_23E14640.jpg" width="500" height="186" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;3. Prepare a staging deployment&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/10_5F00_6DAFA823.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="10" border="0" alt="10" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/10_5F00_thumb_5F00_458CD337.jpg" width="500" height="277" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;4. Upload the project package and service configuration 
      &lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/11_5F00_46C14649.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="11" border="0" alt="11" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/11_5F00_thumb_5F00_23347C17.jpg" width="500" height="331" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Make sure that everything is well deployed. Azure use an effective way of HTTP deployment.&amp;#160; &lt;br /&gt;&amp;#160;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/12_5F00_6396F2F9.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="12" border="0" alt="12" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/12_5F00_thumb_5F00_5AB6C4E0.jpg" width="364" height="261" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;For more information about deploying your package and developing on Windows Azure, I would like to recommend you the &lt;a href="http://msdn.microsoft.com/en-us/azure/dd439432.aspx"&gt;&amp;quot;How Do I?&amp;quot; Videos for the Azure Services Platform&lt;/a&gt;. Enjoy! 

  &lt;br /&gt;

  &lt;br /&gt;Hope this helps! 

  &lt;br /&gt;&lt;/p&gt;

&lt;p&gt;Cheer – RAM &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnlaos.net/aggbug.aspx?PostID=48" width="1" height="1"&gt;</content><author><name>risman</name><uri>http://msdnlaos.net/members/risman/default.aspx</uri></author></entry><entry><title>PHP FastCGI on Windows Azure</title><link rel="alternate" type="text/html" href="/blogs/risman/archive/2009/03/29/php-fastcgi-on-windows-azure.aspx" /><id>/blogs/risman/archive/2009/03/29/php-fastcgi-on-windows-azure.aspx</id><published>2009-03-28T17:39:14Z</published><updated>2009-03-28T17:39:14Z</updated><content type="html">&lt;p&gt;After downloading the latest Azure Developer Kits (March 2009 CTP), I am very excited to let you know that &lt;strong&gt;Windows Azure offers native code execution&lt;/strong&gt;, including support for &lt;strong&gt;FastCGI&lt;/strong&gt; and &lt;strong&gt;full trust&lt;/strong&gt;. As developers, we can choose to write services in a native language such as C or C++ and publish them to Windows Azure in the same manner as any other service, but to be more specific, below is its native execution supports:     &lt;br /&gt;    &lt;br /&gt;&lt;font color="#0000ff"&gt;- Windows Azure supports the IIS 7.0 FastCGI module.      &lt;br /&gt;- We can host web roles that require an native interpreter like PHP.       &lt;br /&gt;- We can host web roles and worker roles written in managed code under Windows Azure full trust.       &lt;br /&gt;- A role running under full trust can call .NET libraries, read the local server registry, and call native code libraries.       &lt;br /&gt;- We can develop a service in native code and test and publish this service to Windows Azure.       &lt;br /&gt;- A role running native code can interact with the Windows Azure runtime&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Sure, I will show you how to start working with PHP in Windows Azure. What you need to do before being able to follow this article is (I assumed you already have VS 2008 SP1 installed):    &lt;br /&gt;    &lt;br /&gt;- Install the &lt;a href="http://support.microsoft.com/kb/967131"&gt;Hotfix: Support for FastCGI on Development Fabric&lt;/a&gt;     &lt;br /&gt;- Install the &lt;a href="http://code.msdn.microsoft.com/KB967631"&gt;Hotfix: Native Debugging Improvements&lt;/a&gt;     &lt;br /&gt;- Install the &lt;a href="https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=16827&amp;amp;wa=wsignin1.0"&gt;Hotfix: Improve Visual Studio Stability&lt;/a&gt;     &lt;br /&gt;- Install the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=b44c10e8-425c-417f-af10-3d2839a5a362&amp;amp;displaylang=en"&gt;Windows Azure SDK (March 2009 CTP)&lt;/a&gt;     &lt;br /&gt;- Install the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=59e8fc0c-c399-4ab7-8a93-882d8e74b67a&amp;amp;displaylang=en"&gt;Windows Azure Tools for VS 2008 (March 09 CTP)&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;If you have installed previous version of Windows Azure SDK and Tools, please un-install it before then install the hotfixes before the new Windows Azure SDK and Tools. If you are done, you can move forward. &lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;strong&gt;&lt;font color="#000080"&gt;Hosting FastCGI Applications        &lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;    &lt;br /&gt;Windows Azure supports IIS 7.0 FastCGI module, so we can host web roles that call applications written in native interpreted languages, such as PHP. To host a web role that runs FastCGI on Windows Azure, we will follow the steps below.&lt;/p&gt;  &lt;p&gt;First, create a Cloud Service - Web Cloud Service project in VS 2008, then go to Service Definition file to set the &lt;font color="#0000ff"&gt;enableNativeCodeExecution&lt;/font&gt; attribute to &lt;strong&gt;&lt;font color="#0000ff"&gt;true&lt;/font&gt;&lt;/strong&gt;. It will look like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/01_5F00_2FAEFA9D.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="01" border="0" alt="01" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/01_5F00_thumb_5F00_21401046.jpg" width="475" height="335" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a31515;"&gt;xml &lt;/span&gt;&lt;span style="color:red;"&gt;version&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;1.0&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;encoding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;utf-8&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;?&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ServiceDefinition &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;PHPAzure&lt;/span&gt;&amp;quot; &lt;br /&gt;   &lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;WebRole &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;WebRole&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;enableNativeCodeExecution &lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;true&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;InputEndpoints&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
      &amp;lt;!-- &lt;/span&gt;&lt;span style="color:green;"&gt;Must use port 80 for http and port 443 for https when running in the cloud &lt;/span&gt;&lt;span style="color:blue;"&gt;--&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;InputEndpoint &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;HttpIn&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;protocol&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;port&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;80&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;InputEndpoints&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;WebRole&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ServiceDefinition&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;
  &lt;br /&gt;To enable FastCGI, add a &lt;font color="#0000ff"&gt;web.roleConfig&lt;/font&gt; file in the root of the Web Role project, and specify which FastCGI application we will be using.&amp;#160; Please Note that &lt;font color="#0000ff"&gt;web.roleConfig&lt;/font&gt; is an optional file; it&amp;#39;s only needed if we wish to enable FastCGI. After add &lt;font color="#0000ff"&gt;web.roleConfig&lt;/font&gt; file, specify the absolute path to the PHP FastCGI application (&lt;font color="#0000ff"&gt;php-cgi.exe&lt;/font&gt;). &lt;/p&gt;

&lt;p&gt;To specify the absolute path, precede the interpreter file name with the %RoleRoot% environment variable. The %RoleRoot% variable returns the absolute path to the directory in which the role is running. This directory corresponds to the root of web role project, the same location as the project&amp;#39;s &lt;font color="#0000ff"&gt;web.config&lt;/font&gt; file and the &lt;font color="#0000ff"&gt;web.roleConfig&lt;/font&gt; file. Below is the config for PHP FastCGI application:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a31515;"&gt;xml &lt;/span&gt;&lt;span style="color:red;"&gt;version&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;1.0&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;encoding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;utf-8&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;?&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configuration&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.webServer&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;fastCgi&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;application &lt;/span&gt;&lt;span style="color:red;"&gt;fullPath&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;%RoleRoot%\php\php-cgi.exe&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;fastCgi&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.webServer&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configuration&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;Note: The FastCGI application must be xcopy-deployable and contained in our project.&amp;#160; In this case, it is in the “php” subdirectory and specified via the special %RoleRoot% environment variable.&amp;#160; An xcopy-deployable version of PHP for Windows can be downloaded from &lt;a href="http://php.net"&gt;http://php.net&lt;/a&gt;. After downloaded, extract it do the %RoleRoot%.&lt;/p&gt;

&lt;p&gt;Once enabled FastCGI, we need to configure handlers for a web role running a PHP FastCGI application by adding them to the &lt;font color="#0000ff"&gt;system.webServer&lt;/font&gt; section of our project&amp;#39;s &lt;font color="#0000ff"&gt;web.config&lt;/font&gt; file. The FastCGI module will then handle each &lt;font color="#0000ff"&gt;*.php&lt;/font&gt; request type. To add handlers to the project&amp;#39;s web.config file, locate the handlers element of the &lt;font color="#0000ff"&gt;system.webServer&lt;/font&gt; element, and add PHP handlers within this section. Below is our web.config file looks like after modified to handle .php file extension : &lt;/p&gt;

&lt;p&gt;&lt;span style="color:blue;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a31515;"&gt;xml&lt;/span&gt;&lt;span style="color:red;"&gt;version&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;1.0&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;?&amp;gt; 
    &lt;br /&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configuration&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; 
    &lt;br /&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.webServer&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; 
    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;handlers&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; 
    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;add&lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;PHP via FastCGI&lt;/span&gt;&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; &lt;span style="color:red;"&gt;path&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;*.php&lt;/span&gt;&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; &lt;span style="color:red;"&gt;verb&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;*&lt;/span&gt;&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; &lt;span style="color:red;"&gt;modules&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;FastCgiModule&lt;/span&gt;&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; &lt;span style="color:red;"&gt;scriptProcessor&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;%RoleRoot%\php\php-cgi.exe&lt;/span&gt;&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; &lt;span style="color:red;"&gt;resourceType&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Unspecified&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt; 
    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;handlers&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; 
    &lt;br /&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.webServer&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; 
    &lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configuration&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt; 
    &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style="color:blue;"&gt;&lt;font color="#000000"&gt;Now you are ready to create a PHP page. Lets make simple page using phpinfo().&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="color:#800000;"&gt;DOCTYPE&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;html&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;PUBLIC&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;html&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;xmlns&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;

&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;head&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;meta&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;content&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;text/html; charset=utf-8&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;http-equiv&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Content-Type&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;title&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;PHP on Azure&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;title&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;head&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;

&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;body&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#800000;"&gt;php&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;phpinfo&lt;/span&gt;();?&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;

&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;body&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;

&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;html&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;So our project will look like below:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/04_5F00_6DC4014F.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="04" border="0" alt="04" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/04_5F00_thumb_5F00_3545B4AA.jpg" width="296" height="425" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/06_5F00_068F602E.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="06" border="0" alt="06" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/06_5F00_thumb_5F00_58BE4510.jpg" width="413" height="425" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Normally we should be able to invoke our FastCGI application using Visual Studio Debug Menu (Control-F5) and get the PHP welcome page.&amp;#160; If you prefer to try without Visual Studio, &lt;a href="http://dunnry.com/blog/QuicklyPutPHPOnWindowsAzureWithoutVisualStudio.aspx"&gt;Ryan Dunn has provide this cool manual&lt;/a&gt; way using *.bat files.&amp;#160; You can change number of web role instances via a simple modification to the Service Configuration file &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Instances &lt;/span&gt;&lt;span style="color:red;"&gt;count&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;3&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;font color="#000000"&gt;, see get more scale. &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style="color:blue;"&gt;&lt;font color="#ff0000"&gt;Note : Becareful with some thread safe PHP extensions in you php.ini file, as it may cause APPCRASH like below. Let me know if you have this problem too. &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/02_5F00_37AA86CF.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="02" border="0" alt="02" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/02_5F00_thumb_5F00_2B0CB3E6.jpg" width="336" height="142" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/03_5F00_5A9AACA5.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="03" border="0" alt="03" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/03_5F00_thumb_5F00_109BD95B.jpg" width="382" height="350" /&gt;&lt;/a&gt; 

  &lt;br /&gt;

  &lt;br /&gt;For further exploration, I do recommend you this MIX 09 presentation : &lt;a href="http://mschannel9.vo.msecnd.net/o9/mix/09/pptx/t09f.pptx"&gt;Building Web Application with Windows Azure&lt;/a&gt;. In his presentation, Steve Marx did a very cool PHP on Azure demo, &lt;a href="http://www.tweval.com/mix09-smarx"&gt;Tweval&lt;/a&gt;. That is a real deployed PHP sample on Windows Azure. 

  &lt;br /&gt;

  &lt;br /&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/07_5F00_095C5149.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="07" border="0" alt="07" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/07_5F00_thumb_5F00_5563E990.jpg" width="359" height="246" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Hope this helps!. &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Cheers – RAM &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnlaos.net/aggbug.aspx?PostID=47" width="1" height="1"&gt;</content><author><name>risman</name><uri>http://msdnlaos.net/members/risman/default.aspx</uri></author></entry><entry><title>Windows Filtering Platform</title><link rel="alternate" type="text/html" href="/blogs/risman/archive/2009/03/27/windows-filtering-platform.aspx" /><id>/blogs/risman/archive/2009/03/27/windows-filtering-platform.aspx</id><published>2009-03-27T11:19:53Z</published><updated>2009-03-27T11:19:53Z</updated><content type="html">&lt;p&gt;&lt;a href="http://www.microsoft.com/whdc/device/network/wfp.mspx"&gt;Windows Filtering Platform&lt;/a&gt;. Why it is so exciting? Read below:     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#000080"&gt;WFP enables inspection and modification of stream and packet data coming in. A stream can be paused and later resumed; parts of the stream can be permitted, blocked or replaced with different data. There can be multiple stream modifiers performing stream modification. The stream can be pended if more data is needed to make a filtering decision on the stream. A typical use of this would be an application that needed to screen the stream for unwanted words. &lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000080"&gt;&lt;em&gt;Packet modification is also supported by different re-injection APIs. In this case, the packet is cloned, modified and re-injected either in the send, receive or forward path. Packet modification can involve header modification (e.g. port, source, destination addresses for NAT scenarios) or payload modification (both content and size can change). Packets can also be pended and then injected at a later time or discarded at a later time depending on the filtering policies. &lt;/em&gt;&lt;strong&gt;[Anupama Vasanth, WFP Automation Developer/Tester]&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;     &lt;br /&gt;&lt;/em&gt;Yes, it provides rich filtering interface but at the same time it also exposes a new set of socket-level security APIs that enable Windows Sockets applications to leverage with IPsec for securing traffic.     &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#000080"&gt;Traditionally, IPsec has been used to protect network traffic via central administrative configuration using local or Active Directory group policy. The Secure Sockets API is an extension to the Windows Sockets API that allows socket applications to directly control security of their traffic over a network. The API extension allows applications to provide security policy and requirements for their traffic, and query the security settings applied on their traffic. For instance, applications can use this API to query a remote peer’s security token and use it to perform application-level access checks, or client applications can simply specify the Server Principal Name (SPN) of the server to prevent any man-in-the-middle attacks. Today, applications can already secure their traffic by using SSL, etc. But in comparison, the Winsock extension has been designed to make it very easy for a network application to secure its traffic, with minimal additional code, while letting Windows Sockets abstract away the complexity. &lt;/font&gt;&lt;/em&gt;&lt;strong&gt;&lt;font color="#000080"&gt;[Kartik Murthy, IPsec Developer]        &lt;br /&gt;&lt;/font&gt;      &lt;br /&gt;&lt;/strong&gt;    &lt;br /&gt;Windows Filtering Platform (WFP) is available on Windows Vista and Windows Server 2008. With WFP we can examine or modify outgoing and incoming packets before additional processing occurs. By accessing the TCP/IP processing path at different layers in the protocol stack, we can more easily create &lt;strong&gt;firewalls&lt;/strong&gt;, &lt;strong&gt;antivirus software&lt;/strong&gt;, &lt;strong&gt;diagnostic software&lt;/strong&gt;, and other types of applications and services. Figure below showed the extensibility of WFP that will be useful for third party ISV: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/WFP_5F00_Arch_5F00_028A628A.jpg"&gt;&lt;img title="WFP_Arch" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="396" alt="WFP_Arch" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/WFP_5F00_Arch_5F00_thumb_5F00_2FCBACC0.jpg" width="513" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Below is collection of sample codes that will guide you how to use WFP with C++. &lt;/p&gt;  &lt;p&gt;- &lt;a href="http://blogs.msdn.com/onoj/archive/2007/05/09/windows-filtering-platform-sample.aspx"&gt;Windows Filtering Platform Sample&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://www.codeproject.com/KB/IP/PacketFilter.aspx"&gt;Firewall using Vista&amp;#39;s Windows Filtering Platform APIs&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/dd163329.aspx"&gt;Windows Filtering Platform Stream Edit Sample&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/dd163342.aspx"&gt;Windows Filtering Platform MSN Messenger Monitor Sample&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/dd163347.aspx"&gt;Windows Filtering Platform Packet Modification Sample&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/dd163320.aspx"&gt;Windows Filtering Platform Traffic Inspection Sample&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;WFP will be more safe comparing to LSP. Enjoy the C++ samples :)&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Hope this helps – RAM &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnlaos.net/aggbug.aspx?PostID=46" width="1" height="1"&gt;</content><author><name>risman</name><uri>http://msdnlaos.net/members/risman/default.aspx</uri></author></entry><entry><title>HIS 2009 Will Come</title><link rel="alternate" type="text/html" href="/blogs/risman/archive/2009/03/27/his-2009-will-come.aspx" /><id>/blogs/risman/archive/2009/03/27/his-2009-will-come.aspx</id><published>2009-03-27T01:18:22Z</published><updated>2009-03-27T01:18:22Z</updated><content type="html">&lt;p&gt;If you are not familiar with the Host Integration Server, you can learn from &lt;a href="http://www.microsoft.com/hiserver"&gt;HIS official site&lt;/a&gt;. Currently there is a HIS 2009 RC version available from &lt;a href="http://connect.microsoft.com/"&gt;http://connect.microsoft.com/&lt;/a&gt;.&amp;#160; HIS 2009 is fully integrated to Visual Studio 2008. Last time I worked on HIS project for screen level interface to mainframe (2370 protocol) and I found that much more features will come from HIS 2009. Screencast from HIS team below is very useful to give you ideas on data and application level integration to host systems. &lt;/p&gt;  &lt;p&gt;- &lt;a href="http://blogs.msdn.com/hostintegrationserver/archive/2009/03/25/acessing-offline-mainframe-vsam-data-using-host-integration-server-2009-release-candidate.aspx"&gt;Acessing Offline Mainframe VSAM Data Using Host Integration Server 2009 Release Candidate&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://blogs.msdn.com/hostintegrationserver/archive/2009/03/25/exposing-mainframe-applications-as-sql-stored-procedures-using-his-2009-release-candidate.aspx"&gt;Exposing Mainframe Applications as SQL Stored Procedures using HIS 2009 Release Candidate&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In case you have a specific integration case to legacy in AS400/MainFrame in your company, feel free to put in comment below. &lt;/p&gt;  &lt;p&gt;Cheers - RAM&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnlaos.net/aggbug.aspx?PostID=45" width="1" height="1"&gt;</content><author><name>risman</name><uri>http://msdnlaos.net/members/risman/default.aspx</uri></author></entry><entry><title>April 1st – Tech Virtual Day</title><link rel="alternate" type="text/html" href="/blogs/risman/archive/2009/03/25/april-1st-tech-virtual-day.aspx" /><id>/blogs/risman/archive/2009/03/25/april-1st-tech-virtual-day.aspx</id><published>2009-03-25T03:49:08Z</published><updated>2009-03-25T03:49:08Z</updated><content type="html">&lt;p&gt;Wow, this is great!. One Event. One Day. One World Developer Community. Defying All Challenges. Together. With more then &lt;a href="http://www.msfttechdays.com/public/sessionlist.aspx"&gt;95 sessions&lt;/a&gt; in 5 &lt;a href="http://www.msfttechdays.com/public/sessions.aspx"&gt;tracks&lt;/a&gt;, all of current technologies. Click on the image below to register and &lt;a href="http://www.msfttechdays.com/public/agenda.aspx"&gt;here for the detail agenda&lt;/a&gt;.     &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://www.msfttechdays.com/Modules/Registration/Submit.aspx"&gt;&lt;img title="02" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="187" alt="02" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/02_5F00_7E427647.jpg" width="423" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Cheers – Risman Adnan&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnlaos.net/aggbug.aspx?PostID=44" width="1" height="1"&gt;</content><author><name>risman</name><uri>http://msdnlaos.net/members/risman/default.aspx</uri></author></entry><entry><title>BizTalk 2009 Beta with Visual Studio 2008</title><link rel="alternate" type="text/html" href="/blogs/risman/archive/2009/03/22/biztalk-2009-beta-with-visual-studio-2008.aspx" /><id>/blogs/risman/archive/2009/03/22/biztalk-2009-beta-with-visual-studio-2008.aspx</id><published>2009-03-21T17:38:51Z</published><updated>2009-03-21T17:38:51Z</updated><content type="html">&lt;p&gt;Finally, BizTalk Server 2009 supports the latest Microsoft application platform technologies, including &lt;strong&gt;Windows Server 2008&lt;/strong&gt;, &lt;strong&gt;Microsoft Visual Studio 2008 SP1&lt;/strong&gt;, &lt;strong&gt;Microsoft SQL Server 2008&lt;/strong&gt; and the &lt;strong&gt;.NET Framework 3.5 SP1&lt;/strong&gt;. BizTalk Server 2009 also delivers expanded new connectivity options including new integration with &lt;strong&gt;Oracle e-Business Suite&lt;/strong&gt;, as well as updated platform support for the most recent versions of &lt;strong&gt;IBM&amp;#160; Customer Information Control System (CICS)&lt;/strong&gt;, &lt;strong&gt;Information Management System (IMS)&lt;/strong&gt;, DB2, DB2/400, DB2 Universal Database and &lt;strong&gt;WebSphere MQ&lt;/strong&gt;. You can download BizTalk 2009 Beta Evaluation version at &lt;a href="http://connect.microsoft.com/"&gt;Connect.Microsoft.com&lt;/a&gt;.     &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://connect.microsoft.com/"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="01" border="0" alt="01" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/01_5F00_750CB45B.jpg" width="277" height="60" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;BizTalk Server 2009 delivers improved scalability and reliability through support for SQL Server 2008, Windows Server 2008 Hyper-V virtualization and enhanced failover clustering. It also provides significant new enhancements to both individual and team productivity by enabling new interoperability with ALM solution: &lt;strong&gt;Visual Studio Team System&lt;/strong&gt; and &lt;strong&gt;Team Foundation Server 2008&lt;/strong&gt;. This allows development teams to utilize the integrated source control, bug tracking, team development support, Project Server integration, and support for automating builds via &lt;strong&gt;MSBuild&lt;/strong&gt; for a more seamless development and testing experience.     &lt;br /&gt;    &lt;br /&gt;In this post, I will guide you to install BizTalk 2009 Beta and start working with it using Visual Studio 2008. First, you have to download BizTalk 2009 with its components (UDDI services, adapter pack, accelerator) from &lt;a href="http://connect.microsoft.com/"&gt;connect website&lt;/a&gt;. Before you install BizTalk, I assumed you already have the following in your machine:     &lt;br /&gt;    &lt;br /&gt;- &lt;strong&gt;OS&lt;/strong&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; : Win Svr 2008, or Vista SP1 with all critical updates.     &lt;br /&gt;- &lt;strong&gt;IIS&lt;/strong&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; : IIS 7.0     &lt;br /&gt;&lt;strong&gt;-&lt;/strong&gt; &lt;strong&gt;VS 2008 SP1&lt;/strong&gt;:&lt;strong&gt; &lt;/strong&gt;Install C# or VB.NET     &lt;br /&gt;&lt;strong&gt;- SQL 2008&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/strong&gt;:&lt;strong&gt; &lt;/strong&gt;Default installation. SQL 2005 is also applicable.     &lt;br /&gt;- &lt;strong&gt;Sharepoint&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160; : WSS 3.0 SP1 or MOSS 2007 SP1     &lt;br /&gt;    &lt;br /&gt;I am using Windows Server 2008 x-64 with VS 2008, SQL 2008 and MOSS 2007 installed.     &lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;strong&gt;&lt;font color="#000080"&gt;Install BizTalk 2009&lt;/font&gt;&lt;/strong&gt;     &lt;br /&gt;    &lt;br /&gt;After installed IIS, VS 2008, SQL 2008 and Sharepoint (WSS/MOSS), you are ready to install BizTalk 2009. Remember that you also have to install &lt;strong&gt;BizTalk Redistribution Pack&lt;/strong&gt; (download links for pre-downloaded CAB are listed in BizTalk 2009 installation guide) if some pre-requisites are not installed in your machine.&amp;#160; &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/03_5F00_6B644625.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="03" border="0" alt="03" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/03_5F00_thumb_5F00_720729DB.jpg" width="376" height="280" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/05_5F00_1FC4CCD4.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="05" border="0" alt="05" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/05_5F00_thumb_5F00_4E4AAFE9.jpg" width="349" height="280" /&gt;&lt;/a&gt;     &lt;br /&gt;In my case I installed all the BizTalk core components for single server installation including BAM, Dev Tools and SDK, Documentations, Server runtime and additional software. If everything ok with your installation, you can launch the BizTalk Server configuration wizard. But before we configure BizTalk, something need to be done. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/06_5F00_4BB1585E.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="06" border="0" alt="06" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/06_5F00_thumb_5F00_06C4E890.jpg" width="362" height="295" /&gt;&lt;/a&gt;&amp;#160;&amp;#160; &lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/07_5F00_0EAC6525.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="07" border="0" alt="07" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/07_5F00_thumb_5F00_7031FE6E.jpg" width="354" height="295" /&gt;&lt;/a&gt;&amp;#160;&amp;#160; &lt;br /&gt;    &lt;br /&gt;When using the SQL Server shared memory protocol with BizTalk Server 2009 you might experience degradation in performance under certain stress conditions, if clients are accessing SQL Server from the same computer. To resolve the problem you need to disable the use of the shared memory network protocol in the SQL Server Client Network Utility. After you disable the shared memory protocol, you will need to restart SQL Server services.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;strong&gt;&lt;font color="#000080"&gt;Configure BizTalk 2009&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In this task, I will show you how to configure BizTalk Server 2009 using the &lt;strong&gt;Basic configuration option&lt;/strong&gt;. Basic configuration is recommended for developers setting up a complete installation of BizTalk Server running on a single server. When configuring BizTalk Server 2009 using &lt;strong&gt;basic configuration&lt;/strong&gt;, consider the following: &lt;/p&gt;  &lt;p&gt;- Configuring a remote SQL Server is not supported.    &lt;br /&gt;- Configuring against SQL Server 2008 default instances and named instances is supported.     &lt;br /&gt;- Account you are logged on is &lt;strong&gt;local administrators&lt;/strong&gt; and have System Administrator rights on SQL Server.     &lt;br /&gt;- The account you are logged on must be a member of the OLAP Administrators on the OLAP box if configuring.     &lt;br /&gt;- You cannot configure BAM Analysis on a SQL Server named instance using basic configuration.     &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/09_5F00_3E76E119.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="09" border="0" alt="09" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/09_5F00_thumb_5F00_49439C94.jpg" width="478" height="451" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;When you use the basic configuration option, the following occurs: &lt;/p&gt;  &lt;p&gt;- All database names are generated by BizTalk Server.    &lt;br /&gt;- All applicable database logon information is run under the account provided.     &lt;br /&gt;- All BizTalk Server services are generated by BizTalk Server.     &lt;br /&gt;- All BizTalk Server services run under the account provided.     &lt;br /&gt;- All features are configured based on the prerequisite software you have installed on the computer.     &lt;br /&gt;- The logged on user must be a member of the OLAP Administrators group on the OLAP server.     &lt;br /&gt;- The Default Web Site in Internet Information Services (IIS) is used for any feature that requires IIS.     &lt;br /&gt;    &lt;br /&gt;The implication of the last point is we need to extend Default Website as a virtual server. WSS/MOSS uses virtual servers to host Web sites on server. The process of applying WSS/MOSS to a virtual server is called extending. We must extend a virtual server with WSS/MOSS before we can create a Web site based on WSS. We can do that in MOSS with the following steps:     &lt;br /&gt;    &lt;br /&gt;- Go to Microsoft WSS/MOSS Central Administration.     &lt;br /&gt;- Navigate to the Application Management page.     &lt;br /&gt;- Under SharePoint Web Application Management, select Create or Extend Web Application.     &lt;br /&gt;- On the Create or Extend Web Application page, select Extend an existing Web application.     &lt;br /&gt;- On the Extend Web Application to Another IIS Web Site page, Select Change Web Application.     &lt;br /&gt;- On the Select Web Application page, select SharePoint Central Administration 3.0, and then click OK.     &lt;br /&gt;- In the IIS Web Site section, click Use an existing IIS Web site.     &lt;br /&gt;- Select Default Web Site.     &lt;br /&gt;- Leave the rest of the default values, and then click OK.     &lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;font color="#000080"&gt;&lt;strong&gt;Work with Visual Studio 2008        &lt;br /&gt;&lt;/strong&gt;&lt;/font&gt;    &lt;br /&gt;&lt;font color="#000000"&gt;BizTalk 2009 is fully integrated to Visual Studio 2008. To start with BizTalk project, you can open Visual Studio 2008 and create BizTalk empty project. All BizTalk project (&lt;strong&gt;Schema&lt;/strong&gt;, &lt;strong&gt;Map&lt;/strong&gt;, &lt;strong&gt;Pipeline&lt;/strong&gt;, and &lt;strong&gt;Orchestration&lt;/strong&gt;) will be compiled as .NET Assembly (DLL).       &lt;br /&gt;      &lt;br /&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="10" border="0" alt="10" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/10_5F00_thumb_5F00_797A4B7D.jpg" width="356" height="260" /&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/11_5F00_676E07F0.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="11" border="0" alt="11" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/11_5F00_thumb_5F00_39DCC260.jpg" width="376" height="260" /&gt;&lt;/a&gt;       &lt;br /&gt;I will not discuss about BizTalk development here, only to give you starting point on BizTalk 2009 and Visual Studio 2008. BizTalk Development tools provides Visual Studio templates and visual designers to enable developer working on schemas, mapping the schemas, and doing system workflow (orchestration) and defining send/receive pipelines. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/12_5F00_5DB573ED.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="12" border="0" alt="12" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/12_5F00_thumb_5F00_1794910D.jpg" width="361" height="220" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/13_5F00_428C7F12.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="13" border="0" alt="13" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/13_5F00_thumb_5F00_19FD7731.jpg" width="363" height="220" /&gt;&lt;/a&gt;     &lt;br /&gt;Visual designers in BizTalk is just tools to make your life easier when dealing with the BizTalk APIs. &lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/14_5F00_7D33DC4E.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="14" border="0" alt="14" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/14_5F00_thumb_5F00_55E96D4C.jpg" width="350" height="531" /&gt;&lt;/a&gt;&amp;#160;&amp;#160; &lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/15_5F00_0764B515.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="15" border="0" alt="15" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/15_5F00_thumb_5F00_33DDBF2E.jpg" width="346" height="531" /&gt;&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;We will discuss more about BizTalk development in my incoming postings.     &lt;br /&gt;    &lt;br /&gt;Stay tuned!     &lt;br /&gt;    &lt;br /&gt;Hope this helps – RAM &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnlaos.net/aggbug.aspx?PostID=43" width="1" height="1"&gt;</content><author><name>risman</name><uri>http://msdnlaos.net/members/risman/default.aspx</uri></author></entry><entry><title>EWS – Exchange Web Services</title><link rel="alternate" type="text/html" href="/blogs/risman/archive/2009/03/21/ews-exchange-web-services.aspx" /><id>/blogs/risman/archive/2009/03/21/ews-exchange-web-services.aspx</id><published>2009-03-21T09:29:13Z</published><updated>2009-03-21T09:29:13Z</updated><content type="html">&lt;p&gt;If you currently using legacy APIs in Exchange 2007 (CDOEX, WEBDAV, Event Sinks or Exchange OLEDB) for integration to LOB or 3rd party ISV applications, you can now try &lt;a href="http://msdn.microsoft.com/en-us/library/aa579369.aspx"&gt;Exchange Web Services&lt;/a&gt;. Comparison between legacy APIs to EWS is &lt;a href="http://msdn.microsoft.com/en-us/library/cc535018.aspx"&gt;explained here&lt;/a&gt;, including the Exchange 2007 &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=CDE26EA9-5647-448F-A5E6-AE094A882EE5&amp;amp;displaylang=en"&gt;Legacy API property mapping&lt;/a&gt;, for your migration purpose.&amp;#160; &lt;br /&gt;    &lt;br /&gt;LOB apps that use EWS can access data store items locally or remotely by using a SOAP version 1.1 (or 1.2). EWS is deployed with client access server role. Exchange Server 2007 clients connect to the server that is running Exchange 2007 that has the &lt;strong&gt;Client Access server role&lt;/strong&gt; installed in an Active Directory directory service site by using an HTTPS connection. The target Client Access server obtains the information by communicating over MAPI to the Exchange server that has the Mailbox server role installed and then sends it back to the source Client Access server. If the target mailbox is in the same Active Directory site, the Client Access server uses MAPI to communicate with the Mailbox server to obtain the information. The Client Access server then provides the data back to the client. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#000080"&gt;How It Works        &lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;When a client application requests information from the Exchange store, an XML request message that complies with the SOAP standard is created and sent to the Exchange server. When the Microsoft Exchange server receives the request, it verifies the credentials that are provided by the client and automatically parses the XML for the requested data. The server then builds a SOAP response that contains XML data that represents the requested strongly typed objects and their properties. The XML data is sent back to the client application in an HTTP response. The client application then de-serializes the XML and uses the data to reform the strongly typed objects. You can read more on about &lt;a href="http://msdn.microsoft.com/en-us/library/aa579369.aspx"&gt;EWS architecture from here&lt;/a&gt; as you have to understand some additional concepts like &lt;a href="http://msdn.microsoft.com/en-us/library/bb204047.aspx"&gt;autodiscover service&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/aa579128.aspx"&gt;event notification&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/bb204081.aspx"&gt;delegate access&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/aa579435.aspx"&gt;server-to-server authorization&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/02_5F00_603B2633.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="02" border="0" alt="02" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/02_5F00_thumb_5F00_2ADDDA02.jpg" width="356" height="399" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#000080"&gt;What in Exchange Web Services&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;EWS provides the functionality to enable client applications to communicate with the Exchange server. EWS provides access to much of the same data made available through Outlook, to enable LOB applications to have functionalities like Outlook. The Exchange Web Services clients can integrate Outlook data into Line-of-Business (LOB) applications. Exchange Web Services is described by three files that are located in the EWS virtual directory: &lt;/p&gt;  &lt;p&gt;- &lt;strong&gt;Services.wsdl&lt;/strong&gt; : contract between client and server.     &lt;br /&gt;- &lt;strong&gt;Messages.xsd&lt;/strong&gt; : request and response SOAP messages.     &lt;br /&gt;- &lt;strong&gt;Types.xsd&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : elements used in the SOAP messages. &lt;/p&gt;  &lt;p&gt;Exchange Web Services provides the following &lt;a href="http://msdn.microsoft.com/en-us/library/aa579187.aspx"&gt;types of operations&lt;/a&gt;:     &lt;br /&gt;- Availability     &lt;br /&gt;- Messaging Records Management     &lt;br /&gt;- Folder     &lt;br /&gt;- Item     &lt;br /&gt;- Utility     &lt;br /&gt;- Notification     &lt;br /&gt;- Synchronization     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#000080"&gt;How to Start&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You can download &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=211D60C1-55EB-4BFD-8425-FCF980E9CEAB&amp;amp;displaylang=en"&gt;TechReady 2007 EWS Sample Codes&lt;/a&gt; to get started with EWS. Extract the installer then open EWSDemos.sln using Visual Studio 2005/2008. It will be better to use VS 2008 and .NET 3.5 as you can utilize new features like LINQ in your codes. To change the target WS from contoso.com, you can delete the existing WS proxy and add the new proxy based on your configuration.     &lt;br /&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/07_5F00_72BB9A84.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="07" border="0" alt="07" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/07_5F00_thumb_5F00_73638F07.jpg" width="722" height="465" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Then you can start to explore the following demo applications:    &lt;br /&gt;    &lt;br /&gt;- &lt;strong&gt;Auto Discovery Demo&lt;/strong&gt;     &lt;br /&gt;- &lt;strong&gt;Availability Demo&lt;/strong&gt;     &lt;br /&gt;- &lt;strong&gt;Create Meeting and Send Invitation Demo&lt;/strong&gt;     &lt;br /&gt;- &lt;strong&gt;Pull Notification Demo&lt;/strong&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/08_5F00_02D328B2.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="08" border="0" alt="08" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/08_5F00_thumb_5F00_1C2B061F.jpg" width="331" height="200" /&gt;&lt;/a&gt;&amp;#160;&amp;#160; &lt;a href="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/09_5F00_406FEAA1.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="09" border="0" alt="09" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/09_5F00_thumb_5F00_2D3E9828.jpg" width="363" height="200" /&gt;&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;Hope this helps!     &lt;br /&gt;    &lt;br /&gt;Cheers – RAM &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnlaos.net/aggbug.aspx?PostID=42" width="1" height="1"&gt;</content><author><name>risman</name><uri>http://msdnlaos.net/members/risman/default.aspx</uri></author></entry><entry><title>Whats New from MIX 09</title><link rel="alternate" type="text/html" href="/blogs/risman/archive/2009/03/21/whats-new-from-mix-09.aspx" /><id>/blogs/risman/archive/2009/03/21/whats-new-from-mix-09.aspx</id><published>2009-03-21T04:45:53Z</published><updated>2009-03-21T04:45:53Z</updated><content type="html">&lt;p&gt;MIX 09 just ended yesterday. This is the biggest web developer event from Microsoft this year. With 129 total sessions, this event brought new technologies like &lt;strong&gt;Silverlight 3.0&lt;/strong&gt;, &lt;strong&gt;IIS 7.0 Media Services&lt;/strong&gt;, &lt;strong&gt;ASP.NET MVC&lt;/strong&gt;, &lt;strong&gt;IE 8&lt;/strong&gt;, &lt;strong&gt;SQL Data Services (Astoria)&lt;/strong&gt;, &lt;strong&gt;Azure Service Platform&lt;/strong&gt;, &lt;strong&gt;PHP on Windows&lt;/strong&gt;, etc. I really suggest you to go the MIX 09 site and get all those technologies on your machine by clicking the picture below. You can click each session title then download all recorded videos and PPTs. Enjoy!.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="https://content.visitmix.com/2009/sessions/?categories=All"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="01" border="0" alt="01" src="http://msdnlaos.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/01_5F00_213EB789.jpg" width="240" height="186" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;    &lt;br /&gt;Cheers – RAM &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnlaos.net/aggbug.aspx?PostID=41" width="1" height="1"&gt;</content><author><name>risman</name><uri>http://msdnlaos.net/members/risman/default.aspx</uri></author></entry><entry><title>Learn SQL Server 2008 from Videos</title><link rel="alternate" type="text/html" href="/blogs/risman/archive/2009/03/17/learn-sql-server-2008-from-videos.aspx" /><id>/blogs/risman/archive/2009/03/17/learn-sql-server-2008-from-videos.aspx</id><published>2009-03-16T16:51:54Z</published><updated>2009-03-16T16:51:54Z</updated><content type="html">&lt;p&gt;This post contains collection of FREE SQL Server 2005/2008 video resources.    &lt;br /&gt;    &lt;br /&gt;&lt;strong&gt;Basic SQL Server Knowledge      &lt;br /&gt;&lt;/strong&gt;- &lt;a href="http://www.asp.net/learn/sql-videos/"&gt;SQL Server 2005 Express for Beginner (Applicable for 2008 too)&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://technet.microsoft.com/en-us/sqlserver/dd353197.aspx"&gt;SQL Server How do I Videos&lt;/a&gt; from Technet – You can subscribe it its &lt;a href="http://www.microsoft.com/feeds/technet/en-us/how-to-videos/SQL_How-to_Videos_image.xml"&gt;RSS feed&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://channel9.msdn.com/wiki/sqlserver/"&gt;SQL Server and Business Intelligent in Channel9&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/events-webcasts.aspx"&gt;SQL Server Events and Webcasts&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;&lt;strong&gt;More Advanced SQL Server 2008 Topics – from PDC 2008      &lt;br /&gt;&lt;/strong&gt;- &lt;a href="http://channel9.msdn.com/pdc2008/BB24/"&gt;Deep Dive into Spatial Data&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://channel9.msdn.com/pdc2008/BB07/"&gt;Developing Large Scale Web Applications and Services&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://channel9.msdn.com/pdc2008/BB16/"&gt;Enabling Developers To Go Beyond Relational&lt;/a&gt;&amp;#160; &lt;br /&gt;- &lt;a href="http://channel9.msdn.com/pdc2008/BB25/"&gt;New and Future T-SQL Programmability&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://channel9.msdn.com/pdc2008/BB37/"&gt;Developing Secure Applications&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://channel9.msdn.com/pdc2008/BB52/"&gt;Tips and Tricks for High-Throughput Data-Driven Applications&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://channel9.msdn.com/pdc2008/BB26/"&gt;Business Intelligence and Data Visualization&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://channel9.msdn.com/posts/Dan/Christian-Kleinerman-SQL-Server-2008-for-Developers/"&gt;SQL Server 2008 for Developers&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://channel9.msdn.com/pdc2008/PC40/"&gt;SQL Server Compact: Embedding in Desktop and Device Applications&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;Totally there were &lt;strong&gt;16 SQL Server 2008&lt;/strong&gt; and &lt;strong&gt;8 SQL Server Data Services&lt;/strong&gt; sessions in &lt;a href="http://www.microsoftpdc.com/"&gt;PDC 2008&lt;/a&gt;, you can download all slides and recorded videos from &lt;a href="https://sessions.microsoftpdc.com/public/timeline.aspx"&gt;here&lt;/a&gt;. If you know more links, please put as comments in this post so other members can benefited.&amp;#160; &lt;br /&gt;    &lt;br /&gt;Hope this helps - RAM&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnlaos.net/aggbug.aspx?PostID=40" width="1" height="1"&gt;</content><author><name>risman</name><uri>http://msdnlaos.net/members/risman/default.aspx</uri></author></entry></feed>
