<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msdnbrunei.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"><channel><title>MSDNBRUNEI.NET | Microsoft Developer Network Brunei</title><link>http://msdnbrunei.net/blogs/</link><description>Next Generation Software Developer Community</description><dc:language>en-US</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>test captcha</title><link>http://msdnbrunei.net/blogs/risman/archive/2009/12/19/test-captcha.aspx</link><pubDate>Fri, 18 Dec 2009 23:27:00 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:58</guid><dc:creator>admin</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;just test&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnbrunei.net/aggbug.aspx?PostID=58" width="1" height="1"&gt;</description></item><item><title>Geneva Framework – Quick Intro</title><link>http://msdnbrunei.net/blogs/risman/archive/2009/04/18/geneva-framework-quick-intro.aspx</link><pubDate>Sat, 18 Apr 2009 11:56:13 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:54</guid><dc:creator>risman</dc:creator><slash:comments>0</slash:comments><description>&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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/01_5F00_6E86ED14.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/01_5F00_thumb_5F00_1876C570.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://msdnbrunei.net/aggbug.aspx?PostID=54" width="1" height="1"&gt;</description></item><item><title>Beginner Guide - C++ for Windows</title><link>http://msdnbrunei.net/blogs/risman/archive/2009/04/11/beginner-guide-c-for-windows.aspx</link><pubDate>Sat, 11 Apr 2009 04:11:23 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:53</guid><dc:creator>risman</dc:creator><slash:comments>0</slash:comments><description>&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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/DP_5F00_2828E38C.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://msdnbrunei.net/aggbug.aspx?PostID=53" width="1" height="1"&gt;</description></item><item><title>.NET RIA Services with Offline Scenario?</title><link>http://msdnbrunei.net/blogs/risman/archive/2009/04/04/net-ria-services-is-good-enough.aspx</link><pubDate>Sat, 04 Apr 2009 05:45:57 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:52</guid><dc:creator>risman</dc:creator><slash:comments>0</slash:comments><description>&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; from here 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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v01_5F00_47B455E2.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v01_5F00_thumb_5F00_16E1029D.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v02_5F00_2DAFAE4C.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v02_5F00_thumb_5F00_2F8CD788.jpg" width="350" height="146" /&gt;&lt;/a&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v03_5F00_2AE6A701.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v03_5F00_thumb_5F00_0A4F4182.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v05_5F00_229235D0.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v05_5F00_thumb_5F00_06DD840D.jpg" width="490" height="178" /&gt;&lt;/a&gt; &lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v06_5F00_210DC764.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v06_5F00_thumb_5F00_1065A6A9.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v07_5F00_050C6C9F.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v07_5F00_thumb_5F00_5D55CAA7.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v08_5F00_6FFA9E91.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v08_5F00_thumb_5F00_3522CFEE.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://msdnbrunei.net/aggbug.aspx?PostID=52" width="1" height="1"&gt;</description></item><item><title>Project Velocity – Answer to Memcached?</title><link>http://msdnbrunei.net/blogs/risman/archive/2009/04/04/project-velocity-answer-to-memcached.aspx</link><pubDate>Fri, 03 Apr 2009 17:15:47 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:51</guid><dc:creator>risman</dc:creator><slash:comments>0</slash:comments><description>&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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v01_5F00_5387B047.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v01_5F00_thumb_5F00_6CCF67E7.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v02_5F00_3FD6B2B4.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v02_5F00_thumb_5F00_0B3594D2.jpg" width="350" height="183" /&gt;&lt;/a&gt;&lt;strong&gt;&amp;#160;&lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v03_5F00_2D2DCACB.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v03_5F00_thumb_5F00_618E5179.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/x01_5F00_7F7C39A0.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/x01_5F00_thumb_5F00_3C4095A6.jpg" width="345" height="250" /&gt;&lt;/a&gt; &lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/x03_5F00_7898BEB6.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/x03_5F00_thumb_5F00_7A293EF0.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/x04_5F00_485DFBCE.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/x04_5F00_thumb_5F00_0C7E1781.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v05_5F00_40726B3A.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v05_5F00_thumb_5F00_782463C3.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/x05_5F00_79388B3B.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/x05_5F00_thumb_5F00_0944079B.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v06_5F00_2E8DAF6F.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/v06_5F00_thumb_5F00_08E3E674.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://msdnbrunei.net/aggbug.aspx?PostID=51" width="1" height="1"&gt;</description></item><item><title>Qt 4.5 with Visual Studio 2008 (VC++ Express)</title><link>http://msdnbrunei.net/blogs/risman/archive/2009/04/02/qt-4-5-with-visual-studio-2008-vc-express.aspx</link><pubDate>Wed, 01 Apr 2009 17:51:28 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:50</guid><dc:creator>risman</dc:creator><slash:comments>0</slash:comments><description>&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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/01_5F00_5304C01A.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/01_5F00_thumb_5F00_145F26DA.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/03_5F00_534081A8.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/03_5F00_thumb_5F00_534C9376.jpg" width="410" border="0" /&gt;&lt;/a&gt; &lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/09_5F00_66B9A77D.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/09_5F00_thumb_5F00_64A8BA82.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/12_5F00_0AEA5234.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/12_5F00_thumb_5F00_0811251C.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/10_5F00_38FFEE55.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/10_5F00_thumb_5F00_301FC03C.jpg" width="410" border="0" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/11_5F00_5BDFEE5E.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/11_5F00_thumb_5F00_42381597.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/13_5F00_13CE6A1D.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/13_5F00_thumb_5F00_23210A85.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/14_5F00_5B7BB938.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/14_5F00_thumb_5F00_7653F112.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/04_5F00_6D8FFA94.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/04_5F00_thumb_5F00_7D9B76F3.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://msdnbrunei.net/aggbug.aspx?PostID=50" width="1" height="1"&gt;</description></item><item><title>Insomnia? So.. take REST!</title><link>http://msdnbrunei.net/blogs/risman/archive/2009/03/29/insomnia-so-take-rest.aspx</link><pubDate>Sun, 29 Mar 2009 03:49:04 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:49</guid><dc:creator>risman</dc:creator><slash:comments>0</slash:comments><description>&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://msdnbrunei.net/aggbug.aspx?PostID=49" width="1" height="1"&gt;</description></item><item><title>FastCGI Application on Windows Azure</title><link>http://msdnbrunei.net/blogs/risman/archive/2009/03/29/fastcgi-application-on-windows-azure.aspx</link><pubDate>Sun, 29 Mar 2009 02:39:09 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:48</guid><dc:creator>risman</dc:creator><slash:comments>0</slash:comments><description>&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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/01_5F00_0F6106E0.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/01_5F00_thumb_5F00_4240717A.jpg" width="276" height="181" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/02_5F00_60E73598.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/02_5F00_thumb_5F00_517387EF.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/03_5F00_4107EA69.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/03_5F00_thumb_5F00_3E6E92DE.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/05_5F00_03D34770.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/05_5F00_thumb_5F00_745F99C6.jpg" width="630" height="237" /&gt;&lt;/a&gt; 

  &lt;br /&gt;&lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/06_5F00_39581B63.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/06_5F00_thumb_5F00_1279DF56.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/07_5F00_59BF0F7B.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/07_5F00_thumb_5F00_696E7EB2.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/08_5F00_3073D94B.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/08_5F00_thumb_5F00_034EC6B0.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/09_5F00_5A833B99.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/09_5F00_thumb_5F00_57CA5A1B.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/10_5F00_6FA11B74.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/10_5F00_thumb_5F00_1271B758.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/11_5F00_61AE89DF.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/11_5F00_thumb_5F00_5F153254.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/12_5F00_50C69397.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/12_5F00_thumb_5F00_732AFC85.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://msdnbrunei.net/aggbug.aspx?PostID=48" width="1" height="1"&gt;</description></item><item><title>PHP FastCGI on Windows Azure</title><link>http://msdnbrunei.net/blogs/risman/archive/2009/03/29/php-fastcgi-on-windows-azure.aspx</link><pubDate>Sat, 28 Mar 2009 17:32:02 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:47</guid><dc:creator>risman</dc:creator><slash:comments>0</slash:comments><description>&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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/01_5F00_63EE3992.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/01_5F00_thumb_5F00_3E14C0D7.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/04_5F00_3FA54111.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/04_5F00_thumb_5F00_261CF23D.jpg" width="296" height="425" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/06_5F00_1A475F71.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/06_5F00_thumb_5F00_03086CCE.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/02_5F00_706FAAB1.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/02_5F00_thumb_5F00_7A44764F.jpg" width="336" height="142" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/03_5F00_5221A163.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/03_5F00_thumb_5F00_074A682F.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/07_5F00_73E965F5.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/07_5F00_thumb_5F00_5F9FD805.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://msdnbrunei.net/aggbug.aspx?PostID=47" width="1" height="1"&gt;</description></item><item><title>Windows Filtering Platform</title><link>http://msdnbrunei.net/blogs/risman/archive/2009/03/27/windows-filtering-platform.aspx</link><pubDate>Fri, 27 Mar 2009 11:17:52 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:46</guid><dc:creator>risman</dc:creator><slash:comments>0</slash:comments><description>&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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/WFP_5F00_Arch_5F00_2DE35D8C.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/WFP_5F00_Arch_5F00_thumb_5F00_554A0429.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://msdnbrunei.net/aggbug.aspx?PostID=46" width="1" height="1"&gt;</description></item><item><title>HIS 2009 Will Come</title><link>http://msdnbrunei.net/blogs/risman/archive/2009/03/27/his-2009-will-come.aspx</link><pubDate>Fri, 27 Mar 2009 04:24:29 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:45</guid><dc:creator>risman</dc:creator><slash:comments>0</slash:comments><description>&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://msdnbrunei.net/aggbug.aspx?PostID=45" width="1" height="1"&gt;</description></item><item><title>April 1st – Tech Virtual Day</title><link>http://msdnbrunei.net/blogs/risman/archive/2009/03/25/april-1st-tech-virtual-day.aspx</link><pubDate>Wed, 25 Mar 2009 03:48:19 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:44</guid><dc:creator>risman</dc:creator><slash:comments>0</slash:comments><description>&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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/02_5F00_28C2E131.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://msdnbrunei.net/aggbug.aspx?PostID=44" width="1" height="1"&gt;</description></item><item><title>BizTalk 2009 Beta with Visual Studio 2008</title><link>http://msdnbrunei.net/blogs/risman/archive/2009/03/22/biztalk-2009-beta-with-visual-studio-2008.aspx</link><pubDate>Sat, 21 Mar 2009 17:47:44 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:41</guid><dc:creator>risman</dc:creator><slash:comments>0</slash:comments><description>&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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/01_5F00_467B9168.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 download and install BizTalk 2009, 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;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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/03_5F00_30D132FE.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/03_5F00_thumb_5F00_1F20FC99.jpg" width="376" height="280" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/05_5F00_52B9432A.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/05_5F00_thumb_5F00_3EEC0DFC.jpg" width="349" height="280" /&gt;&lt;/a&gt;     &lt;br /&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;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/06_5F00_59888448.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/06_5F00_thumb_5F00_748107BC.jpg" width="362" height="295" /&gt;&lt;/a&gt;&amp;#160;&amp;#160; &lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/07_5F00_6C0D0C98.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/07_5F00_thumb_5F00_4B75A719.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;br /&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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/09_5F00_5A5CD633.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/09_5F00_thumb_5F00_7E2561F3.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/10_5F00_thumb_5F00_62FC6D18.jpg" width="356" height="260" /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/11_5F00_2F2450FA.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/11_5F00_thumb_5F00_34829BD1.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/12_5F00_585B4D5E.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/12_5F00_thumb_5F00_365FC50D.jpg" width="361" height="220" /&gt;&lt;/a&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/13_5F00_73A079D4.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/13_5F00_thumb_5F00_217DA6C0.jpg" width="363" height="220" /&gt;&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;Visual designers in BizTalk are just tools to make your life easier when dealing with the BizTalk APIs.     &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/14_5F00_2B82221E.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/14_5F00_thumb_5F00_79B6DEFB.jpg" width="350" height="531" /&gt;&lt;/a&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/15_5F00_7D44D40B.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/15_5F00_thumb_5F00_57AB30DD.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://msdnbrunei.net/aggbug.aspx?PostID=41" width="1" height="1"&gt;</description></item><item><title>EWS – Exchange Web Services</title><link>http://msdnbrunei.net/blogs/risman/archive/2009/03/21/ews-exchange-web-services.aspx</link><pubDate>Sat, 21 Mar 2009 09:25:01 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:40</guid><dc:creator>risman</dc:creator><slash:comments>0</slash:comments><description>&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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/02_5F00_1E7DCA82.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/02_5F00_thumb_5F00_777F42DA.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/07_5F00_6D2ACC22.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/07_5F00_thumb_5F00_29069C71.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/08_5F00_778740A9.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/08_5F00_thumb_5F00_209EB31B.jpg" width="331" height="200" /&gt;&lt;/a&gt;&amp;#160;&amp;#160; &lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/09_5F00_6E2AB9CE.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/09_5F00_thumb_5F00_27214B37.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://msdnbrunei.net/aggbug.aspx?PostID=40" width="1" height="1"&gt;</description></item><item><title>Whats New from MIX 09</title><link>http://msdnbrunei.net/blogs/risman/archive/2009/03/21/whats-new-from-mix-09.aspx</link><pubDate>Sat, 21 Mar 2009 04:43:48 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:39</guid><dc:creator>risman</dc:creator><slash:comments>0</slash:comments><description>&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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/01_5F00_63B65994.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://msdnbrunei.net/aggbug.aspx?PostID=39" width="1" height="1"&gt;</description></item><item><title>Learn SQL Server 2008 from Videos</title><link>http://msdnbrunei.net/blogs/risman/archive/2009/03/17/learn-sql-server-2008-from-videos.aspx</link><pubDate>Mon, 16 Mar 2009 16:51:08 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:38</guid><dc:creator>risman</dc:creator><slash:comments>0</slash:comments><description>&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://msdnbrunei.net/aggbug.aspx?PostID=38" width="1" height="1"&gt;</description></item><item><title>Using SSIS with MySQL</title><link>http://msdnbrunei.net/blogs/risman/archive/2009/03/16/using-ssis-with-mysql.aspx</link><pubDate>Mon, 16 Mar 2009 13:31:56 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:37</guid><dc:creator>risman</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;This is a step by step guide for you to connect to MySQL and do SSIS data flow task to transfer data from/to SQL Server, or other RDBMS. You need SQL Server 2005/2008 with SSIS (SQL Server Integration Services) and BI development studio installed. Then install &lt;a href="http://dev.mysql.com/downloads/connector/net/6.0.html"&gt;.NET Connector for MySQL&lt;/a&gt;, which is a standardize ADO.NET data provider for .NET.     &lt;br /&gt;    &lt;br /&gt;1. Open Visual Studio and Create BI project – Integration Services Project     &lt;br /&gt;2. Add new data source for your MySQL (this can be data flow sources or destination)     &lt;br /&gt;3. Choose MySQL Data Provider (this is not ODBC) and configure/test your connection.     &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/01_5F00_6CBBC97F.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/01_5F00_thumb_5F00_7975D403.jpg" width="353" height="380" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/05_5F00_4B785B7E.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/05_5F00_thumb_5F00_61DAD438.jpg" width="359" height="380" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;4. Configure your &lt;strong&gt;connection&lt;/strong&gt;, &lt;strong&gt;pooling&lt;/strong&gt;, &lt;strong&gt;security&lt;/strong&gt; and some &lt;strong&gt;advanced&lt;/strong&gt; properties.     &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/03_5F00_09DD5D8B.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/03_5F00_thumb_5F00_0A9577DB.jpg" width="355" height="460" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/04_5F00_7005135C.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/04_5F00_thumb_5F00_3DCD9D45.jpg" width="355" height="461" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;5. Once your data source ready, now you can start to doing the SSIS package, for example Data flow task to transfer data from/to MySQL Database. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/06_5F00_5A0AB998.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/06_5F00_thumb_5F00_21101431.jpg" width="728" height="470" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Hope this helps – RAM &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnbrunei.net/aggbug.aspx?PostID=37" width="1" height="1"&gt;</description></item><item><title>PHP Interop via RESTful .NET Services</title><link>http://msdnbrunei.net/blogs/risman/archive/2009/03/15/php-interop-via-restful-net-services.aspx</link><pubDate>Sun, 15 Mar 2009 04:13:05 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:36</guid><dc:creator>risman</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;RESTful Web Services gains many attentions from web developers. As REST is an architectural style, it is not tied to one particular platform and technology. In .NET platform, we can play with “RESTful Services” with &lt;a href="http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24644"&gt;WCF 3.5 REST Starter Kit&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/data/bb931106.aspx"&gt;ADO.NET Data Services&lt;/a&gt;, and &lt;a href="http://www.azure.com/"&gt;Azure Service Platform&lt;/a&gt;. I found the following article and resource very useful for us to understand RESTful Services in .NET platform. You can also consult to some recommended books that I listed below. &lt;/p&gt;  &lt;p&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://www.microsoftpdc.com"&gt;Microsoft PDC 2008 Website&lt;/a&gt; – A lot of Azure and SQL Data Services info     &lt;br /&gt;    &lt;br /&gt;With the advance of RESTful .NET, many other Web 2.0 framework like PHP will be benefited. For example, we can easily publish data services using ADO.NET Data Services, Entity Data Model and LINQ, hosted as HTTP services in IIS then consumed by PHP applications. With REST support in popular &lt;a href="http://framework.zend.com/"&gt;Zend framework&lt;/a&gt; and &lt;a href="http://wso2.org/"&gt;WSF/PHP&lt;/a&gt;, this “via REST interop” can help huge numbers of PHP developers to take advantages from RESTful innovations in .NET.     &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="212"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/Test_5F00_485373D5.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="Test" border="0" alt="Test" src="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/Test_5F00_thumb_5F00_70825A8F.jpg" width="264" height="392" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="10"&gt;         &lt;table border="0" cellspacing="0" cellpadding="2" width="129"&gt;&lt;tbody&gt;             &lt;tr&gt;               &lt;td valign="top" width="127"&gt;&lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/1847195520/ref=ord_cart_shr?%5Fencoding=UTF8&amp;amp;m=ATVPDKIKX0DER&amp;amp;v=glance"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="REST01" border="0" alt="REST01" src="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/REST01_5F00_76895B90.jpg" width="105" height="105" /&gt;&lt;/a&gt;&lt;/td&gt;             &lt;/tr&gt;              &lt;tr&gt;               &lt;td valign="top" width="127"&gt;&lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/0596519206/ref=ord_cart_shr?%5Fencoding=UTF8&amp;amp;m=ATVPDKIKX0DER&amp;amp;v=glance"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="REST02" border="0" alt="REST02" src="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/REST02_5F00_7F493E0F.jpg" width="116" height="116" /&gt;&lt;/a&gt; &lt;/td&gt;             &lt;/tr&gt;              &lt;tr&gt;               &lt;td valign="top" width="127"&gt;&lt;a href="http://www.amazon.com/RESTful-Web-Services-Leonard-Richardson/dp/0596529260/ref=pd_ecc_rvi_cart_2"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="REST03" border="0" alt="REST03" src="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/REST03_5F00_19E5B45C.jpg" width="114" height="114" /&gt;&lt;/a&gt; &lt;/td&gt;             &lt;/tr&gt;           &lt;/tbody&gt;&lt;/table&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Stay tuned, I will dive deeper into this PHP interop journey!&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://msdnbrunei.net/aggbug.aspx?PostID=36" width="1" height="1"&gt;</description></item><item><title>Web Slice and Feed Authentication</title><link>http://msdnbrunei.net/blogs/risman/archive/2009/03/15/web-slice-and-feed-authentication.aspx</link><pubDate>Sun, 15 Mar 2009 01:40:21 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:35</guid><dc:creator>risman</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="http://www.ieaddons.com/en/webslices/"&gt;IE8 Gallery&lt;/a&gt; provides many Web Slice add-on that you may want to try. In this post, I will share about authentication feature in IE8 WebSlice. In many scenarios, for instance Banking application, authentication is required. The IE8 Windows RSS Platform now has support for HTTPS BASIC and HTTP/S DIGEST authentication.&amp;#160; This option is the only supported option for setting credentials for a feed or Web Slice via our new RSS authentication APIs, right click on the WebSlice and go to its property form. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/11_5F00_13302B9D.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/11_5F00_thumb_5F00_1588EBF4.jpg" width="645" height="398" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Other authentication schemes Kerberos and NTLM for example should typically ‘just work’ as the OS will already handle these schemes and users will already be authenticated to these servers (e.g. by joining a computer to a domain over NTLM) and will only access those WebSlices or feeds when within that realm.&amp;#160; &lt;/p&gt;  &lt;p&gt;Depends to our application requirements, each of the option has benefits and tradeoffs. We can also do the following authentication mechanisms in WebSlice:    &lt;br /&gt;    &lt;br /&gt;1. Persistent login cookies (“remember me”)&amp;#160; &lt;br /&gt;2. Web Slice specific auth cookie     &lt;br /&gt;3. Unique subscription URLs     &lt;br /&gt;    &lt;br /&gt;I’m still looking my free time to look deeper on those concepts for PHP applications, as each application has different authentication mechanism. For now, you can try to read Amy Placzkiewicz blog post in IE8 team blog:     &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://blogs.msdn.com/ie/archive/2009/03/11/web-slice-and-feed-authentication-developer-guidelines.aspx"&gt;WebSlice and Feed Authentication – Developer Guidelines&lt;/a&gt;     &lt;br /&gt;    &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://msdnbrunei.net/aggbug.aspx?PostID=35" width="1" height="1"&gt;</description></item><item><title>Pattern and Practice Resources</title><link>http://msdnbrunei.net/blogs/risman/archive/2009/03/15/pattern-and-practice-resources.aspx</link><pubDate>Sun, 15 Mar 2009 00:00:41 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:34</guid><dc:creator>risman</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Many of you maybe already know the &lt;a href="http://msdn.microsoft.com/practices"&gt;Pattern and Practice&lt;/a&gt; materials from Microsoft. It covers many architectural guides and best practices, including some reference architectural packs and reusable libraries. The famous reusable libraries are that I have used before are:&lt;/p&gt;  &lt;p&gt;- &lt;a href="http://entlib.codeplex.com/"&gt;Enterprise Library&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://smartclient.codeplex.com/"&gt;Smart Client Guidance&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://compositewpf.codeplex.com/"&gt;Composite WPF and Silverlight&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://unity.codeplex.com/"&gt;Unity Application Block&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://websf.codeplex.com/"&gt;Web Client Software Factory&lt;/a&gt;     &lt;br /&gt;- &lt;a href="http://www.codeplex.com/spg"&gt;Sharepoint Guidance&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;and many more….!     &lt;br /&gt;    &lt;br /&gt;On top of it, my friend &lt;a href="http://blogs.msdn.com/MikeWalker"&gt;Mike Walker&lt;/a&gt; has put a collections of links, which is great resource for you if you are doing architecture. Enjoy!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Guides&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.codeplex.com/AppArchGuide"&gt;Application Architecture Guide 2.0&lt;/a&gt; (CodePlex) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa302415.aspx"&gt;Building Secure ASP.NET Applications&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998530.aspx"&gt;Improving .NET Application Performance and Scalability&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms994921.aspx"&gt;Improving Web Application Security: Threats and Countermeasures&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949034.aspx"&gt;Improving Web Services Security: Scenarios and Implementation Guidance for WCF&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb924375.aspx"&gt;Performance Testing Guidance for Web Applications&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998382.aspx"&gt;Security Engineering Explained&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668991.aspx"&gt;Team Development with Visual Studio Team Foundation Server&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Books / Guides&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998530.aspx"&gt;Improving .NET Application Performance and Scalability&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb924375.aspx"&gt;Performance Testing Guidance for Web Applications&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;Methods&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb924361.aspx"&gt;Agile Performance Testing&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb924372.aspx"&gt;Load Testing&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998579.aspx"&gt;Measuring Performance&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb924367.aspx"&gt;Modeling Application Usage&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998574.aspx"&gt;Performance Code Inspection&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998544.aspx"&gt;Performance Design Inspection&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998534.aspx"&gt;Performance Engineering&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998537.aspx"&gt;Performance Modeling&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb924371.aspx"&gt;Performance Test Reporting&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb924356.aspx"&gt;Performance Testing&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb924374.aspx"&gt;Stress Testing&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998583.aspx"&gt;Tuning Performance&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;Guidelines&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998537.aspx"&gt;Performance Design Guidelines&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998547.aspx"&gt;.NET Framework Performance Guidelines&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998551.aspx"&gt;.NET Interop Performance Guidelines&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998569.aspx"&gt;ADO.NET Performance Guidelines&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998549.aspx"&gt;ASP.NET Performance Guidelines&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998565.aspx"&gt;Remoting Performance Guidelines&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998541.aspx"&gt;Web Application Performance Design Guidelines&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998562.aspx"&gt;Web Services Performance Guidelines&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998559.aspx"&gt;XML Performance Guidelines&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;Checklists&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998592.aspx"&gt;Performance Design Checklist&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms979052.aspx"&gt;.NET Framework Performance Checklist&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998589.aspx"&gt;ADO.NET Performance Checklist&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998596.aspx"&gt;ASP.NET Performance Checklist&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms978923.aspx"&gt;Enterprise Services Performance Checklist&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms978943.aspx"&gt;Interop Performance Checklist&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms979159.aspx"&gt;Remoting Performance Checklist&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms979169.aspx"&gt;SQL Server Performance Checklist&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms979173.aspx"&gt;Web Services Performance Checklist&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms979180.aspx"&gt;XML Performance Checklist Checklist&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;Practices at a Glance&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998512.aspx"&gt;Performance Practices at a Glance&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;How Tos&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms979195.aspx"&gt;How To - Optimize SQL Indexes&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms979196.aspx"&gt;How To - Optimize SQL Queries&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms979197.aspx"&gt;How To - Page Records in .NET Applications&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms979198.aspx"&gt;How To Performance Capacity Planning for .NET Applications&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms979200.aspx"&gt;How To - Submit and Poll for Long-Running Tasks&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms979204.aspx"&gt;How To - Use Custom Performance Counters from ASP.NET&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Guides&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa302415.aspx"&gt;Building Secure ASP.NET Applications&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms994921.aspx"&gt;Improving Web Application Security: Threats and Countermeasures&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998404.aspx"&gt;Security Engineering&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;Methods&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998364.aspx"&gt;Security Code Inspection&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998367.aspx"&gt;Security Deployment Inspection&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa302421.aspx"&gt;Security Design Inspection&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms978516.aspx"&gt;Threat Modeling&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;Threats and Countermeasures&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa302418.aspx"&gt;Threats and Countermeasures for Web Applications&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949001.aspx"&gt;Threats and Countermeasures for Web Services&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;Cheat Sheets&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms978518.aspx"&gt;Web Application Security Frame&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949070.aspx"&gt;Web Services Security Frame&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949070.aspx"&gt;Web Services Security Patterns&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;Guidelines&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa480477.aspx"&gt;.NET Framework Security Guidelines&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998264.aspx"&gt;ADO.NET Security Guidelines&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998258.aspx"&gt;ASP.NET Security Guidelines&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949068.aspx"&gt;WCF Security Guidelines&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa302420.aspx"&gt;Web Application Security Design Guidelines&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949020.aspx"&gt;Web Services Security Design Guidelines&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;Checklists&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa480474.aspx"&gt;.NET Framework Security Checklist&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa480473.aspx"&gt;ADO.NET Security Checklist&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998249.aspx"&gt;ASP.NET Security Checklist&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949052.aspx"&gt;WCF Security Checklist&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;Practices at a Glance&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa480479.aspx"&gt;.NET Framework Security Practices at a Glance&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998372.aspx"&gt;ASP.NET Security Practices at a Glance&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949062.aspx"&gt;WCF Security Practices at a Glance&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;Questions and Answers&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb981440.aspx"&gt;ASP.NET Security Questions and Answers&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949043.aspx"&gt;WCF Security Questions and Answers&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;Explained&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa480476.aspx"&gt;ASP.NET Forms Authentication Explained&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa480475.aspx"&gt;ASP.NET Windows Authentication Explained&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;Application Scenarios&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949093.aspx"&gt;WCF Intranet Scenario - Web to Remote WCF Using Transport Security (Original Caller, TCP)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949089.aspx"&gt;WCF Intranet scenario - Web to Remote WCF Using Transport Security (Trusted Subsystem, HTTP)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949041.aspx"&gt;WCF Intranet Scenario - Web to Remote WCF Using Transport Security (Trusted Subsystem, TCP)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949032.aspx"&gt;WCF Intranet Scenario - Windows Forms to Remote WCF Using Transport Security (Original Caller, TCP)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949024.aspx"&gt;WCF Internet Scenario - WCF and ASMX Client to Remote WCF Using Transport Security (Original Caller, HTTP)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949088.aspx"&gt;WCF Internet Scenario - Web to Remote WCF Using Transport Security (Trusted Subsystem, TCP)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949050.aspx"&gt;WCF Internet Scenario - Windows Forms Client to Remote WCF Using Message Security (Original Caller, HTTP)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa302385.aspx"&gt;ASP.NET Intranet Scenarios&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa302386.aspx"&gt;ASP.NET Extranet Scenarios&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa302387.aspx"&gt;ASP.NET Internet Scenarios&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;ASP.NET Security How Tos&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998300.aspx"&gt;How To - Connect to SQL Server Using SQL Authentication in ASP.NET&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998292.aspx"&gt;How To - Connect to SQL Server Using Windows Authentication in ASP.NET&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998297.aspx"&gt;How To - Create a Service Account for ASP.NET Applications&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa480478.aspx"&gt;How To - Improve Security When Hosting Multiple Applications&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998325.aspx"&gt;How To - Instrument ASP.NET Applications for Security&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998274.aspx"&gt;How To - Prevent Cross-Site Scripting in ASP.NET&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998310.aspx"&gt;How To - Protect Forms Authentication in ASP.NET&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb355989.aspx"&gt;How To - Protect from Injection Attacks in ASP.NET&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998271.aspx"&gt;How To - Project from SQL Injection Attacks in ASP.NET&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998331.aspx"&gt;How To - Use ADAM for Roles in ASP.NET&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998336.aspx"&gt;How To - Use Authorization Manager (AzMan) in ASP.NET&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998360.aspx"&gt;How To - Use Forms Authentication with Active Directory in ASP.NET&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998345.aspx"&gt;How To - Use Forms Authentication with Active Directory in Multiple Domains&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998317.aspx"&gt;How To - Use Forms Authentication with SQL Server in ASP.NET&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998306.aspx"&gt;How To - Use Health Monitoring in ASP.NET&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998351.aspx"&gt;How To - Use Impersonation and Delegation in ASP.NET&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998355.aspx"&gt;How To - Use Protocol Transition and Constrained Delegation in ASP.NET&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998267.aspx"&gt;How To - Use Regular Expressions to Constrain Input in ASP.NET&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998320.aspx"&gt;How To - Use the Network Services Account to Access Resources in ASP.NET&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998314.aspx"&gt;How To - Use Role Manager in ASP.NET&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998358.aspx"&gt;How To - Use Windows Authentication in ASP.NET 2.0&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;WCF Security How Tos&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949006.aspx"&gt;How to: Audit and Log Security Events in WCF Calling from Windows Forms&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949011.aspx"&gt;How to: Create and Install Temporary Certificates in WCF for Message Security During Development&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949067.aspx"&gt;How to: Create and Install Temporary Certificates in WCF for Transport Security During        &lt;br /&gt;Development&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949057.aspx"&gt;How to: Create and Install Temporary Client Certificates in WCF During Development&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949080.aspx"&gt;How to: Host WCF in a Windows Service Using TCP&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949013.aspx"&gt;How to: Impersonate the Original Caller in WCF Calling from a Web Application&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949055.aspx"&gt;How to: Impersonate the Original Caller in WCF Calling from Windows Forms&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949075.aspx"&gt;How to: Perform Input Validation in WCF&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949095.aspx"&gt;How to: Perform Message Validation with Schema Validation in WCF&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949012.aspx"&gt;How to: Use basicHttpBinding with Windows Authentication and TransportCredentialOnly in WCF from Windows Forms&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc948997.aspx"&gt;How to: Use Certificate Authentication and Message Security in WCF Calling from Windows Forms&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949005.aspx"&gt;How to: Use Certificate Authentication and Transport Security in WCF Calling from Windows Forms&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949014.aspx"&gt;How to: Use Delegation for Flowing the Original Caller Credentials to the Back End in WCF Calling from Windows Forms&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949048.aspx"&gt;How to: Use Health Monitoring to Instrument a WCF Service for Security&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949092.aspx"&gt;How to: Use netTcpBinding with Windows Authentication and Message Security in WCF from Windows Forms&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949091.aspx"&gt;How to: Use netTcpBinding with Windows Authentication and Transport Security in WCF from Windows Forms&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949022.aspx"&gt;How to: Use Protocol Transition for Impersonating and Delegating the Original Caller in WCF&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949027.aspx"&gt;How to: Use the SQL Server Role Provider with Username Authentication in WCF Calling from Windows Forms&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949054.aspx"&gt;How to: Use the SQL Server Role Provider with Windows Authentication in WCF Calling from Windows Forms&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949082.aspx"&gt;How to: Use Username Authentication with the SQL Server Membership Provider and Message Security in WCF Calling from Windows Forms&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949025.aspx"&gt;How to: Use Username Authentication with Transport Security in WCF Calling from Windows Forms&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949010.aspx"&gt;How to: Use wsHttpBinding with Username Authentication and TransportWithMessageCredential in WCF Calling from Windows Forms&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949030.aspx"&gt;How to: Use wsHttpBinding with Windows Authentication and Message Security in WCF Calling from Windows Forms&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc949017.aspx"&gt;How to: Use wsHttpBinding with Windows Authentication and Transport Security in WCF Calling from Windows Forms&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Visual Studio Team System&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Guides&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668991.aspx"&gt;Team Development with Visual Studio Team Foundation Server&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;Guidelines&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668941.aspx"&gt;Team Build Guidelines&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668944.aspx"&gt;Source Control Guidelines&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668943.aspx"&gt;Reporting Guidelines&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668942.aspx"&gt;Project Management Guidelines&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;Practices at a Glance&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668945.aspx"&gt;Team Build Practices at a Glance&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668948.aspx"&gt;Source Control Practices at a Glance&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668947.aspx"&gt;Reporting Practices at a Glance&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668946.aspx"&gt;Project Management Practices at a Glance&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;Questions and Answers&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668950.aspx"&gt;Source Control Practices at a Glance&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;How Tos&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668968.aspx"&gt;How To: Add a New Developer to Your Project in Visual Studio 2005 Team Foundation Server&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668977.aspx"&gt;How To: Automatically Run Code Analysis with Team Build in Visual Studio Team Foundation Server&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668978.aspx"&gt;How To: Create a Custom Report for Visual Studio Team Foundation Server&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668979.aspx"&gt;How To: Create a “Risk over Time” Report for Visual Studio Team Foundation Server&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668980.aspx"&gt;How To: Create Custom Check-in Policies in Visual Studio Team Foundation Server&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668981.aspx"&gt;How To: Create Your Source Tree in Visual Studio Team Foundation Server&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668982.aspx"&gt;How To: Customize a Process Template in Visual Studio Team Foundation Server&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668983.aspx"&gt;How To: Customize a Report in Visual Studio Team Foundation Server&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668988.aspx"&gt;How To: Manage Projects in Visual Studio Team Foundation Server&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668969.aspx"&gt;How To: Migrate Source Code to Team Foundation Server from Visual Source Safe&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668976.aspx"&gt;How To: Perform a Baseless Merge in Visual Studio Team Foundation Server&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668971.aspx"&gt;How To: Set Up a Continuous Integration Build in Visual Studio Team Foundation Server&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668975.aspx"&gt;How To: Set Up a Scheduled Build in Visual Studio Team Foundation Server&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668986.aspx"&gt;How To: Structure ASP.NET Applications in Visual Studio Team Foundation Server&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668994.aspx"&gt;How To: Structure Windows Applications in Visual Studio Team Foundation Server&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668992.aspx"&gt;How To: Structure Your Source Control Folders in Team Foundation Server&lt;/a&gt; &lt;/li&gt; &lt;/ul&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://msdnbrunei.net/aggbug.aspx?PostID=34" width="1" height="1"&gt;</description></item><item><title>Adding WebSlice in WordPress Site</title><link>http://msdnbrunei.net/blogs/risman/archive/2009/03/14/adding-webslice-in-wordpress-site.aspx</link><pubDate>Sat, 14 Mar 2009 11:39:00 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:33</guid><dc:creator>risman</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;IE8 WebSlices are portions of a webpage that you can subscribe to and view updates directly from the Favorites bar. You can view the changes without having to go back to the site. When a website supports WebSlice, the purple WebSlice icon appears in the Commandbar of your IE 8. WebSlices also appear when you are hovering over a WebSlice region within a webpage. Here is an example from &lt;a href="http://www.kaskus.us/"&gt;Kaskus&lt;/a&gt;, the largest online community in Indonesia. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/01_5F00_426F3595.jpg"&gt;&lt;img height="136" width="740" src="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/01_5F00_thumb_5F00_4AC2E51F.jpg" alt="01" border="0" title="01" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;When you click the Kaskus WebSlice icon, you can add it to your favorite bar, then you can see the subscribed contents from favorite bar. Another great example of WebSlice and other IE 8 features also available in eBay, &lt;a href="http://ie8.ebay.com/" title="http://ie8.ebay.com/"&gt;http://ie8.ebay.com/&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/02_5F00_1D319F8F.jpg"&gt;&lt;img height="155" width="371" src="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/02_5F00_thumb_5F00_188B6F08.jpg" alt="02" border="0" title="02" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;&amp;nbsp; &lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/04_5F00_28D6C0F4.jpg"&gt;&lt;img height="154" width="369" src="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/04_5F00_thumb_5F00_4E2068C8.jpg" alt="04" border="0" title="04" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Actually it is easy to enable WebSlice in a site, we just need to add HTML annotations to the webpage, for example:&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;div class=&amp;quot;&lt;span style="color:#ff0000;"&gt;hslice&lt;/span&gt;&amp;quot; id=&amp;quot;kaskusitem555&amp;quot;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;p class=&amp;quot;&lt;span style="color:#ff0000;"&gt;entry-title&lt;/span&gt;&amp;quot;&amp;gt;Kaskus Hottest Thread&amp;lt;/p&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class=&amp;quot;&lt;span style="color:#ff0000;"&gt;entry-content&lt;/span&gt;&amp;quot;&amp;gt;Kaskus Thread&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;hellip; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt; &lt;br /&gt;&amp;lt;/div&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A WebSlice uses a combination of the &lt;strong&gt;&lt;a href="http://microformats.org/wiki/hatom"&gt;hAtom Microformat&lt;/a&gt;&lt;/strong&gt; and the &lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc304073(VS.85).aspx"&gt;WebSlice format&lt;/a&gt;&lt;/strong&gt;. By adding those three annotations, IE recognizes that it is a WebSlice and treats it like a feed; handling the discovery, subscription, and processing of the WebSlice. If you read the &lt;a href="http://msdn.microsoft.com/en-us/library/cc304073(VS.85).aspx"&gt;WebSlice format specification&lt;/a&gt;, you can also add additional properties to a WebSlice, such as expiration, time-to-live value, bandwidth info, revision and an alternative source. &lt;/p&gt;
