<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.netindonesia.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/"><channel><title>Risman Adnan</title><link>http://geeks.netindonesia.net/blogs/risman/default.aspx</link><description>MASM::C::C++::C#::Web Adventurer</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>Geneva Framework – Quick Intro</title><link>http://geeks.netindonesia.net/blogs/risman/archive/2009/04/18/geneva-framework-quick-intro.aspx</link><pubDate>Sat, 18 Apr 2009 12:52:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:98525</guid><dc:creator>Risman Adnan Mattotorang</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/risman/rsscomments.aspx?PostID=98525</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/risman/archive/2009/04/18/geneva-framework-quick-intro.aspx#comments</comments><description>&lt;p&gt;This new stuff will make me busy for the next 7 weeks as we will have the 1st POC for Geneva. 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, 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://geeks.netindonesia.net/blogs/risman/01_12C5AB74.jpg"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" title="01" border="0" alt="01" src="http://geeks.netindonesia.net/blogs/risman/01_thumb_1F4332C3.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;Cheers – RAM&amp;nbsp; &lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/risman/archive/2009/04/18/geneva-framework-quick-intro.aspx&amp;amp;subject=Geneva Framework – Quick Intro" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/18/geneva-framework-quick-intro.aspx&amp;amp;t=Geneva+Framework+%e2%80%93+Quick+Intro" target="_blank" title="Submit Geneva Framework – Quick Intro to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/18/geneva-framework-quick-intro.aspx&amp;amp;title=Geneva+Framework+%e2%80%93+Quick+Intro" target="_blank" title="Submit Geneva Framework – Quick Intro to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/18/geneva-framework-quick-intro.aspx&amp;amp;phase=2" target="_blank" title="Submit Geneva Framework – Quick Intro to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/18/geneva-framework-quick-intro.aspx&amp;amp;title=Geneva+Framework+%e2%80%93+Quick+Intro" target="_blank" title="Add Geneva Framework – Quick Intro to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=98525" width="1" height="1"&gt;</description></item><item><title>Weather Info for Indonesia</title><link>http://geeks.netindonesia.net/blogs/risman/archive/2009/04/18/weather-info-for-indonesia.aspx</link><pubDate>Sat, 18 Apr 2009 06:22:46 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:98385</guid><dc:creator>Risman Adnan Mattotorang</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/risman/rsscomments.aspx?PostID=98385</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/risman/archive/2009/04/18/weather-info-for-indonesia.aspx#comments</comments><description>&lt;p&gt;Simplest Scenario. Put list of cities in Indonesia in string collection and display it in dropdown list.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;private string[] Cities = new string[]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Banda Aceh , ID&amp;quot;,      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Medan , ID&amp;quot;,      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Pakanbaru , ID&amp;quot;,      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Batam , ID&amp;quot;,      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Padang , ID&amp;quot;,      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Jambi , ID&amp;quot;,      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Palembang , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Pangkal Pinang , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Bengkulu , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Bandar Lampung , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Pontianak , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Samarinda , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Palangkaraya , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Banjarmasin , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Menado , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Gorontalo , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Palu , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Kendari , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Makassar , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Majene , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Ternate , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Ambon , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Jayapura , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Sorong , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Biak , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Manokwari , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Merauke , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Kupang , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Sumbawa Besar , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Mataram , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Denpasar , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Jakarta , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Serang , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Bandung , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Semarang , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Yogyakarta , ID&amp;quot;,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Surabaya , ID&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; };&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Then you can use the &lt;a href="http://awapi.codeplex.com"&gt;Animaonline&lt;/a&gt; DLL (Windows Mobile version is available) to query Google Maps API. Very easy, just add reference to the downloaded animaonline DLL in your project then put the following codes snippet for Show Data event handler method:    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;Animaonline.GeoServices.GeoCode.ApiKey =     &lt;br /&gt;@&amp;quot;ABQIAAAAYLumHTv11x4C0SeD1dju_hR1L4k4lZLEfduCoVr7aBMzMPP6bRT1dqi20tlAWBkMGPUkXEc1qTd8bQ&amp;quot;;      &lt;br /&gt;Animaonline.WeatherAPI.WeatherData wD = new WeatherData(LanguageCode.en_US, cityNameSelected, true, true); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;     &lt;br /&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Once you get your wD object created, you can use its properties to display weather condition including its 3 days forecast.      &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;this.lblCityVal.Text = wD.city;     &lt;br /&gt;this.lblDay1Val.Text = wD.day_of_weekDAY2 + &amp;quot; &amp;quot; + wD.conditionDAY2;      &lt;br /&gt;this.lblDay2Val.Text = wD.day_of_weekDAY3 + &amp;quot; &amp;quot; + wD.conditionDAY3;      &lt;br /&gt;this.lblHumidityVal.Text = wD.humidity;      &lt;br /&gt;this.lblTempVal.Text = wD.temp_c.ToString();      &lt;br /&gt;this.lblTimeVal.Text = wD.current_date_time.ToString();      &lt;br /&gt;this.lblTodayVal.Text = wD.conditionTODAY;      &lt;br /&gt;this.lblTomorrowVal.Text = wD.conditionTOMORROW;      &lt;br /&gt;this.lblWindVal.Text = wD.wind_condition; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;You can get Google Maps API key from &lt;a href="http://code.google.com/apis/maps/signup.html"&gt;this link&lt;/a&gt; and the result will be like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/risman/01_1927884F.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="01" border="0" alt="01" src="http://geeks.netindonesia.net/blogs/risman/01_thumb_4C06F2E9.jpg" width="494" height="204" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;If you have nice icons, WeatherData (wD) object also can help you to locate the image icons. Weather condition is common for all Weather services, for example cloudy, partly_cloudy, etc &lt;a href="http://developer.yahoo.com/weather/#codes"&gt;condition from Yahoo Weather API&lt;/a&gt;. Also, if you dont want to use Yahoo Weather API, you can get many free weather icons in Internet or make your own Indonesian version.     &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://geeks.netindonesia.net/blogs/risman/free_weather_icons_17C2A3D6.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="free_weather_icons" border="0" alt="free_weather_icons" src="http://geeks.netindonesia.net/blogs/risman/free_weather_icons_thumb_442B8822.png" width="497" height="314" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;What else? Hmmm the map. Look on the code below:&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;font color="#0000ff"&gt;Animaonline.GeoServices.GeoCode.ApiKey =     &lt;br /&gt;@&amp;quot;ABQIAAAAYLumHTv11x4C0SeD1dju_hR1L4k4lZLEfduCoVr7aBMzMPP6bRT1dqi20tlAWBkMGPUkXEc1qTd8bQ&amp;quot;;      &lt;br /&gt;      &lt;br /&gt;Animaonline.WeatherAPI.WeatherData wD = new WeatherData(LanguageCode.en_US, cityNameSelected, true, true);      &lt;br /&gt;      &lt;br /&gt;string weatherString = string.Format(&amp;quot;City:{0} Condition:{1} Temperature:{2}°F {3}°C&amp;quot;, wD.city, wD.condition, wD.temp_f, wD.temp_c);      &lt;br /&gt;      &lt;br /&gt;Animaonline.Maps.GoogleMapGenerator.Map myMap = new Animaonline.Maps.GoogleMapGenerator.Map(wD.latitude_e6, wD.longitude_e6, weatherString, 640, 480, 11);       &lt;br /&gt;&lt;/font&gt;    &lt;br /&gt;    &lt;br /&gt;Once you have your &lt;strong&gt;myMap&lt;/strong&gt; object, you can save an HTML file for example (Makassar.html) using this following code:    &lt;br /&gt;    &lt;br /&gt;&lt;font color="#0000ff"&gt;myMap.SaveMap(“Makassar.html”);     &lt;br /&gt;&lt;/font&gt;    &lt;br /&gt;    &lt;br /&gt;The generated HTML will give you the Google Map HTML Script viewer:    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://geeks.netindonesia.net/blogs/risman/02_7452113E.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="02" border="0" alt="02" src="http://geeks.netindonesia.net/blogs/risman/02_thumb_632D97C1.jpg" width="516" height="400" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;If you want to combine your your viewer with WebBrowser control, let say, your control name is myWebBrowser, then you can use the other method to bind the generated HTML to your WebBrowser control”&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;font color="#0000ff"&gt;FileStream source = new FileStream(&amp;quot;Makassar.html&amp;quot;, FileMode.Open, FileAccess.Read);     &lt;br /&gt;myWebBrowser.DocumentStream = source;      &lt;br /&gt;myWebBrowser.Refresh(); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;If you prefer NOT to generate HTML, but directly bind the mapHTML stream to your WebBrowser control, you can do handler codes like below:&lt;/p&gt;  &lt;br /&gt;  &lt;br /&gt;&lt;font color="#0000ff"&gt;Animaonline.GeoServices.GeoCode.ApiKey =   &lt;br /&gt;@&amp;quot;ABQIAAAAYLumHTv11x4C0SeD1dju_hR1L4k4lZLEfduCoVr7aBMzMPP6bRT1dqi20tlAWBkMGPUkXEc1qTd8bQ&amp;quot;;    &lt;br /&gt;    &lt;br /&gt;Animaonline.WeatherAPI.WeatherData wD = new WeatherData(LanguageCode.en_US, cityNameSelected, true, true);    &lt;br /&gt;    &lt;br /&gt;string weatherString = string.Format(&amp;quot;City:{0} Condition:{1} Temperature:{2}°F {3}°C&amp;quot;, wD.city, wD.condition, wD.temp_f, wD.temp_c);    &lt;br /&gt;    &lt;br /&gt;Animaonline.Maps.GoogleMapGenerator.Map myMap = new Animaonline.Maps.GoogleMapGenerator.Map(wD.latitude_e6, wD.longitude_e6, weatherString, 640, 480, 11);     &lt;br /&gt;&lt;/font&gt;  &lt;br /&gt;&lt;font color="#0000ff"&gt;myWebBrowser.DocumentText = myMap.MapHtml;   &lt;br /&gt;myWebBrowser.Refresh(); &lt;/font&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Other API that you may use is &lt;a href="http://developer.yahoo.com/weather/"&gt;Yahoo Weather API&lt;/a&gt;. I am thinking to make simple IE8 Web Slice ready scripts using Yahoo Feed. Let see if I have my insomnia time this weekend, so I can take REST with weather, kidding…. :) Remembering weather, we have a lot of urgency in Indonesia to start doing something about it. I believe many developers here can do something, for example:&lt;/p&gt;  &lt;p&gt;- Create Indonesian weather services as wrapper from other weather APIs   &lt;br /&gt;- Create cool reusable weather viewer using Silverlight, WPF, Compact Framework, Popfly, IE8 etc.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Have nice insomnia weekend and hope this helps! &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Cheers – RAM    &lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/risman/archive/2009/04/18/weather-info-for-indonesia.aspx&amp;amp;subject=Weather Info for Indonesia" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/18/weather-info-for-indonesia.aspx&amp;amp;t=Weather+Info+for+Indonesia" target="_blank" title="Submit Weather Info for Indonesia to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/18/weather-info-for-indonesia.aspx&amp;amp;title=Weather+Info+for+Indonesia" target="_blank" title="Submit Weather Info for Indonesia to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/18/weather-info-for-indonesia.aspx&amp;amp;phase=2" target="_blank" title="Submit Weather Info for Indonesia to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/18/weather-info-for-indonesia.aspx&amp;amp;title=Weather+Info+for+Indonesia" target="_blank" title="Add Weather Info for Indonesia to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=98385" width="1" height="1"&gt;</description></item><item><title>.NET RIA Services – Is Good Enough?</title><link>http://geeks.netindonesia.net/blogs/risman/archive/2009/04/04/net-ria-services-is-good-enough.aspx</link><pubDate>Sat, 04 Apr 2009 06:30:42 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:91764</guid><dc:creator>Risman Adnan Mattotorang</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/risman/rsscomments.aspx?PostID=91764</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/risman/archive/2009/04/04/net-ria-services-is-good-enough.aspx#comments</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. 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;br /&gt;&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;&lt;/p&gt;  &lt;p&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://geeks.netindonesia.net/blogs/risman/v01_13FDDF78.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="v01" border="0" alt="v01" src="http://geeks.netindonesia.net/blogs/risman/v01_thumb_1EE6D28E.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://geeks.netindonesia.net/blogs/risman/v02_55645805.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="v02" border="0" alt="v02" src="http://geeks.netindonesia.net/blogs/risman/v02_thumb_01FCEC12.jpg" width="350" height="146" /&gt;&lt;/a&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://geeks.netindonesia.net/blogs/risman/v03_645AEB45.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="v03" border="0" alt="v03" src="http://geeks.netindonesia.net/blogs/risman/v03_thumb_3CA4494E.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://geeks.netindonesia.net/blogs/risman/v05_37FE18C7.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="v05" border="0" alt="v05" src="http://geeks.netindonesia.net/blogs/risman/v05_thumb_61158B38.jpg" width="490" height="178" /&gt;&lt;/a&gt; &lt;a href="http://geeks.netindonesia.net/blogs/risman/v06_4C13E2F8.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="v06" border="0" alt="v06" src="http://geeks.netindonesia.net/blogs/risman/v06_thumb_39BAF669.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 local storage scenario on the &lt;font color="#0000ff"&gt;DomainContext&lt;/font&gt;.&lt;/font&gt; The design challenges of all the offline-enabled applications are:     &lt;br /&gt;&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? Gears provides a good vision on Server Data Layer and Local Data Layer, controlled by a Data Switch. 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://geeks.netindonesia.net/blogs/risman/v07_5A9E4343.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="v07" border="0" alt="v07" src="http://geeks.netindonesia.net/blogs/risman/v07_thumb_43EBCF2F.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. 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. We 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;.     &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://geeks.netindonesia.net/blogs/risman/v08_6F3FCA5C.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="v08" border="0" alt="v08" src="http://geeks.netindonesia.net/blogs/risman/v08_thumb_783C3010.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 class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/risman/archive/2009/04/04/net-ria-services-is-good-enough.aspx&amp;amp;subject=.NET RIA Services – Is Good Enough?" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/04/net-ria-services-is-good-enough.aspx&amp;amp;t=.NET+RIA+Services+%e2%80%93+Is+Good+Enough%3f" target="_blank" title="Submit .NET RIA Services – Is Good Enough? to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/04/net-ria-services-is-good-enough.aspx&amp;amp;title=.NET+RIA+Services+%e2%80%93+Is+Good+Enough%3f" target="_blank" title="Submit .NET RIA Services – Is Good Enough? to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/04/net-ria-services-is-good-enough.aspx&amp;amp;phase=2" target="_blank" title="Submit .NET RIA Services – Is Good Enough? to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/04/net-ria-services-is-good-enough.aspx&amp;amp;title=.NET+RIA+Services+%e2%80%93+Is+Good+Enough%3f" target="_blank" title="Add .NET RIA Services – Is Good Enough? to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=91764" width="1" height="1"&gt;</description></item><item><title>Project Velocity – Answer to Memcached?</title><link>http://geeks.netindonesia.net/blogs/risman/archive/2009/04/04/project-velocity-answer-to-memcached.aspx</link><pubDate>Fri, 03 Apr 2009 17:53:23 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:91644</guid><dc:creator>Risman Adnan Mattotorang</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/risman/rsscomments.aspx?PostID=91644</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/risman/archive/2009/04/04/project-velocity-answer-to-memcached.aspx#comments</comments><description>&lt;p&gt;Again, &lt;a href="http://geeks.netindonesia.net/blogs/zeddy"&gt;Zeddy&lt;/a&gt; is responsible for this, weekend insomnia! 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, Zeddy 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://geeks.netindonesia.net/blogs/risman/v01_4BC8DB16.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="v01" border="0" alt="v01" src="http://geeks.netindonesia.net/blogs/risman/v01_thumb_5D74FD7C.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://geeks.netindonesia.net/blogs/risman/v02_48FF1224.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="v02" border="0" alt="v02" src="http://geeks.netindonesia.net/blogs/risman/v02_thumb_540850D4.jpg" width="350" height="183" /&gt;&lt;/a&gt;&lt;strong&gt;&amp;#160;&lt;a href="http://geeks.netindonesia.net/blogs/risman/v03_5102C654.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="v03" border="0" alt="v03" src="http://geeks.netindonesia.net/blogs/risman/v03_thumb_6A2AF401.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://geeks.netindonesia.net/blogs/risman/x01_1DE2C486.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="x01" border="0" alt="x01" src="http://geeks.netindonesia.net/blogs/risman/x01_thumb_12E597A4.jpg" width="345" height="250" /&gt;&lt;/a&gt; &lt;a href="http://geeks.netindonesia.net/blogs/risman/x03_339934BE.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="x03" border="0" alt="x03" src="http://geeks.netindonesia.net/blogs/risman/x03_thumb_479205AD.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://geeks.netindonesia.net/blogs/risman/x04_1954B79B.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="x04" border="0" alt="x04" src="http://geeks.netindonesia.net/blogs/risman/x04_thumb_48A2DACD.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://geeks.netindonesia.net/blogs/risman/v05_495AF51D.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="v05" border="0" alt="v05" src="http://geeks.netindonesia.net/blogs/risman/v05_thumb_08F46A3C.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://geeks.netindonesia.net/blogs/risman/x05_312350F6.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="x05" border="0" alt="x05" src="http://geeks.netindonesia.net/blogs/risman/x05_thumb_107BC5AA.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://geeks.netindonesia.net/blogs/risman/v06_05BB1BFD.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="v06" border="0" alt="v06" src="http://geeks.netindonesia.net/blogs/risman/v06_thumb_217BDF8E.jpg" width="700" height="399" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Sources: &lt;/p&gt;  &lt;p&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;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;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Cheers – Risman Adnan &lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/risman/archive/2009/04/04/project-velocity-answer-to-memcached.aspx&amp;amp;subject=Project Velocity – Answer to Memcached?" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/04/project-velocity-answer-to-memcached.aspx&amp;amp;t=Project+Velocity+%e2%80%93+Answer+to+Memcached%3f" target="_blank" title="Submit Project Velocity – Answer to Memcached? to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/04/project-velocity-answer-to-memcached.aspx&amp;amp;title=Project+Velocity+%e2%80%93+Answer+to+Memcached%3f" target="_blank" title="Submit Project Velocity – Answer to Memcached? to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/04/project-velocity-answer-to-memcached.aspx&amp;amp;phase=2" target="_blank" title="Submit Project Velocity – Answer to Memcached? to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/04/project-velocity-answer-to-memcached.aspx&amp;amp;title=Project+Velocity+%e2%80%93+Answer+to+Memcached%3f" target="_blank" title="Add Project Velocity – Answer to Memcached? to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=91644" width="1" height="1"&gt;</description></item><item><title>Memcached for Windows</title><link>http://geeks.netindonesia.net/blogs/risman/archive/2009/04/03/memcached-for-windows.aspx</link><pubDate>Fri, 03 Apr 2009 11:18:26 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:91593</guid><dc:creator>Risman Adnan Mattotorang</dc:creator><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/risman/rsscomments.aspx?PostID=91593</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/risman/archive/2009/04/03/memcached-for-windows.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/zeddy"&gt;Zeddy&lt;/a&gt; brought this to my table for a review (thanks for him!). Simply said, &lt;strong&gt;&lt;font color="#0000ff"&gt;&lt;a href="http://en.wikipedia.org/wiki/Memcached"&gt;memcached&lt;/a&gt;&lt;/font&gt;&lt;/strong&gt; is a proven distributed memory object caching system, very generic in nature, run in many platforms. People use that to speed up data driven web applications by alleviating database workload, &lt;strong&gt;&lt;a href="http://developers.facebook.com/opensource.php"&gt;Facebook&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;Flickr&lt;/strong&gt;, &lt;strong&gt;Youtube&lt;/strong&gt;, and many big giant social network sites are using memcached to serve million users. That’s why I think it is important to share here how you can take advantage from this technique as well. You can read from memcached documentation about its low level nature. In this post, I will show you how to start quickly. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;Build memcached on Windows&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;First, you can download the latest &lt;strong&gt;libevent&lt;/strong&gt; and memcached source codes from &lt;a href="http://code.jellycan.com/memcached/"&gt;here&lt;/a&gt;. I am using version 1.2.6 and compile it using VC++ 2008. There are some *.txt documentations inside the source codes that explain clearly the&amp;#160; low level nature of its protocol and implementation. Launch your VC++ (you can use VC++ Express) then open the libevent project and then add memcached project in the same solution. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/risman/01_37651766.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://geeks.netindonesia.net/blogs/risman/01_thumb_7C2115CD.jpg" width="650" height="455" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Make sure you compile &lt;strong&gt;libevent&lt;/strong&gt; before and the location of compiled &lt;strong&gt;libevent.lib&lt;/strong&gt; file. Locate that file in the linker property of &lt;strong&gt;memcached&lt;/strong&gt; project. Looks like below:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/risman/02_5325DAF7.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://geeks.netindonesia.net/blogs/risman/02_thumb_105669F2.jpg" width="525" height="375" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Then you can build your memcached project. If you found compile time error on winsock extension (ws2tcpip.h), just delete the following codes then compile again. I hope you have no problem anymore. &lt;/p&gt;  &lt;pre class="code"&gt;&lt;font color="#ff0000"&gt;INT&lt;br /&gt;WSAAPI
inet_ntop(
    __in                                INT             Family,
    __in                                PVOID           pAddr,
    __out_ecount(StringBufSize)         PSTR            pStringBuf
    );&lt;/font&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;Once you are done with compilation, you can launch memcached.exe for installation:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;font color="#0000ff"&gt;memcached –d install&lt;/font&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Check on your Windows Service if the memcached service already installed. After that you can start memcached with some options (-help), for example if you want to allocate 2GB RAM and use port 11211: &lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;font color="#0000ff"&gt;memcached –d start –m 2024 –p 11211&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Make sure to check memcached server if it is running well or not (TCP and UDP). &lt;/p&gt;

&lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/risman/03_541A787C.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://geeks.netindonesia.net/blogs/risman/03_thumb_1F99A634.jpg" width="525" height="55" /&gt;&lt;/a&gt; &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;font color="#0000ff"&gt;&lt;strong&gt;Using Memcached Manager&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font color="#000000"&gt;using &lt;a href="http://allegiance.chi-town.com/MemCacheDManager.aspx"&gt;this tool&lt;/a&gt;, you can manage your memcached server easily on Windows. You can also use this tool to generate client configuration file for &lt;a href="http://enyimmemcached.codeplex.com/"&gt;enyim.com Memcached Client&lt;/a&gt; that you can use from client. &lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/risman/04_2B4EED66.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://geeks.netindonesia.net/blogs/risman/04_thumb_4FD0551D.jpg" width="399" height="260" /&gt;&lt;/a&gt;&lt;a href="http://geeks.netindonesia.net/blogs/risman/05_601BA709.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://geeks.netindonesia.net/blogs/risman/05_thumb_717BE214.jpg" width="311" height="260" /&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 use in ASP.NET&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I am using &lt;a href="http://www.codeplex.com/memcachedproviders"&gt;Memcached Provider 1.2&lt;/a&gt;&amp;#160; from &lt;a href="http://www.codeplex.com"&gt;CodePlex&lt;/a&gt;. To shorten this post, I will write another post to guide you how to use Memcached Provider 1.2 with ASP.NET 3.5. However, you can use the &lt;a href="http://memcachedproviders.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=10468"&gt;two walkthrough articles&lt;/a&gt; from CodePlex if you really want to try earlier. &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Have nice weekend!. &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Ciao – RAM&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/risman/archive/2009/04/03/memcached-for-windows.aspx&amp;amp;subject=Memcached for Windows" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/03/memcached-for-windows.aspx&amp;amp;t=Memcached+for+Windows" target="_blank" title="Submit Memcached for Windows to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/03/memcached-for-windows.aspx&amp;amp;title=Memcached+for+Windows" target="_blank" title="Submit Memcached for Windows to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/03/memcached-for-windows.aspx&amp;amp;phase=2" target="_blank" title="Submit Memcached for Windows to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/03/memcached-for-windows.aspx&amp;amp;title=Memcached+for+Windows" target="_blank" title="Add Memcached for Windows to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=91593" width="1" height="1"&gt;</description></item><item><title>Working with Qt Visual Studio 2008 Add-In</title><link>http://geeks.netindonesia.net/blogs/risman/archive/2009/04/02/working-with-qt-visual-studio-2008-add-in.aspx</link><pubDate>Thu, 02 Apr 2009 12:03:47 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:91259</guid><dc:creator>Risman Adnan Mattotorang</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/risman/rsscomments.aspx?PostID=91259</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/risman/archive/2009/04/02/working-with-qt-visual-studio-2008-add-in.aspx#comments</comments><description>&lt;p&gt;After &lt;a href="http://geeks.netindonesia.net/blogs/risman/archive/2009/04/02/qt-4-5-with-visual-studio-2008-vc-express.aspx"&gt;built and configured your Qt 4.5 SDK&lt;/a&gt;, you can download and install &lt;a href="http://www.qtsoftware.com/downloads/visual-studio-add-in-beta"&gt;qt-vs-addin-1.0.0-&lt;u&gt;rc1&lt;/u&gt;.exe&lt;/a&gt;. This is a productivity tool that already integrated to Visual Studio 2008. Before you start using it, make sure you configure the location of your Qt build.     &lt;br /&gt;    &lt;br /&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;- Go to Qt menu in VS 2008 then choose Qt Options        &lt;br /&gt;- Set the location of your Qt build – directory where you can find bin-include-lib sub folders         &lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;&lt;a href="http://geeks.netindonesia.net/blogs/risman/01_1CD796FC.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://geeks.netindonesia.net/blogs/risman/01_thumb_7D087199.jpg" width="377" height="200" /&gt;&lt;/a&gt;&amp;#160;&amp;#160; &lt;a href="http://geeks.netindonesia.net/blogs/risman/02_4A94784D.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://geeks.netindonesia.net/blogs/risman/02_thumb_18C9352B.jpg" width="325" height="272" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;- Test your Qt Designer and Linguist tools for form builder (*.ui) and Localization&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/risman/03_2F7F930F.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://geeks.netindonesia.net/blogs/risman/03_thumb_70AA4A0E.jpg" width="729" height="474" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Its a common form builder. Qt uses *.ui file to define form. You can add UI handler later in your C++ codes. Enjoy!    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;- Explore capabilities of Qt as your GUI toolkit from the samples&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;&lt;a href="http://geeks.netindonesia.net/blogs/risman/04_5D58ABFB.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://geeks.netindonesia.net/blogs/risman/04_thumb_0F6C8421.jpg" width="731" height="470" /&gt;&lt;/a&gt;&amp;#160;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;       &lt;br /&gt;&lt;/font&gt;&lt;/strong&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 class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/risman/archive/2009/04/02/working-with-qt-visual-studio-2008-add-in.aspx&amp;amp;subject=Working with Qt Visual Studio 2008 Add-In" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/02/working-with-qt-visual-studio-2008-add-in.aspx&amp;amp;t=Working+with+Qt+Visual+Studio+2008+Add-In" target="_blank" title="Submit Working with Qt Visual Studio 2008 Add-In to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/02/working-with-qt-visual-studio-2008-add-in.aspx&amp;amp;title=Working+with+Qt+Visual+Studio+2008+Add-In" target="_blank" title="Submit Working with Qt Visual Studio 2008 Add-In to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/02/working-with-qt-visual-studio-2008-add-in.aspx&amp;amp;phase=2" target="_blank" title="Submit Working with Qt Visual Studio 2008 Add-In to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/02/working-with-qt-visual-studio-2008-add-in.aspx&amp;amp;title=Working+with+Qt+Visual+Studio+2008+Add-In" target="_blank" title="Add Working with Qt Visual Studio 2008 Add-In to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=91259" width="1" height="1"&gt;</description></item><item><title>Qt 4.5 with Visual Studio 2008 (VC++ Express)</title><link>http://geeks.netindonesia.net/blogs/risman/archive/2009/04/02/qt-4-5-with-visual-studio-2008-vc-express.aspx</link><pubDate>Wed, 01 Apr 2009 18:31:10 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:90901</guid><dc:creator>Risman Adnan Mattotorang</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/risman/rsscomments.aspx?PostID=90901</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/risman/archive/2009/04/02/qt-4-5-with-visual-studio-2008-vc-express.aspx#comments</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://geeks.netindonesia.net/blogs/risman/01_505F8A8D.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://geeks.netindonesia.net/blogs/risman/01_thumb_0F40E55C.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://geeks.netindonesia.net/blogs/risman/03_21798651.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://geeks.netindonesia.net/blogs/risman/03_thumb_6227E48E.jpg" width="410" border="0" /&gt;&lt;/a&gt; &lt;a href="http://geeks.netindonesia.net/blogs/risman/09_0071D9DE.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://geeks.netindonesia.net/blogs/risman/09_thumb_626FB7EA.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://geeks.netindonesia.net/blogs/risman/12_08819FDC.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://geeks.netindonesia.net/blogs/risman/12_thumb_22D142F7.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://geeks.netindonesia.net/blogs/risman/10_2C85C2FB.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://geeks.netindonesia.net/blogs/risman/10_thumb_526B4D84.jpg" width="410" border="0" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://geeks.netindonesia.net/blogs/risman/11_308F4F26.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://geeks.netindonesia.net/blogs/risman/11_thumb_60397F80.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://geeks.netindonesia.net/blogs/risman/13_0F97C880.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://geeks.netindonesia.net/blogs/risman/13_thumb_75076401.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://geeks.netindonesia.net/blogs/risman/14_6E901C0C.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://geeks.netindonesia.net/blogs/risman/14_thumb_26023F09.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://geeks.netindonesia.net/blogs/risman/04_6A020F21.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://geeks.netindonesia.net/blogs/risman/04_thumb_2867112E.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 class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/risman/archive/2009/04/02/qt-4-5-with-visual-studio-2008-vc-express.aspx&amp;amp;subject=Qt 4.5 with Visual Studio 2008 (VC++ Express)" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/02/qt-4-5-with-visual-studio-2008-vc-express.aspx&amp;amp;t=Qt+4.5+with+Visual+Studio+2008+(VC%2b%2b+Express)" target="_blank" title="Submit Qt 4.5 with Visual Studio 2008 (VC++ Express) to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/02/qt-4-5-with-visual-studio-2008-vc-express.aspx&amp;amp;title=Qt+4.5+with+Visual+Studio+2008+(VC%2b%2b+Express)" target="_blank" title="Submit Qt 4.5 with Visual Studio 2008 (VC++ Express) to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/02/qt-4-5-with-visual-studio-2008-vc-express.aspx&amp;amp;phase=2" target="_blank" title="Submit Qt 4.5 with Visual Studio 2008 (VC++ Express) to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/risman/archive/2009/04/02/qt-4-5-with-visual-studio-2008-vc-express.aspx&amp;amp;title=Qt+4.5+with+Visual+Studio+2008+(VC%2b%2b+Express)" target="_blank" title="Add Qt 4.5 with Visual Studio 2008 (VC++ Express) to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=90901" width="1" height="1"&gt;</description></item><item><title>Insomnia? So.. take REST!</title><link>http://geeks.netindonesia.net/blogs/risman/archive/2009/03/29/insomnia-so-take-rest.aspx</link><pubDate>Sun, 29 Mar 2009 04:36:39 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:88431</guid><dc:creator>Risman Adnan Mattotorang</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/risman/rsscomments.aspx?PostID=88431</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/risman/archive/2009/03/29/insomnia-so-take-rest.aspx#comments</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 class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/risman/archive/2009/03/29/insomnia-so-take-rest.aspx&amp;amp;subject=Insomnia? So.. take REST!" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/29/insomnia-so-take-rest.aspx&amp;amp;t=Insomnia%3f+So..+take+REST!" target="_blank" title="Submit Insomnia? So.. take REST! to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/29/insomnia-so-take-rest.aspx&amp;amp;title=Insomnia%3f+So..+take+REST!" target="_blank" title="Submit Insomnia? So.. take REST! to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/29/insomnia-so-take-rest.aspx&amp;amp;phase=2" target="_blank" title="Submit Insomnia? So.. take REST! to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/29/insomnia-so-take-rest.aspx&amp;amp;title=Insomnia%3f+So..+take+REST!" target="_blank" title="Add Insomnia? So.. take REST! to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=88431" width="1" height="1"&gt;</description></item><item><title>FastCGI Application on Windows Azure</title><link>http://geeks.netindonesia.net/blogs/risman/archive/2009/03/29/fastcgi-application-on-windows-azure.aspx</link><pubDate>Sun, 29 Mar 2009 03:11:42 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:88403</guid><dc:creator>Risman Adnan Mattotorang</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/risman/rsscomments.aspx?PostID=88403</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/risman/archive/2009/03/29/fastcgi-application-on-windows-azure.aspx#comments</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://geeks.netindonesia.net/blogs/risman/01_2B5087AF.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="01" border="0" alt="01" src="http://geeks.netindonesia.net/blogs/risman/01_thumb_76BF8F99.jpg" width="276" height="181" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://geeks.netindonesia.net/blogs/risman/02_310ADFAE.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="02" border="0" alt="02" src="http://geeks.netindonesia.net/blogs/risman/02_thumb_656B665C.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://geeks.netindonesia.net/blogs/risman/03_325B8A5B.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="03" border="0" alt="03" src="http://geeks.netindonesia.net/blogs/risman/03_thumb_419EC69D.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;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://geeks.netindonesia.net/blogs/risman/05_34F0CDE7.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="05" border="0" alt="05" src="http://geeks.netindonesia.net/blogs/risman/05_thumb_7070910D.jpg" width="630" height="237" /&gt;&lt;/a&gt; 

  &lt;br /&gt;&lt;a href="http://geeks.netindonesia.net/blogs/risman/06_32A35DB7.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="06" border="0" alt="06" src="http://geeks.netindonesia.net/blogs/risman/06_thumb_4905D671.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://geeks.netindonesia.net/blogs/risman/07_49CE168E.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="07" border="0" alt="07" src="http://geeks.netindonesia.net/blogs/risman/07_thumb_06927294.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://geeks.netindonesia.net/blogs/risman/08_02484F35.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="08" border="0" alt="08" src="http://geeks.netindonesia.net/blogs/risman/08_thumb_3E80EE52.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://geeks.netindonesia.net/blogs/risman/09_09EFF63D.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="09" border="0" alt="09" src="http://geeks.netindonesia.net/blogs/risman/09_thumb_2E052AFF.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://geeks.netindonesia.net/blogs/risman/10_490DD440.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="10" border="0" alt="10" src="http://geeks.netindonesia.net/blogs/risman/10_thumb_426A2EE3.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://geeks.netindonesia.net/blogs/risman/11_7596427F.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="11" border="0" alt="11" src="http://geeks.netindonesia.net/blogs/risman/11_thumb_142CE0D1.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://geeks.netindonesia.net/blogs/risman/12_3A5E52B5.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="12" border="0" alt="12" src="http://geeks.netindonesia.net/blogs/risman/12_thumb_0A43DB67.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 class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/risman/archive/2009/03/29/fastcgi-application-on-windows-azure.aspx&amp;amp;subject=FastCGI Application on Windows Azure" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/29/fastcgi-application-on-windows-azure.aspx&amp;amp;t=FastCGI+Application+on+Windows+Azure" target="_blank" title="Submit FastCGI Application on Windows Azure to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/29/fastcgi-application-on-windows-azure.aspx&amp;amp;title=FastCGI+Application+on+Windows+Azure" target="_blank" title="Submit FastCGI Application on Windows Azure to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/29/fastcgi-application-on-windows-azure.aspx&amp;amp;phase=2" target="_blank" title="Submit FastCGI Application on Windows Azure to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/29/fastcgi-application-on-windows-azure.aspx&amp;amp;title=FastCGI+Application+on+Windows+Azure" target="_blank" title="Add FastCGI Application on Windows Azure to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=88403" width="1" height="1"&gt;</description></item><item><title>PHP FastCGI on Windows Azure</title><link>http://geeks.netindonesia.net/blogs/risman/archive/2009/03/29/php-fastcgi-on-windows-azure.aspx</link><pubDate>Sat, 28 Mar 2009 18:57:55 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:88206</guid><dc:creator>Risman Adnan Mattotorang</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/risman/rsscomments.aspx?PostID=88206</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/risman/archive/2009/03/29/php-fastcgi-on-windows-azure.aspx#comments</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://geeks.netindonesia.net/blogs/risman/01_6A0F66B6.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://geeks.netindonesia.net/blogs/risman/01_thumb_0176A2C3.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://geeks.netindonesia.net/blogs/risman/04_1B2A8D58.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://geeks.netindonesia.net/blogs/risman/04_thumb_16E069F9.jpg" width="296" height="425" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://geeks.netindonesia.net/blogs/risman/06_151F7858.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://geeks.netindonesia.net/blogs/risman/06_thumb_7BD3ACB8.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://geeks.netindonesia.net/blogs/risman/02_30FC7384.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://geeks.netindonesia.net/blogs/risman/02_thumb_7D908A5A.jpg" width="336" height="142" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://geeks.netindonesia.net/blogs/risman/03_593B800B.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://geeks.netindonesia.net/blogs/risman/03_thumb_57D69B92.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://geeks.netindonesia.net/blogs/risman/07_34EDB1E4.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://geeks.netindonesia.net/blogs/risman/07_thumb_4BE8BAFB.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 class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/risman/archive/2009/03/29/php-fastcgi-on-windows-azure.aspx&amp;amp;subject=PHP FastCGI on Windows Azure" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/29/php-fastcgi-on-windows-azure.aspx&amp;amp;t=PHP+FastCGI+on+Windows+Azure" target="_blank" title="Submit PHP FastCGI on Windows Azure to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/29/php-fastcgi-on-windows-azure.aspx&amp;amp;title=PHP+FastCGI+on+Windows+Azure" target="_blank" title="Submit PHP FastCGI on Windows Azure to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/29/php-fastcgi-on-windows-azure.aspx&amp;amp;phase=2" target="_blank" title="Submit PHP FastCGI on Windows Azure to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/29/php-fastcgi-on-windows-azure.aspx&amp;amp;title=PHP+FastCGI+on+Windows+Azure" target="_blank" title="Add PHP FastCGI on Windows Azure to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=88206" width="1" height="1"&gt;</description></item><item><title>Windows Filtering Platform</title><link>http://geeks.netindonesia.net/blogs/risman/archive/2009/03/27/windows-filtering-platform.aspx</link><pubDate>Fri, 27 Mar 2009 12:10:37 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:87617</guid><dc:creator>Risman Adnan Mattotorang</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/risman/rsscomments.aspx?PostID=87617</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/risman/archive/2009/03/27/windows-filtering-platform.aspx#comments</comments><description>&lt;p&gt;After read a blog post on &lt;a href="http://geeks.netindonesia.net/blogs/lontong/archive/2009/03/27/control-your-network-with-lsp-amp-wfp.aspx"&gt;LSP and WFP&lt;/a&gt; from Wiria, I can’t stop exploring it. Especially WFP, &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, that I mentioned to Wiria 8 months ago. Figure below showed the extensibility points of WFP that will be useful for third party ISV: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/risman/WFP_Arch_1833EF04.jpg"&gt;&lt;img title="WFP_Arch" style="border-right:0px;border-top:0px;display:inline;border-left:0px;border-bottom:0px;" height="396" alt="WFP_Arch" src="http://geeks.netindonesia.net/blogs/risman/WFP_Arch_thumb_674111CB.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 samples :)&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Hope this helps – RAM &lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/risman/archive/2009/03/27/windows-filtering-platform.aspx&amp;amp;subject=Windows Filtering Platform" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/27/windows-filtering-platform.aspx&amp;amp;t=Windows+Filtering+Platform" target="_blank" title="Submit Windows Filtering Platform to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/27/windows-filtering-platform.aspx&amp;amp;title=Windows+Filtering+Platform" target="_blank" title="Submit Windows Filtering Platform to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/27/windows-filtering-platform.aspx&amp;amp;phase=2" target="_blank" title="Submit Windows Filtering Platform to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/27/windows-filtering-platform.aspx&amp;amp;title=Windows+Filtering+Platform" target="_blank" title="Add Windows Filtering Platform to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=87617" width="1" height="1"&gt;</description></item><item><title>HIS 2009 Will Come</title><link>http://geeks.netindonesia.net/blogs/risman/archive/2009/03/27/his-2009-will-come.aspx</link><pubDate>Fri, 27 Mar 2009 02:13:39 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:87453</guid><dc:creator>Risman Adnan Mattotorang</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/risman/rsscomments.aspx?PostID=87453</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/risman/archive/2009/03/27/his-2009-will-come.aspx#comments</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 class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/risman/archive/2009/03/27/his-2009-will-come.aspx&amp;amp;subject=HIS 2009 Will Come" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/27/his-2009-will-come.aspx&amp;amp;t=HIS+2009+Will+Come" target="_blank" title="Submit HIS 2009 Will Come to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/27/his-2009-will-come.aspx&amp;amp;title=HIS+2009+Will+Come" target="_blank" title="Submit HIS 2009 Will Come to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/27/his-2009-will-come.aspx&amp;amp;phase=2" target="_blank" title="Submit HIS 2009 Will Come to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/27/his-2009-will-come.aspx&amp;amp;title=HIS+2009+Will+Come" target="_blank" title="Add HIS 2009 Will Come to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=87453" width="1" height="1"&gt;</description></item><item><title>BizTalk 2009 Beta with Visual Studio 2008</title><link>http://geeks.netindonesia.net/blogs/risman/archive/2009/03/22/biztalk-2009-beta-with-visual-studio-2008.aspx</link><pubDate>Sat, 21 Mar 2009 18:35:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:85825</guid><dc:creator>Risman Adnan Mattotorang</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/risman/rsscomments.aspx?PostID=85825</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/risman/archive/2009/03/22/biztalk-2009-beta-with-visual-studio-2008.aspx#comments</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;nbsp; 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 title="01" style="BORDER-TOP-WIDTH:0px;DISPLAY:inline;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="60" alt="01" src="http://geeks.netindonesia.net/blogs/risman/01_1832759D.jpg" width="277" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;br /&gt;BizTalk Server 2009 delivers improved scalability and reliability through support for SQL Server 2008, Windows Server 2008 Hyper-V virtualization and enhanced failover clustering. It also provides significant new enhancements to both individual and team productivity by enabling new interoperability with ALM solution: &lt;strong&gt;Visual Studio Team System&lt;/strong&gt; and &lt;strong&gt;Team Foundation Server 2008&lt;/strong&gt;. This allows development teams to utilize the integrated source control, bug tracking, team development support, Project Server integration, and support for automating builds via &lt;strong&gt;MSBuild&lt;/strong&gt; for a more seamless development and testing experience. &lt;br /&gt;&lt;br /&gt;In this post, I will guide you to install BizTalk 2009 Beta and start working with it using Visual Studio 2008. First, you have to download BizTalk 2009 with its components (UDDI services, adapter pack, accelerator) from &lt;a href="http://connect.microsoft.com/"&gt;connect website&lt;/a&gt;. Before you install BizTalk, I assumed you already have the following in your machine: &lt;br /&gt;&lt;br /&gt;- &lt;strong&gt;OS&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : Win Svr 2008, or Vista SP1 with all critical updates. &lt;br /&gt;- &lt;strong&gt;IIS&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;nbsp;&amp;nbsp;&amp;nbsp; : WSS 3.0 SP1 or MOSS 2007 SP1 &lt;br /&gt;&lt;br /&gt;I am using Windows Server 2008 x-64 with VS 2008, SQL 2008 and MOSS 2007 installed. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="#000080"&gt;Install BizTalk 2009&lt;/font&gt;&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;After installed IIS, VS 2008, SQL 2008 and Sharepoint (WSS/MOSS), you are ready to install BizTalk 2009. Remember that you also have to install &lt;strong&gt;BizTalk Redistribution Pack&lt;/strong&gt; (download links for pre-downloaded CAB are listed in BizTalk 2009 installation guide) if some pre-requisites are not installed in your machine.&amp;nbsp; &lt;br /&gt;&lt;a href="http://geeks.netindonesia.net/blogs/risman/03_0E8A0767.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="280" alt="03" src="http://geeks.netindonesia.net/blogs/risman/03_thumb_3547F7DA.jpg" width="376" border="0" /&gt;&lt;/a&gt;&amp;nbsp; &lt;a href="http://geeks.netindonesia.net/blogs/risman/05_0AAC16FD.jpg"&gt;&lt;img title="05" style="BORDER-TOP-WIDTH:0px;DISPLAY:inline;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="280" alt="05" src="http://geeks.netindonesia.net/blogs/risman/05_thumb_522DCA57.jpg" width="349" border="0" /&gt;&lt;/a&gt; &lt;br /&gt;In my case I installed all the BizTalk core components for single server installation including BAM, Dev Tools and SDK, Documentations, Server runtime and additional software. If everything ok with your installation, you can launch the BizTalk Server configuration wizard. But before we configure BizTalk, something need to be done. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/risman/06_21D6CFD4.jpg"&gt;&lt;img title="06" style="BORDER-TOP-WIDTH:0px;DISPLAY:inline;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="295" alt="06" src="http://geeks.netindonesia.net/blogs/risman/06_thumb_7D719FB7.jpg" width="362" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;a href="http://geeks.netindonesia.net/blogs/risman/07_02B0609C.jpg"&gt;&lt;img title="07" style="BORDER-TOP-WIDTH:0px;DISPLAY:inline;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="295" alt="07" src="http://geeks.netindonesia.net/blogs/risman/07_thumb_441AED28.jpg" width="354" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;When using the SQL Server shared memory protocol with BizTalk Server 2009 you might experience degradation in performance under certain stress conditions, if clients are accessing SQL Server from the same computer. To resolve the problem you need to disable the use of the shared memory network protocol in the SQL Server Client Network Utility. After you disable the shared memory protocol, you will need to restart SQL Server services.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="#000080"&gt;Configure BizTalk 2009&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In this task, I will show you how to configure BizTalk Server 2009 using the &lt;strong&gt;Basic configuration option&lt;/strong&gt;. Basic configuration is recommended for developers setting up a complete installation of BizTalk Server running on a single server. When configuring BizTalk Server 2009 using &lt;strong&gt;basic configuration&lt;/strong&gt;, consider the following: &lt;/p&gt;