&lt;p&gt;In this post, I will show you how to add A WebSlice in common PHP applications : &lt;a href="http://www.wordpress.org/"&gt;Wordpress&lt;/a&gt;. You can also do the same experiment with other CMS like &lt;strong&gt;Joomla&lt;/strong&gt;, &lt;strong&gt;Mambo&lt;/strong&gt;, &lt;strong&gt;Drupal&lt;/strong&gt;, &lt;strong&gt;PHPNuke&lt;/strong&gt;, &lt;strong&gt;PHPBB&lt;/strong&gt; etc. I used IIS 7.0, PHP FastCGI and MySQL in Windows Server 2008 to run WordPress. You can follow links below if you want to have &amp;ldquo;step-by-step&amp;rdquo; to setup WordPress. &lt;br /&gt;&lt;br /&gt;- &lt;a href="http://learn.iis.net/page.aspx/375/setting-up-fastcgi-for-php/"&gt;Setting up FastCGI for PHP on IIS&lt;/a&gt; &lt;br /&gt;- Setting up &lt;a href="http://learn.iis.net/page.aspx/280/wordpress-on-iis/"&gt;WordPress in IIS&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Please put as comment if you have problem in doing the installations. Once WordPress installed and configured in your machine, you are ready to adding WebSlice. Practically, what we will do is pretty simple:&lt;/p&gt;
&lt;p&gt;- Modify the target page where we want to display the WebSlice icon, could be index.php or other landing pages.&amp;nbsp;&amp;nbsp; &lt;br /&gt;- Prepare a page to be displayed in the WebSlice. We can use additional css to manage the layout of the page. &lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#0000ff;"&gt;WebSlice in WordPress&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Create two files &lt;strong&gt;wp_webslice.css &lt;/strong&gt;for WebSlice layout and for&amp;nbsp; &lt;strong&gt;wp_webslice.php&lt;/strong&gt; data feed at the root directory of WordPress installation. Then add the following codes to &lt;strong&gt;index.php :&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#006080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;div&lt;/span&gt; id=&amp;quot;wpupdate&amp;quot; class=&amp;quot;hslice&amp;quot; &lt;span style="color:#0000ff;"&gt;style&lt;/span&gt;=&amp;quot;&lt;span style="color:#0000ff;"&gt;padding&lt;/span&gt;:&lt;span style="color:#006080;"&gt;8px 0px 0px;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;display&lt;/span&gt;:block&amp;quot;&lt;span style="color:#006080;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:#006080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;div&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;style&lt;/span&gt;=&amp;quot;&lt;span style="color:#0000ff;"&gt;display&lt;/span&gt;:&lt;span style="color:#006080;"&gt;none;&lt;/span&gt;&amp;quot;&lt;span style="color:#006080;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:#006080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;p&lt;/span&gt; class=&amp;quot;entry-&lt;span style="color:#0000ff;"&gt;title&lt;/span&gt;&amp;quot;&lt;span style="color:#006080;"&gt;&amp;gt;&lt;/span&gt;Risman Adnan WebSlice&lt;span style="color:#006080;"&gt;&amp;lt;&lt;/span&gt;/&lt;span style="color:#0000ff;"&gt;p&lt;/span&gt;&lt;span style="color:#006080;"&gt;&amp;gt;&lt;/span&gt;

        &lt;span style="color:#006080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;p&lt;/span&gt; class=&amp;quot;entry-&lt;span style="color:#0000ff;"&gt;content&lt;/span&gt;&amp;quot;&lt;span style="color:#006080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#006080;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color:#006080;"&gt;nbsp;&lt;/span&gt;&lt;span style="color:#006080;"&gt;&amp;lt;&lt;/span&gt;/&lt;span style="color:#0000ff;"&gt;p&lt;/span&gt;&lt;span style="color:#006080;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:#006080;"&gt;&amp;lt;&lt;/span&gt;a href=&amp;quot;wp_webslice&lt;span style="color:#cc6633;"&gt;.php&lt;/span&gt;&amp;quot; class=&amp;quot;feedurl&amp;quot; rel=&amp;quot;feedurl&amp;quot;&lt;span style="color:#006080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#006080;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color:#006080;"&gt;nbsp;&lt;/span&gt;&lt;span style="color:#006080;"&gt;&amp;lt;&lt;/span&gt;/a&lt;span style="color:#006080;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:#006080;"&gt;&amp;lt;&lt;/span&gt;/&lt;span style="color:#0000ff;"&gt;div&lt;/span&gt;&lt;span style="color:#006080;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:#006080;"&gt;&amp;lt;&lt;/span&gt;/&lt;span style="color:#0000ff;"&gt;div&lt;/span&gt;&lt;span style="color:#006080;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;In the &lt;strong&gt;wp_webslice.css&lt;/strong&gt;, write style to manage the layout of the WebSlice. &lt;/p&gt;