&lt;p&gt;- Configuring a remote SQL Server is not supported. &lt;br /&gt;- Configuring against SQL Server 2008 default instances and named instances is supported. &lt;br /&gt;- Account you are logged on is &lt;strong&gt;local administrators&lt;/strong&gt; and have System Administrator rights on SQL Server. &lt;br /&gt;- The account you are logged on must be a member of the OLAP Administrators on the OLAP box if configuring. &lt;br /&gt;- You cannot configure BAM Analysis on a SQL Server named instance using basic configuration. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://geeks.netindonesia.net/blogs/risman/09_59B525C5.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="451" alt="09" src="http://geeks.netindonesia.net/blogs/risman/09_thumb_167981CB.jpg" width="478" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&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 title="10" style="BORDER-TOP-WIDTH:0px;DISPLAY:inline;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="260" alt="10" src="http://geeks.netindonesia.net/blogs/risman/10_thumb_41614A03.jpg" width="356" border="0" /&gt;&lt;a href="http://geeks.netindonesia.net/blogs/risman/11_36E075E3.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="260" alt="11" src="http://geeks.netindonesia.net/blogs/risman/11_thumb_3ADA9DE8.jpg" width="376" border="0" /&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://geeks.netindonesia.net/blogs/risman/12_058165B6.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="220" alt="12" src="http://geeks.netindonesia.net/blogs/risman/12_thumb_1F457618.jpg" width="361" border="0" /&gt;&lt;/a&gt;&amp;nbsp; &lt;a href="http://geeks.netindonesia.net/blogs/risman/13_6E62BEAC.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="220" alt="13" src="http://geeks.netindonesia.net/blogs/risman/13_thumb_1C3FEB98.jpg" width="363" border="0" /&gt;&lt;/a&gt; &lt;br /&gt;Visual designers in BizTalk is just tools to make your life easier when dealing with the BizTalk APIs.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://geeks.netindonesia.net/blogs/risman/14_2B271AB2.jpg"&gt;&lt;img title="14" style="BORDER-TOP-WIDTH:0px;DISPLAY:inline;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;WIDTH:271px;HEIGHT:504px;BORDER-RIGHT-WIDTH:0px;" height="531" alt="14" src="http://geeks.netindonesia.net/blogs/risman/14_thumb_00AAC3C8.jpg" width="350" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://geeks.netindonesia.net/blogs/risman/15_641DAC1A.jpg"&gt;&lt;img title="15" style="BORDER-TOP-WIDTH:0px;DISPLAY:inline;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;WIDTH:283px;HEIGHT:504px;BORDER-RIGHT-WIDTH:0px;" height="531" alt="15" src="http://geeks.netindonesia.net/blogs/risman/15_thumb_335A7EA2.jpg" width="346" border="0" /&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 class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/risman/archive/2009/03/22/biztalk-2009-beta-with-visual-studio-2008.aspx&amp;amp;subject=BizTalk 2009 Beta with Visual Studio 2008" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/22/biztalk-2009-beta-with-visual-studio-2008.aspx&amp;amp;t=BizTalk+2009+Beta+with+Visual+Studio+2008" target="_blank" title="Submit BizTalk 2009 Beta with Visual Studio 2008 to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/22/biztalk-2009-beta-with-visual-studio-2008.aspx&amp;amp;title=BizTalk+2009+Beta+with+Visual+Studio+2008" target="_blank" title="Submit BizTalk 2009 Beta with Visual Studio 2008 to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/22/biztalk-2009-beta-with-visual-studio-2008.aspx&amp;amp;phase=2" target="_blank" title="Submit BizTalk 2009 Beta with Visual Studio 2008 to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/22/biztalk-2009-beta-with-visual-studio-2008.aspx&amp;amp;title=BizTalk+2009+Beta+with+Visual+Studio+2008" target="_blank" title="Add BizTalk 2009 Beta with Visual Studio 2008 to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=85825" width="1" height="1"&gt;</description></item><item><title>EWS – Exchange Web Services</title><link>http://geeks.netindonesia.net/blogs/risman/archive/2009/03/21/ews-exchange-web-services.aspx</link><pubDate>Sat, 21 Mar 2009 10:21:25 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:85782</guid><dc:creator>Risman Adnan Mattotorang</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/risman/rsscomments.aspx?PostID=85782</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/risman/archive/2009/03/21/ews-exchange-web-services.aspx#comments</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://geeks.netindonesia.net/blogs/risman/02_6EF0E7C7.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="02" border="0" alt="02" src="http://geeks.netindonesia.net/blogs/risman/02_thumb_0EEBA8EB.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://geeks.netindonesia.net/blogs/risman/07_43B8628E.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="07" border="0" alt="07" src="http://geeks.netindonesia.net/blogs/risman/07_thumb_660CA5AF.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://geeks.netindonesia.net/blogs/risman/08_6648673D.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="08" border="0" alt="08" src="http://geeks.netindonesia.net/blogs/risman/08_thumb_521F24E7.jpg" width="331" height="200" /&gt;&lt;/a&gt;&amp;#160;&amp;#160; &lt;a href="http://geeks.netindonesia.net/blogs/risman/09_3D4D2C67.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="09" border="0" alt="09" src="http://geeks.netindonesia.net/blogs/risman/09_thumb_02755DC4.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 class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/risman/archive/2009/03/21/ews-exchange-web-services.aspx&amp;amp;subject=EWS – Exchange Web Services" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/21/ews-exchange-web-services.aspx&amp;amp;t=EWS+%e2%80%93+Exchange+Web+Services" target="_blank" title="Submit EWS – Exchange Web Services to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/21/ews-exchange-web-services.aspx&amp;amp;title=EWS+%e2%80%93+Exchange+Web+Services" target="_blank" title="Submit EWS – Exchange Web Services to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/21/ews-exchange-web-services.aspx&amp;amp;phase=2" target="_blank" title="Submit EWS – Exchange Web Services to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/21/ews-exchange-web-services.aspx&amp;amp;title=EWS+%e2%80%93+Exchange+Web+Services" target="_blank" title="Add EWS – Exchange Web Services to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=85782" width="1" height="1"&gt;</description></item><item><title>Whats New from MIX 09</title><link>http://geeks.netindonesia.net/blogs/risman/archive/2009/03/21/whats-new-from-mix-09.aspx</link><pubDate>Sat, 21 Mar 2009 05:52:53 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:85763</guid><dc:creator>Risman Adnan Mattotorang</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/risman/rsscomments.aspx?PostID=85763</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/risman/archive/2009/03/21/whats-new-from-mix-09.aspx#comments</comments><description>&lt;p&gt;MIX 09 just ended yesterday. That was 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://geeks.netindonesia.net/blogs/risman/01_358D5597.jpg" width="240" height="186" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;Selamat ber web-ria :).&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Cheers – RAM &lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/risman/archive/2009/03/21/whats-new-from-mix-09.aspx&amp;amp;subject=Whats New from MIX 09" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/21/whats-new-from-mix-09.aspx&amp;amp;t=Whats+New+from+MIX+09" target="_blank" title="Submit Whats New from MIX 09 to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/21/whats-new-from-mix-09.aspx&amp;amp;title=Whats+New+from+MIX+09" target="_blank" title="Submit Whats New from MIX 09 to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/21/whats-new-from-mix-09.aspx&amp;amp;phase=2" target="_blank" title="Submit Whats New from MIX 09 to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/risman/archive/2009/03/21/whats-new-from-mix-09.aspx&amp;amp;title=Whats+New+from+MIX+09" target="_blank" title="Add Whats New from MIX 09 to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=85763" width="1" height="1"&gt;</description></item></channel></rss>