&lt;div&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;body&lt;/span&gt; {
    &lt;span style="color:#0000ff;"&gt;margin&lt;/span&gt;:0;
    &lt;span style="color:#0000ff;"&gt;padding&lt;/span&gt;:0;
    &lt;span style="color:#0000ff;"&gt;font-family&lt;/span&gt;: Georgia, Times, Times New Roman, sans&lt;span style="color:#006080;"&gt;-serif;&lt;/span&gt;
    &lt;span style="color:#0000ff;"&gt;font-size&lt;/span&gt;: &lt;span style="color:#006080;"&gt;0.9em;&lt;/span&gt;
    &lt;span style="color:#0000ff;"&gt;text-align&lt;/span&gt;:&lt;span style="color:#006080;"&gt;left;&lt;/span&gt;
    &lt;span style="color:#0000ff;"&gt;color&lt;/span&gt;:&lt;span style="color:#006080;"&gt;#29303B;&lt;/span&gt;
    &lt;span style="color:#0000ff;"&gt;background&lt;/span&gt;: &lt;span style="color:#006080;"&gt;#FEFFA3;&lt;/span&gt;
}

&lt;span style="color:#0000ff;"&gt;ul&lt;/span&gt; {
&lt;span style="color:#0000ff;"&gt;padding&lt;/span&gt;-&lt;span style="color:#0000ff;"&gt;left&lt;/span&gt;: &lt;span style="color:#006080;"&gt;9px;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;margin&lt;/span&gt;-&lt;span style="color:#0000ff;"&gt;left&lt;/span&gt;: 0;
}

&lt;span style="color:#0000ff;"&gt;li&lt;/span&gt; {
    &lt;span style="color:#0000ff;"&gt;padding&lt;/span&gt;-&lt;span style="color:#0000ff;"&gt;left&lt;/span&gt;: &lt;span style="color:#006080;"&gt;0px;&lt;/span&gt;
    &lt;span style="color:#0000ff;"&gt;margin&lt;/span&gt;-&lt;span style="color:#0000ff;"&gt;left&lt;/span&gt;: &lt;span style="color:#006080;"&gt;0px;&lt;/span&gt;
    &lt;span style="color:#0000ff;"&gt;margin&lt;/span&gt;-&lt;span style="color:#0000ff;"&gt;bottom&lt;/span&gt;: &lt;span style="color:#006080;"&gt;10px;&lt;/span&gt;
}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;And in the &lt;strong&gt;wp_webslice.php&lt;/strong&gt;, write PHP codes to query data from tablepost then display it in the WebSlice page. For example: &lt;/p&gt;
&lt;div&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&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;Don&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;#39;t remove this line. */
require(&amp;#39;&lt;/span&gt;./&lt;span style="color:#ff0000;"&gt;wp-blog-header&lt;/span&gt;.&lt;span style="color:#ff0000;"&gt;php&lt;/span&gt;&amp;#39;);
?&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;title&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Risman Adnan Webslice&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;link&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;rel&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;stylesheet&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;type&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;text/css&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;href&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;wp_webslice.css&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;media&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;screen&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;link&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;rel&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;shortcut icon&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;href&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;icon.ico&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;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;div&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;id&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;wpupdate&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;class&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;hslice&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;h2&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;class&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;entry-title&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Risman Adnan Blogs Update&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;h2&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;div&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;class&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;entry-content&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;ul&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;function&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;get_recent_posts&lt;/span&gt; ($&lt;span style="color:#ff0000;"&gt;num_posts&lt;/span&gt; = &lt;span style="color:#ff0000;"&gt;5&lt;/span&gt;)
    {
    &lt;span style="color:#ff0000;"&gt;global&lt;/span&gt; $&lt;span style="color:#ff0000;"&gt;wpdb&lt;/span&gt;, $&lt;span style="color:#ff0000;"&gt;tableposts&lt;/span&gt;, $&lt;span style="color:#ff0000;"&gt;post&lt;/span&gt;, $&lt;span style="color:#ff0000;"&gt;tablepost2cat&lt;/span&gt;;

    &lt;span style="color:#ff0000;"&gt;if&lt;/span&gt; (!&lt;span style="color:#ff0000;"&gt;isset&lt;/span&gt;($&lt;span style="color:#ff0000;"&gt;tablepost2cat&lt;/span&gt;)) $&lt;span style="color:#ff0000;"&gt;tablepost2cat&lt;/span&gt; = $&lt;span style="color:#ff0000;"&gt;wpdb-&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;post2cat;
     if (!isset($tableposts)) $tableposts = $wpdb-&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;posts;

    $orderby = &amp;quot;$tableposts.post_$orderby&amp;quot;;

    $now = current_time(&amp;#39;mysql&amp;#39;);
    $sql = &amp;quot;SELECT DISTINCT * FROM $tableposts &amp;quot;;
    $sql .= &amp;quot;WHERE $tableposts.post_date &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;= &amp;#39;$now&amp;#39; AND ( $tableposts.post_status = &amp;#39;publish&amp;#39;) &amp;quot;;
    $sql .= &amp;quot;GROUP BY $tableposts.ID ORDER BY $tableposts.post_date DESC&amp;quot;;
    $sql .= &amp;quot; LIMIT 0, $num_posts&amp;quot;;

    $posts = array();
    $posts = $wpdb-&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;get_results($sql);
    if (empty($posts)) return;

    echo &amp;#39;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;ul&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&amp;#39;;

    foreach ($posts as $post) {

     $title = the_title(&amp;#39;&amp;#39;, &amp;#39;&amp;#39;, false);
     echo &amp;#39;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&amp;#39;;
     echo &amp;#39;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;a&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;href&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;&amp;#39;.get_permalink().&amp;#39;&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;title&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;View Post &amp;#39;.htmlspecialchars(strip_tags($title)).&amp;#39;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&amp;#39;.$title.&amp;#39;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;a&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&amp;#39;;
     echo &amp;#39;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&amp;#39;;
    }

    echo &amp;#39;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;ul&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&amp;#39;;

   } //end function get_recent_posts()

   get_recent_posts();
   ?&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;ul&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;li&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;div&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;div&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;And you are done! If everything works well, you will see the WebSlice icon when you open index.php. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/08_5F00_21678922.jpg"&gt;&lt;img height="170" width="360" src="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/08_5F00_thumb_5F00_70A45BA9.jpg" alt="08" border="0" title="08" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/09_5F00_4D27B744.jpg"&gt;&lt;img height="167" width="400" src="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/09_5F00_thumb_5F00_3D284CB3.jpg" alt="09" border="0" title="09" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/10_5F00_0D3D8525.jpg"&gt;&lt;img height="318" width="770" src="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/10_5F00_thumb_5F00_489DBE58.jpg" alt="10" border="0" title="10" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;If you get the same result, then you are done your first WebSlice using WordPress. What about Joomla? Mambo? PHPNuke? PHPBB? I will show you later. &lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Hope this helps! &lt;br /&gt;&lt;br /&gt;Cheers &amp;ndash; RAM&amp;nbsp; &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnbrunei.net/aggbug.aspx?PostID=33" width="1" height="1"&gt;</description></item><item><title>Creating PHP Extension with VC++ 2008</title><link>http://msdnbrunei.net/blogs/risman/archive/2009/03/08/creating-php-extension-with-vc-2008.aspx</link><pubDate>Sun, 08 Mar 2009 12:28:13 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:32</guid><dc:creator>risman</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;If you like C++ and want to work to create your own PHP extension, I wrote the following articles around mid June 2008 to help you: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/risman/archive/2008/06/14/compiling-php-source-codes-in-vista-with-vc-2008.aspx"&gt;Compiling PHP Source Codes&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://geeks.netindonesia.net/blogs/risman/archive/2008/06/14/part-1-writing-php-extension-for-windows-live-id.aspx"&gt;Part 1 : Writing PHP Extension&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://geeks.netindonesia.net/blogs/risman/archive/2008/06/15/part-2-writing-php-extension.aspx"&gt;Part 2 : Writing PHP Extension&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I also wrote one article about building the &lt;a href="http://geeks.netindonesia.net/blogs/risman/archive/2008/07/31/php4live-php-soap-win32-build-environment.aspx"&gt;PHPSOAP extension here&lt;/a&gt;. You can use all of those articles as introduction to create your first PHP extension. &lt;/p&gt;  &lt;p&gt;A lot of cool things we can do if you know how to write PHP extension on Windows. Something like PHP Extension for Sharepoint, PHP Extension for .NET Services, SQL Services and Live Services in Azure Service Platform would be very interesting. You can use both VS 2008 or VC++ 2008 Express edition. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Hope this helps - RAM&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnbrunei.net/aggbug.aspx?PostID=32" width="1" height="1"&gt;</description></item><item><title>ADO.NET Data Service Part 2</title><link>http://msdnbrunei.net/blogs/risman/archive/2009/03/08/ado-net-data-service-part-2.aspx</link><pubDate>Sun, 08 Mar 2009 06:09:22 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:31</guid><dc:creator>risman</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;In this post, I will show you how to create ADO.NET Data Service from database using Entity Data Model. I will use WordPress database in MySQL 5.1. as example but you can follow with other database like SQL Server or Oracle. To install &lt;a href="http://learn.iis.net/page.aspx/280/wordpress-on-iis/"&gt;Wordpress with MySQL and IIS 7.0&lt;/a&gt;, you can follow this article. I will assume you already have WordPress installed in your machine. You will need &lt;a href="http://dev.mysql.com/downloads/connector/net/6.0.html"&gt;.NET Connector&lt;/a&gt; for MySQL, I use .NET connector version 6 that is well integrated to Visual Studio. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;1. Create Database Connection to WordPress DB in MySQL        &lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;    &lt;br /&gt;We will add connection to the following database in MySQL.     &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/03_5F00_11BE933A.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/03_5F00_thumb_5F00_29D1D7C8.jpg" width="530" height="310" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Open Visual Studio 2008, in server explorer, add new data connection. Once you installed the .NET Connector, you can see option to connect to MySQL data provider as following. Then you have to provide some logon information as following.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/08_5F00_23E70E62.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/08_5F00_thumb_5F00_3BFA52F0.jpg" width="400" height="478" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;2. Create a Entity Data Model &lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Create a ASP.NET Web Application in VS 2008 and add new Entity Data Model, let say WordPressDB.edmx. In the EDM Wizard, choose to generate from database and select your data connection that created in step 1. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/05_5F00_441E52BA.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/05_5F00_thumb_5F00_670E7890.jpg" width="530" height="320" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Make sure you got all of the WordPress tables, but you dont have to select all, you can select for example only &lt;strong&gt;wp_users&lt;/strong&gt; table. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/09_5F00_38389A21.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/09_5F00_thumb_5F00_6F22528D.jpg" width="530" height="479" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Visual Studio 2008 SP1 will create the data model base on your selected table then generate data source class for your ADO.NET Data Services. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/10_5F00_1C27198F.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/10_5F00_thumb_5F00_3DB31C93.jpg" width="530" height="298" /&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;3. Create ADO.NET Data Services &lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In this step you have to add new item – ADO.NET Data Services called &lt;strong&gt;WPUsers.svc&lt;/strong&gt; and modify its data source according to your generated entity class name:     &lt;br /&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;using &lt;/span&gt;System;
&lt;span style="color:blue;"&gt;using &lt;/span&gt;System.Collections.Generic;
&lt;span style="color:blue;"&gt;using &lt;/span&gt;System.Data.Services;
&lt;span style="color:blue;"&gt;using &lt;/span&gt;System.Linq;
&lt;span style="color:blue;"&gt;using &lt;/span&gt;System.ServiceModel.Web;
&lt;span style="color:blue;"&gt;using &lt;/span&gt;System.Web;

&lt;span style="color:blue;"&gt;namespace &lt;/span&gt;Astoria
{
    &lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;WPUsers &lt;/span&gt;: &lt;span style="color:#2b91af;"&gt;DataService&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;WPEntities&lt;/span&gt;&amp;gt;
    {
        &lt;span style="color:green;"&gt;// This method is called only once to initialize service-wide policies.
        &lt;/span&gt;&lt;span style="color:blue;"&gt;public static void &lt;/span&gt;InitializeService(&lt;span style="color:#2b91af;"&gt;IDataServiceConfiguration &lt;/span&gt;config)
        {
            config.SetEntitySetAccessRule(&lt;span style="color:#a31515;"&gt;&amp;quot;*&amp;quot;&lt;/span&gt;, &lt;span style="color:#2b91af;"&gt;EntitySetRights&lt;/span&gt;.AllRead);
        }
    }
}&lt;/pre&gt;

&lt;p&gt;Now your ADO.NET Data Services is ready. You can test it using the REST query for example: &lt;a title="http://localhost:12519/WPUsers.svc/" href="http://localhost:12519/WPUsers.svc/"&gt;http://localhost:12519/WPUsers.svc/&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/11_5F00_2C3295EE.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/11_5F00_thumb_5F00_28A14E86.jpg" width="530" height="230" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Done, now you are ready to learn how to consume the REST based ADO.NET Data Services. I will show you 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://msdnbrunei.net/aggbug.aspx?PostID=31" width="1" height="1"&gt;</description></item><item><title>ADO.NET Data Service Part 1</title><link>http://msdnbrunei.net/blogs/risman/archive/2009/03/08/ado-net-data-service-part-1.aspx</link><pubDate>Sun, 08 Mar 2009 04:13:05 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:30</guid><dc:creator>risman</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;ADO.NET Data Service (previously codename Astoria) is already released in .NET 3.5 SP1. What is that actually? Its a way to convey your data in the style of &lt;a href="http://en.wikipedia.org/wiki/REST"&gt;REST&lt;/a&gt; resources addressable by URIs. Data is structured as entities and relationships according to the specifications of the Entity Data Model (EDM). It uses uniform patterns of data representation and transport, such as JSON and AtomPub. Consumer applications interact with ADO.NET Data Services by using HTTP verbs such as GET, PUT, POST, or DELETE. In many application scenarios, both online and offline data services is required, especially in our movement to cloud in low bandwidth condition like in Asia. &lt;/p&gt;  &lt;p&gt;&amp;quot;ADO.NET Data Service / Astoria Offline capability&amp;quot; is designed to provide solution for offline requirement that use data from data services. It is ready for &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=479f2216-e6f2-486f-80c9-2cfade5082c1&amp;amp;displaylang=en"&gt;initial release (Alpha only for preview)&lt;/a&gt;, where we can learn how to create offline-capable applications that have a local replica of their data, how to synchronize that replica with an online data service when a network connection becomes available, and how replicas can be used with the ADO.NET Entity Framework. Nice!&lt;/p&gt;  &lt;p&gt;In this post, you will learn how to create ADO.NET Data Services. A lot of &lt;a href="http://msdn.microsoft.com/en-us/data/bb931106.aspx"&gt;learning resource&lt;/a&gt; over here at MSDN, also in &lt;a href="http://channel9.msdn.com/pdc2008/TL08/"&gt;Channel9&lt;/a&gt; and &lt;a href="http://www.microsoftpdc.com"&gt;Microsoft PDC&lt;/a&gt; sites, but I hope this post can help you to accelerate your first experiment. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;1. Prepare your database, let say AdventureWorks        &lt;br /&gt;2. Create ASP.NET Web Application – then add new item ADO.NET Data Services - FirstSvc         &lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;    &lt;br /&gt;&lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/01_5F00_49B865FC.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/01_5F00_thumb_5F00_524898BB.jpg" width="538" height="328" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;3. Review the generated codes for ADO.NET Data Services and add in memory data source class&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;using &lt;/span&gt;System;
&lt;span style="color:blue;"&gt;using &lt;/span&gt;System.Collections.Generic;
&lt;span style="color:blue;"&gt;using &lt;/span&gt;System.Data.Services;
&lt;span style="color:blue;"&gt;using &lt;/span&gt;System.Linq;
&lt;span style="color:blue;"&gt;using &lt;/span&gt;System.ServiceModel.Web;
&lt;span style="color:blue;"&gt;using &lt;/span&gt;System.Web;

&lt;span style="color:blue;"&gt;namespace &lt;/span&gt;Astoria
{
    &lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;FirstSvc &lt;/span&gt;: DataService&amp;lt; &lt;span style="color:green;"&gt;/* TODO: put your data source class name here */ &lt;/span&gt;&amp;gt;
    {
        &lt;span style="color:green;"&gt;// This method is called only once to initialize service-wide policies.
        &lt;/span&gt;&lt;span style="color:blue;"&gt;public static void &lt;/span&gt;InitializeService(IDataServiceConfiguration config)
        {
            &lt;span style="color:green;"&gt;// TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.
            // Examples:
            // config.SetEntitySetAccessRule(&amp;quot;MyEntityset&amp;quot;, EntitySetRights.AllRead);
            // config.SetServiceOperationAccessRule(&amp;quot;MyServiceOperation&amp;quot;, ServiceOperationRights.All);
        &lt;/span&gt;}
    }
}&lt;/pre&gt;

&lt;p&gt;If you see the codes, intuitively, what we have to do is to prepare our data source class and set the entity set and service operation access rules. Very simple! Now, lets create a simple in memory data source, later we can use ADO.NET Entity Data Model&amp;#160; (EDM). What we will create is a simple class contains two list of product and category, and IQueryable properties for both product and category. &lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Product 
&lt;/span&gt;{
    &lt;span style="color:blue;"&gt;public int &lt;/span&gt;ID {&lt;span style="color:blue;"&gt;get&lt;/span&gt;;&lt;span style="color:blue;"&gt;set&lt;/span&gt;;}
    &lt;span style="color:blue;"&gt;public string &lt;/span&gt;Name {&lt;span style="color:blue;"&gt;get&lt;/span&gt;;&lt;span style="color:blue;"&gt;set&lt;/span&gt;;}
    &lt;span style="color:blue;"&gt;public string &lt;/span&gt;Color {&lt;span style="color:blue;"&gt;get&lt;/span&gt;;&lt;span style="color:blue;"&gt;set&lt;/span&gt;;}
    &lt;span style="color:blue;"&gt;public &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Category &lt;/span&gt;ProductCategory {&lt;span style="color:blue;"&gt;get&lt;/span&gt;;&lt;span style="color:blue;"&gt;set&lt;/span&gt;;}
}

&lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Category 
&lt;/span&gt;{
   &lt;span style="color:blue;"&gt;public int &lt;/span&gt;ID {&lt;span style="color:blue;"&gt;get&lt;/span&gt;;&lt;span style="color:blue;"&gt;set&lt;/span&gt;;}
   &lt;span style="color:blue;"&gt;public string &lt;/span&gt;Name {&lt;span style="color:blue;"&gt;get&lt;/span&gt;;&lt;span style="color:blue;"&gt;set&lt;/span&gt;;}
}

&lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;AstoriaData 
&lt;/span&gt;{
    &lt;span style="color:blue;"&gt;static &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Category&lt;/span&gt;&amp;gt; categories;
    &lt;span style="color:blue;"&gt;static &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Product&lt;/span&gt;&amp;gt; products;

    &lt;span style="color:blue;"&gt;static &lt;/span&gt;AstoriaData()
    {
        categories = &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Category&lt;/span&gt;&amp;gt;(){
            &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Category &lt;/span&gt;{ID=1, Name = &lt;span style="color:#a31515;"&gt;&amp;quot;Bikes&amp;quot;&lt;/span&gt;},
            &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Category &lt;/span&gt;{ID=2, Name = &lt;span style="color:#a31515;"&gt;&amp;quot;Bikes&amp;quot;&lt;/span&gt;}
        };

        products = &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Product&lt;/span&gt;&amp;gt;(){
            &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Product &lt;/span&gt;{ID=1, Name = &lt;span style="color:#a31515;"&gt;&amp;quot;Red Bikers&amp;quot;&lt;/span&gt;, Color=&lt;span style="color:#a31515;"&gt;&amp;quot;Red&amp;quot;&lt;/span&gt;, ProductCategory=categories[0]},
            &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Product &lt;/span&gt;{ID=2, Name = &lt;span style="color:#a31515;"&gt;&amp;quot;Blue Bikers&amp;quot;&lt;/span&gt;, Color=&lt;span style="color:#a31515;"&gt;&amp;quot;Blue&amp;quot;&lt;/span&gt;, ProductCategory=categories[0]},
            &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Product &lt;/span&gt;{ID=3, Name = &lt;span style="color:#a31515;"&gt;&amp;quot;Green Bikers&amp;quot;&lt;/span&gt;, Color=&lt;span style="color:#a31515;"&gt;&amp;quot;Green&amp;quot;&lt;/span&gt;, ProductCategory=categories[0]}
        };
    }

    &lt;span style="color:blue;"&gt;public &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;IQueryable&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Category&lt;/span&gt;&amp;gt; Categories
    {
        &lt;span style="color:blue;"&gt;get &lt;/span&gt;{&lt;span style="color:blue;"&gt;return &lt;/span&gt;categories.AsQueryable();}
    }

    &lt;span style="color:blue;"&gt;public &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;IQueryable&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Product&lt;/span&gt;&amp;gt; Products
    {
        &lt;span style="color:blue;"&gt;get &lt;/span&gt;{&lt;span style="color:blue;"&gt;return &lt;/span&gt;products.AsQueryable();}
    }

}&lt;/pre&gt;
&lt;strong&gt;&lt;font color="#0000ff"&gt;5. Add Data Source Class &lt;/font&gt;&lt;/strong&gt;

&lt;p&gt;Modify your FirstSvc class to add the AstoriaData class as data source and set its access, * means give access to all entities. Your codes should be like this: 
  &lt;br /&gt;&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;FirstSvc &lt;/span&gt;: &lt;span style="color:#2b91af;"&gt;DataService&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;AstoriaData&lt;/span&gt;&amp;gt;
{
    &lt;span style="color:blue;"&gt;public static void &lt;/span&gt;InitializeService(&lt;span style="color:#2b91af;"&gt;IDataServiceConfiguration &lt;/span&gt;config)
    {
        config.SetEntitySetAccessRule(&lt;span style="color:#a31515;"&gt;&amp;quot;*&amp;quot;&lt;/span&gt;, &lt;span style="color:#2b91af;"&gt;EntitySetRights&lt;/span&gt;.AllRead);
    }
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;
  &lt;br /&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;5. Test Your ADO.NET Data Services in the browser&lt;/font&gt;&lt;/strong&gt; 

  &lt;br /&gt;

  &lt;br /&gt;Below is your service entry point contains two entity set or collections in ATOM form, &lt;/p&gt;

&lt;p&gt;
  &lt;br /&gt;&lt;a href="http://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/02_5F00_72537FAB.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://msdnbrunei.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/risman/02_5F00_thumb_5F00_5BC0958A.jpg" width="528" height="251" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Try the following REST queries : &lt;/p&gt;

&lt;p&gt;&lt;a title="http://localhost:12519/FirstSvc.svc/Products" href="http://localhost:12519/FirstSvc.svc/Products"&gt;http://localhost:12519/FirstSvc.svc/Products&lt;/a&gt; 

  &lt;br /&gt;&lt;a href="http://localhost:12519/FirstSvc.svc/Categories"&gt;http://localhost:12519/FirstSvc.svc/Categories&lt;/a&gt; 

  &lt;br /&gt;&lt;a href="http://localhost:12519/FirstSvc.svc/Products(1)/Name"&gt;http://localhost:12519/FirstSvc.svc/Products(1)/Name&lt;/a&gt; 

  &lt;br /&gt;&lt;a href="http://localhost:12519/FirstSvc.svc/Products(1)/Color"&gt;http://localhost:12519/FirstSvc.svc/Products(1)/Color&lt;/a&gt; 

  &lt;br /&gt;&lt;a title="http://localhost:12519/FirstSvc.svc/Products(1)/Name/$value" href="http://localhost:12519/FirstSvc.svc/Products(1)/Name/$value"&gt;http://localhost:12519/FirstSvc.svc/Products(1)/Name/$value&lt;/a&gt; 

  &lt;br /&gt;&lt;a title="http://localhost:12519/FirstSvc.svc/Products(1)/Name/$value" href="http://localhost:12519/FirstSvc.svc/Products(1)/Color/$value"&gt;http://localhost:12519/FirstSvc.svc/Products(1)/Color/$value&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
  &lt;br /&gt;You are done with the in memory data source now. What else? Of course you can use your database storage like SQL Server or SQL Express. If you use Entity Data Model, you can also access other database for example MySQL. We will discuss that in the next ADO.NET Services post. 

  &lt;br /&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://msdnbrunei.net/aggbug.aspx?PostID=30" width="1" height="1"&gt;</description></item><item><title>New Updates on Azure</title><link>http://msdnbrunei.net/blogs/risman/archive/2009/02/14/new-updates-on-azure.aspx</link><pubDate>Sat, 14 Feb 2009 05:54:55 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:29</guid><dc:creator>risman</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;We just released an updated version of the Azure Services Training Kit. The first Azure Services Training Kit was released during the week of PDC October 2008 and it contained all of the PDC hands-on labs. The Azure Services Training Kit February update now includes the following content covering Windows Azure, .NET Services, SQL Services, and Live Services:    &lt;br /&gt;    &lt;br /&gt;- 13 hands-on labs – Including 3 new hands-on labs for the Live Framework &amp;amp; Services     &lt;br /&gt;- 19 new demo scripts – Detailed walkthroughs of key features so that someone can easily give a demo of a service     &lt;br /&gt;- 10 new scripted presentations – The presentations can be used for 3 day training workshops     &lt;br /&gt;    &lt;br /&gt;All of this content is available as an installable package on the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=413E88F8-5966-4A83-B309-53B7B77EDF78&amp;amp;displaylang=en"&gt;Microsoft Download Center&lt;/a&gt;. What else? In &lt;a href="http://msdn.microsoft.com/en-us/azure/dd439432.aspx"&gt;this page&lt;/a&gt; you will find webcasts and how-to videos covering the technologies included in the Azure Services Platform: Windows Azure, .NET Services, SQL Data Services, and Live Services. Its FREE!     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Azure will be introduced in &lt;a href="http://msdnphilippines.net/forums/t/43.aspx"&gt;Web Ramp Up&lt;/a&gt; – event in Philippines, Feb 26. Stay tuned!. &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://msdnbrunei.net/aggbug.aspx?PostID=29" width="1" height="1"&gt;</description></item></channel></rss>
