<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Infosys | Microsoft</title>
    <link rel="alternate" type="text/html" href="http://www.infosysblogs.com/microsoft/" />
    <link rel="self" type="application/atom+xml" href="http://www.infosysblogs.com/microsoft/atom.xml" />
   <id>tag:www.infosysblogs.com,2009:/microsoft/1</id>
    <link rel="service.post" type="application/atom+xml" href="http://infosysblogs.com/microsoft-mt/mt-atom.cgi/weblog/blog_id=1" title="Infosys | Microsoft" />
    <updated>2009-07-01T08:53:28Z</updated>
    <subtitle>Infosys Microsoft Alliance and Solutions blog</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 3.2ysb5-20051201</generator>
 
<entry>
    <title>Issues with “Oslo” SDK May 2009 CTP</title>
    <link rel="alternate" type="text/html" href="http://www.infosysblogs.com/microsoft/2009/07/issues_with_oslo_sdk_may_2009.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://infosysblogs.com/microsoft-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=389" title="Issues with “Oslo” SDK May 2009 CTP" />
    <id>tag:www.infosysblogs.com,2009:/microsoft//1.389</id>
    
    <published>2009-07-01T08:38:35Z</published>
    <updated>2009-07-01T08:53:28Z</updated>
    
    <summary>“Oslo” is a very nascent yet promising technology. Hence working with the “Oslo” SDK in its current state does pose a lot of challenges. As I had mentioned in my previous post, the “Oslo” May CTP released a month back. We were working with the Jan CTP till last month and hence we were excited about the new CTP. The list of improvements that had been made seemed very impressive. The setup was really quick and easy. It was great to get a good first look at the Quadrant tool. But when we tried opening up the MGrammar file that we had developed using the Jan CTP in May CTP Intellipad, we faced a couple of issues.</summary>
    <author>
        <name>E. Krishna Kumar</name>
        
    </author>
            <category term="Software Factory" />
    
    <content type="html" xml:lang="en" xml:base="http://www.infosysblogs.com/microsoft/">
        <![CDATA[<p align="justify">&ldquo;Oslo&rdquo; is a very nascent yet promising technology. Hence working with the &ldquo;Oslo&rdquo; SDK in its current state does pose a lot of challenges. As I had mentioned in my previous post, the &ldquo;Oslo&rdquo; May CTP released a month back. We were working with the Jan CTP till last month and hence we were excited about the new CTP. The list of improvements that had been made seemed very impressive. The setup was really quick and easy. It was great to get a good first look at the Quadrant tool. But when we tried opening up the MGrammar file that we had developed using the Jan CTP in May CTP Intellipad, we faced a couple of issues.</p>]]>
        <![CDATA[<p align="justify">First of all we weren&rsquo;t even able to open up our grammar in the new DSL Grammar mode. The Intellipad took a lot of time but it just couldn&rsquo;t parse the grammar and finally it threw an OutOfMemoryException. We could see that the memory usage on the machine was going up till 1.5GB!!! Intellipad was supposed to perform better with this release <img title="Smile" alt="Smile" src="http://www.infosysblogs.com/microsoft-mt/mt-static/plugins/TinyMCE/jscripts/tiny_mce/plugins/emotions/images/smiley-smile.gif" border="0" />. Since this issue was a show stopper we raised a bug on the <a href="https://connect.microsoft.com/oslo" target="_blank">Microsoft &ldquo;Oslo&rdquo; Connect site</a>. Microsoft agreed that this was indeed a bug, but they provided a work around as well. The issue, they said was cropping up because of the length of the names of the tokens that we had used in our Grammar. We were using some long token names within our grammar. We were surprised to know about this, because this was a grammar file which worked perfectly in Jan CTP Intellipad. The usage of shorter token names helped us solve this issue. You can check out the bug that we had raised and the work around suggested by Microsoft <a href="https://connect.microsoft.com/oslo/feedback/ViewFeedback.aspx?FeedbackID=461087" target="_blank">here</a>.</p><p align="justify">Once the above issue got fixed we tried opening up the grammar again in Intellipad. It first of all took a long time to parse the grammar and finally it threw an ArgumentNullException. We had no clue why this was happening as this was raised by the M compiler. We raised another bug on the <a href="https://connect.microsoft.com/oslo" target="_blank">Microsoft &ldquo;Oslo&rdquo; Connect site</a> for this issue. Once again the reply that we got from Microsoft was that this was indeed a bug in the M compiler and it had been fixed in their current codebase. Now we need to wait till the next CTP comes out probably in the month of November this year, to see whether they have actually solved the issue. You can check out the bug that we had raised in this regard, <a href="https://connect.microsoft.com/oslo/feedback/ViewFeedback.aspx?FeedbackID=463473" target="_blank">here</a>.</p><p align="justify">Due to the above issues that we faced with the &ldquo;Oslo&rdquo; May 2009 CTP; we were forced to continue using the &ldquo;Oslo&rdquo; Jan 2009 CTP for our development work. Playing around with CTPs is not really an easy job, is it? <img title="Smile" alt="Smile" src="http://www.infosysblogs.com/microsoft-mt/mt-static/plugins/TinyMCE/jscripts/tiny_mce/plugins/emotions/images/smiley-smile.gif" border="0" /></p>]]>
    </content>
</entry>
<entry>
    <title>Enterprise BI Dashboards: Silverlight vs. SAP Xcelsius</title>
    <link rel="alternate" type="text/html" href="http://www.infosysblogs.com/microsoft/2009/06/enterprise_bi_dashboards_compa.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://infosysblogs.com/microsoft-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=388" title="Enterprise BI Dashboards: Silverlight vs. SAP Xcelsius" />
    <id>tag:www.infosysblogs.com,2009:/microsoft//1.388</id>
    
    <published>2009-06-26T15:38:55Z</published>
    <updated>2009-06-29T07:09:37Z</updated>
    
    <summary>To sum it up, for short duration, quick data visualization requirements where reaching out and working with IT is not an option, Xcelsius is a better option. For longer term investments with IT involvement and enterprise level scalability needs, Silverlight is a better option.
</summary>
    <author>
        <name>Chandan Gokhale</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.infosysblogs.com/microsoft/">
        <![CDATA[<p>Recently, I have been in multiple client interactions related to BI Dashboards and the best technology/ tools for achieving superior user experience on BI dashboards.<span>&nbsp; </span>One question that I faced on more than one occasion was &lsquo;how does Silverlight compares with Xcelsius for doing corporate performance dashboards &lsquo;?</p>]]>
        <![CDATA[<p>This is a tricky question because in reality we are comparing apples to oranges here. Silverlight is a powerful but open ended platform, whereas Xcelsius is well tailored BI dashboarding toolkit with a specific user group as the target market. So there are inherent strengths and weaknesses.</p><p>But for any BI development team looking at picking a broad direction, I would like to share some factors to consider:</p><strong><span><span>1.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></strong><strong>Upfront Investment<br /></strong><p><span>&nbsp;</span>Silverlight is a free Web plug-in technology. For developers, the Software development kit for the basic development platform is free. For corporations, there are no licensing costs and plug-in install is not an issue beyond first usage.</p><p><span>&nbsp;</span><strong>But if you decide to purchase Third party Silverlight controls like Infragisitcs or Telerik to reduce custom development and match the quality of UX; your upfront costs may not be significantly different</strong>. </p><strong><span><span>2.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></strong><strong>Downstream Costs<br /></strong><p><span>&nbsp;</span>Once acquired, both Silverlight and Xcelsius do not have any royalty type accruing costs.</p><p>Most of the costs related to owning and developing using these technologies is related to skill base needed for building the front end.<span>&nbsp; </span></p><p>Silverlight being a pure technical platform requires a strong developer with good design and programming skills to develop the front end, in addition to a business analyst to figure out what, where and how to display the business intelligence data.<span>&nbsp; </span></p><p>Xcelsius is a simple, drag and drop based software and so is very easy (and so popular) tool amongst Business analysts. <strong>From pure front end development costs point of view, it is possible to save the entire software developer related costs. The Xcelsius tool is simple and intuitive. Business analysts have been able to build compelling interfaces without any developer involvement. </strong></p><p><strong>Bottom-line, Xcelsius install and adoption are less technically challenging compared to adoption Silverlight platform or Silverlight based BI control kits.</strong> </p><strong><span><span>3.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></strong><strong>Ability to build impressive,<span>&nbsp; </span>Rich Interactive Solutions<br /></strong><p>Silverlight is a very strong platform when it comes to building appealing and engaging Rich Interactive Applications.<span>&nbsp; </span>It is extremely flexible and allows use of Themes and Custom styles to implement very good branding consistency across all UI elements. </p><p>As more and more custom controls become available, delivering high quality user interfaces with Silverlight will become easier and less time consuming.</p><p>With Xcelsius, the work needed to develop custom UI controls is already done, and that to on a far more stable platform &ndash; Flash. But since some design decisions have already been made, it restricts the overall flexibility you have going forward. It is possible to further customize or extend the Xcelsius tool kit using the Xcelsius SDK but Flex skill set is harder to find than .NET skill set.</p><p>If customization or extension of Xcelsius in not an option, then the dashboard designer has to live within the limitations of the available set of Xcelsius UI controls. <strong>Bottom-line, Xcelsius is impressive and adequate but has limitations if extension is not an option. Silverlight is very flexible and extensible but needs more time and custom development.</strong></p><strong><span><span>4.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></strong><strong>Breadth and Range of Dashboard based Visualizations. Time duration for Project<br /></strong><p>Xcelsius comes with an easy drag-and drop type designer that allows rapid UI front development capability within very short time. Also, since a trained Business Analyst can build the UI, the efforts and time needed to communicate and collaborate with User Interface developer is not needed. </p><p>With Silverlight, certain due diligence around application architecture, UI customization and themes development requires investment of time.<span>&nbsp; </span>It is easy to use these across projects, but if requirements are unclear /evolving; changes are more time consuming with Silverlight.</p><strong><span><span>5.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></strong><strong><span>&nbsp;&nbsp;</span>Dashboard Dissemination Approach<br /></strong><p><span>&nbsp;</span>Silverlight is a Web based plug-in technology. Although it is platform independent, Silverlight based dashboards need to be disseminated through web browser.<span>&nbsp; </span>This usually means additional investment in Portal or intranet application with adequate role based security.<span>&nbsp;&nbsp; </span>Xcelsius gives more dissemination flexibility; flash files can be hosted on web, but can also be distributed through Word / PDF documents and can also be passed around through PowerPoint presentations.</p><p><strong>To sum it up, for short duration, quick data visualization requirements where reaching out and working with IT is not an option, Xcelsius is a better option. For longer term investments with IT involvement and enterprise level scalability needs, Silverlight is a better option.</strong></p>]]>
    </content>
</entry>
<entry>
    <title>SOA – Built to Change!!!</title>
    <link rel="alternate" type="text/html" href="http://www.infosysblogs.com/microsoft/2009/06/soa_built_to_change_1.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://infosysblogs.com/microsoft-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=387" title="SOA – Built to Change!!!" />
    <id>tag:www.infosysblogs.com,2009:/microsoft//1.387</id>
    
    <published>2009-06-25T11:19:28Z</published>
    <updated>2009-06-25T14:55:31Z</updated>
    
    <summary><![CDATA[Clients who have embarked on SOA initiative using Microsoft technology stack by&nbsp;year 2006&nbsp;would have realized their business services using ASMX web services.&nbsp; Since then, Microsoft web services technology has evolved rapidly to new framework of building services called as WCF...]]></summary>
    <author>
        <name>Sudhanshu Madhaorao Hate</name>
        
    </author>
            <category term=".NET Fwk 3.5" />
    
    <content type="html" xml:lang="en" xml:base="http://www.infosysblogs.com/microsoft/">
        <![CDATA[<p>Clients who have embarked on SOA initiative using Microsoft technology stack by&nbsp;year 2006&nbsp;would have realized their business services using ASMX web services.&nbsp; Since then, Microsoft web services technology has evolved rapidly to new framework of building services called as WCF (Windows Communication Foundation). WCF has been available since .Net 3.0 and above. WCF has been&nbsp;primarily designed to implement SOA principles.<br />For SOA implementation built using ASMX services, it may be good idea to look at the current Microsoft technology services stack and build a case for migrating from ASMX to WCF services. <br />Here is an attempt to list some of the technology drivers that can help build the Services migration business case in an Enterprise.</p>]]>
        <![CDATA[<p><strong>Reach ability</strong></p><p>SOA initiatives using ASMX services and&nbsp;trying&nbsp;to reach out to all the stakeholders on internet&nbsp;using SOAP/http&nbsp;clients was the natural option, where as to connect with employees, internal users or partner&rsquo;s it would have used TCP IP based .Net Remoting. Thus to serve different user base, one has to use different transport option and each transport needed independent implementation.</p><p>Unlike ASMX services which were primarily Http based, WCF Services can be reached using multiple protocols like Http, TCP IP, Named Pipe and MSMQ. Other clients like internet/intranet or partners can use any of the above mentioned preferred channels to hook on to these services without IT having to maintain separate code base to serve different client class. </p><p><strong>Interoperability</strong></p><p>Large Enterprises having mix of technologies, Interoperability requirements with Non Microsoft clients is one of the common scenarios in any SOA initiatives. With ASMX WS-*, XML Serialization is not standardized and hence it is difficult to achieve true interoperability. With WCF, it generates standard SOAP based XML to be consumed by clients. Additionally by using data contracts and message contracts, information exchange with non Microsoft clients&rsquo; become easy and improves interoperability.</p><p><strong>Performance</strong></p><p>Most often sharpness of underlying technology contributes in meeting performance based business SLAs (e.g. In banking gateway for Money transfer, Number of clients served per second). ASMX services were part of .net framework 2.0, since then with .net 3.5 and 4.0 around,&nbsp;there has been continuous improvements in core .net framework to improve&nbsp;performance. </p><p>One of the key reasons WCF performance is better than ASMX services is due to the improved serialization techniques in the .net framework. WCF services provide 25 to 40% improvement in performance over ASMX services and hence become natural preference for high performance application.</p><p><strong>Extensibility</strong></p><p>If ASMX services were to be delivered to clients, only possible way to host them was on to IIS (Internet Information Server). With WCF services, one can host the services into Windows services, Windows Activation Service (WAS) or IIS. WCF also supports claims based authorization which is more granular than existing mechanisms. With WCF starting from application runtime, security, binding, serialization, channel system to service host everything is extensible.</p><p>ASMX with WSE 3.0 supports security and http buffering/caching/sessions but still lacks support for Session management, Concurrency, Security, Reliable messaging, Transaction, Throttling, Exception handling and faults. In applications explicitly using WSE to support some of these features is difficult and cumbersome, where as with WCF WSE is inbuilt.</p><p>With .Net 4.0, the argument to migrate becomes even stronger because of the benefit from platform features like CLR enhancements, Improved Garbage collection, Parallel programming, Distributed caching, and improved support for REST, and Workflow Services.</p><p>With above benefits making way to WCF migration, one of the ways to solve service migration problem is by overlaying&nbsp;WCF attribute over ASMX attributes. e.g.&nbsp;With ServiceContract() attribute on ASMX Service class, and OperationContract()&nbsp;on&nbsp;service methods/operations&nbsp;and then making&nbsp; appropriate changes in .config file. This wrapper based approach may make asmx services work with asmx and wcf clients. But with this approach, since the underlying code is still asmx, it will not benefit from the underlying framework advantages that WCF provides as discussed above.</p><p>Within Infosys, we have built <strong>tool</strong> to <strong>automate</strong> and address such service migrations from ASMX to WCF. If you are looking for help on such initiatives, please feel free to reach out to us.</p>]]>
    </content>
</entry>
<entry>
    <title>Troubleshooting WCF Service application hangs</title>
    <link rel="alternate" type="text/html" href="http://www.infosysblogs.com/microsoft/2009/06/troubleshooting_wcf_service_ap.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://infosysblogs.com/microsoft-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=385" title="Troubleshooting WCF Service application hangs" />
    <id>tag:www.infosysblogs.com,2009:/microsoft//1.385</id>
    
    <published>2009-06-16T11:40:34Z</published>
    <updated>2009-06-16T12:15:01Z</updated>
    
    <summary>If you come across scenarios where WCF ASP.net client is getting hanged after some activity on the server, one of the possible reasons could be due to WCF connection pool exhaustion. This blogs takes a stab at approach and some...</summary>
    <author>
        <name>Sudhanshu Madhaorao Hate</name>
        
    </author>
            <category term=".NET Fwk 3.5" />
    
    <content type="html" xml:lang="en" xml:base="http://www.infosysblogs.com/microsoft/">
        If you come across scenarios where WCF ASP.net client is getting hanged after some activity on the server, one of the possible reasons could be due to WCF connection pool exhaustion. This blogs takes a stab at approach and some guidelines in identifying and resolving such application hangs.
        <![CDATA[<p><strong>Troubleshooting</strong></p><p>While troubleshooting such problems one should start with following<br />1. The service application hosted on IIS should be using dedicated application pool (no other application is using the same application pool)</p><p>2. In case if the client application (asp.net) is also hosted on the same IIS server it should be using another dedicated application pool</p><p>Once these basic things are ensured, one should configure perfmon on IIS server with <strong>Instances</strong> counter from <strong>ServiceModelService 3.0.0.0</strong>. The instances count can help plot the service instances consumed from the application at any given point of time. </p><p>Another way to validate this is by taking memory dumps using DebugDiag, downloadable <a href="http://www.microsoft.com/DOWNLOADS/details.aspx?FamilyID=28bd5941-c458-46f1-b24d-f60151d875a3&amp;displaylang=en">here</a>. </p><p>Take full memory dump on server running WCF services (for IIS 6 and above, w3wp process id running WCF, or aspnet_wp for IIS 5). The Debugdiag tool needs to be installed on machine running IIS and the appropriate application Crash/Hang rule should be configured in this tool to capture the dump. Once the memory dump is captured on server, one can analyze this dump using WinDbg client, this tool can be downloaded from <a href="http://www.microsoft.com/whdc/devtools/debugging/default.mspx">here</a></p><p class="MsoNormal" style="margin: 0in 0in 10pt"><span style="font-size: 7.5pt; line-height: 115%; font-family: 'Verdana','sans-serif'">Once dump is obtained, next step is to start analyzing dumps. Steps to analyze the memory dumps are as follows</span></p><p>1) Open Crash Dump in WindDebug from File-&gt; Open Crash dump</p><p>2) Set symbol path using command !symfix D:\Symbols</p><p>3) Load SOS file for .net 2.0 CLR using<br />&nbsp;&nbsp; .Load C:\Windows\Microsoft.NET\Framework\v2.0.50727\SOS.dll</p><p>4)&nbsp;&nbsp; To list addresses of all objects of type ServiceThrottle that exist on the managed heap. Use !dumpheap -type ServiceThrottle &ndash;short</p><p>------------------------------<br />0:000&gt; !dumpheap -type ServiceThrottle -short<br />09f20b10 <br />09f22a14 <br />09f24a56 <br />09f25023 <br />0deaa456</p><p>5)For each address from the above output, list dumpobject address using command<br />!do 0deaa456</p><p>0:000&gt; !do 0deaa456<br />Name: System.ServiceModel.Dispatcher.ServiceThrottle<br />MethodTable: 1b1ba2e4<br />EEClass: 1ae21f20<br />Size: 36(0x24) bytes<br />&nbsp;(C:\WINNT\assembly\GAC_MSIL\System.ServiceModel\3.0.0.0__b77a5c561934e089\System.ServiceModel.dll)<br />Fields:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MT&nbsp;&nbsp;&nbsp; &nbsp; Field&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;Offset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type VT&nbsp;&nbsp;&nbsp;&nbsp; Attr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Name<br />1b1ba328&nbsp; 400371c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 ...cher.FlowThrottle&nbsp; 0&nbsp;&nbsp; instance 0deaa454&nbsp;&nbsp; calls<br />1b1ba328&nbsp; 400371d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8 ...cher.FlowThrottle&nbsp; 0&nbsp;&nbsp;instance 0dea45b&nbsp;&nbsp;&nbsp; sessions<br />1b175dbc&nbsp; 400371e&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c ...her.QuotaThrottle&nbsp; 0&nbsp; instance 00000000&nbsp;&nbsp;dynamic<br />1b1ba328&nbsp; 400371f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10 ...cher.FlowThrottle&nbsp; 0&nbsp; instance 00000000 instanceContexts<br />1b1b994c&nbsp; 4003720&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 14 ...l.ServiceHostBase&nbsp;0&nbsp; instance 0deaa168 host<br />793043b8&nbsp; 4003721&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Boolean 1 instance&nbsp;0deaa234 isActive<br />79330508&nbsp; 4003722&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Object&nbsp; 0 instance 0deaa3b8 thisLock</p><p>6) The ServiceThrottle object has many fields but sessions will help us progress. Type !do address of the sessions field to see what's inside of it.<br />!do 0dea45b<br />&nbsp;<br />0:000&gt; !do 0dea45b<br />Name: System.ServiceModel.Dispatcher.FlowThrottle<br />MethodTable: 1b1ba322<br />EEClass: 1ae21c43<br />Size: 36(0x24) bytes<br />&nbsp;(C:\WINNT\assembly\GAC_MSIL\System.ServiceModel\3.0.0.0__b77a5c561934e089\System.ServiceModel.dll)<br />Fields:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Field&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;Offset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type VT&nbsp;&nbsp;&nbsp;&nbsp; Attr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Name<br /><strong>79332b38&nbsp; 50034f4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Int32&nbsp; 1 instance&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;capacity<br />79332b38&nbsp; 50034f5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Int32&nbsp; 1 instance&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; count</strong><br />79330508&nbsp; 50034f6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Object&nbsp; 0 instance 0deaa570 mutex<br />7931e84c&nbsp; 50034f7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8 ...ding.WaitCallback&nbsp; 0 instance 0deaa52c release<br />00000000&nbsp; 50034f8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 instance 0deaa57c waiters<br />793308ec&nbsp; 50034f9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.String&nbsp; 0 instance 0deaa4b4 propertyName<br />793308ec&nbsp; 50034fa&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.String&nbsp; 0 instance 0deaa4f0&nbsp; configName<br />&nbsp;<br />The above highlighted capacity shows what the maximum capacity of WCF pool is; count indicates the current number of instances. In this example since both are 10, it indicates that no new WCF connection can be created unless the existing ones are being released.</p><p><strong>Remedies</strong></p><p>Unlike ASMX services, the WCF services needs to be explicitly instantiated and once the service call is completed the proxy connection needs to be explicitly closed. Not doing so correctly can result in to server side WCF connection exhaustion ultimately leading to service denial.<br />There may be scenarios where the concurrent users may be 2 or 3 and still the WCF connection pool may get exhausted, this can happen due to one of the possible condition</p><p>1.While working with the application, the concurrent browser sessions would have reached to 10 and hence connection pool got exhausted and couldn&rsquo;t serve beyond 10 concurrent requests</p><p>2.WCF Service in turn calling Database stored procedures or other code which is long running and hasn&rsquo;t returned the call to service, connection timeout settings are not hit and hence pool got exhausted.</p><p>3.WCF connections being leaked from some part of the code as WCF proxies were not closed appropriately.</p><p>For #2, the service side .config parameters which control settings are mentioned in serviceThrottling section depicted as<br />&nbsp;<br />&lt;serviceBehaviors&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;behavior&nbsp;&nbsp; name=&quot;My.Samples.ServiceLayer.CricketScoreServiceBehavior&quot;&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;serviceThrottling<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>maxConcurrentCalls</strong>=&quot;10&quot;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>maxConcurrentSessions</strong>=&quot;10&rdquo; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;serviceMetadata httpGetEnabled=&quot;true&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;serviceDebug includeExceptionDetailInFaults=&quot;false&quot; /&gt;<br />&nbsp;&lt;/serviceBehaviors&gt;</p><p><strong>maxConcurrentCalls</strong> specifies maximum number of messages actively processing over a servicehost, where as <strong>maxConcurrentSessions</strong> controls how many maximum concurrent sessions can exists on the service host.&nbsp; Refer the details about these settings <a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.description.servicethrottlingbehavior.maxconcurrentsessions.aspx">here</a> <br />Setting these to 10 may not be enough in scenarios where total No. of users or concurrent users are high. <br />For the above service, as soon as the total service instance reaches to 10, the next client call to service would go in wait state. It would remain in wait state and wait till the existing WCF connections are closed or timed out. Hence it is important that the timeout setting kicks in ASAP so that the client can acquire connection. These settings are controlled using the client side .config parameters which are <strong>ReceiveTimeout</strong> and <strong>InactivityTimeout</strong></p><p><strong>&bull;InactivityTimeout</strong> - This inactivity timer fires if no messages, either application or infrastructure, are received within the timeout period. An infrastructure message is a message that is generated for the purpose of one of the protocols in the channel stack, such as a keep alive or an acknowledgment, rather than containing application data. </p><p>&bull;<strong>ReceiveTimeout -</strong> This inactivity timer fires if no application messages are received within the timeout period. This specifies, for example, the maximum time a client may take to send at least one message to the server before the server will close the channel used by a session. This behavior ensures that clients cannot hold on to server resources for arbitrary long periods.</p><p>&lt;system.serviceModel&gt;<br />&nbsp;&nbsp;&nbsp; &lt;bindings&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;wsHttpBinding&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;binding name=&quot;WSHttpBinding_ICricketScoreService&quot; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; closeTimeout=&quot;00:01:00&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; openTimeout=&quot;00:01:00&quot; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; receiveTimeout=&quot;00:10:00&quot; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sendTimeout=&quot;00:01:00&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;reliableSession ordered=&quot;true&quot; inactivityTimeout=&quot;00:10:00&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enabled=&quot;false&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/binding&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/wsHttpBinding&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/bindings&gt;<br />&lt;/system.serviceModel&gt;<br />&nbsp;<br />&nbsp;<br />Details about other WCF settings can be referred from <a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.basichttpbinding_members.aspx">here</a><br />Timeout settings are handy, but for #3 above, important that in the client side code one must ensure that the WCF proxy connections be explicitly closed. Following code snippet can be used as guidance for appropriate connection closing.</p><p>Try<br />&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CricketScoreService.ScoreClient _obj; <br />&nbsp;&nbsp;&nbsp;&nbsp; _obj = new CricketScoreService.ScoreClient();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //do other activities like calling Business layer method and once<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //done close the WCF connection as below<br />&nbsp;&nbsp;&nbsp;&nbsp; _obj.Close();<br />&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Catch (Exception e) //catch service exception like faulted, etc.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (obj!= null) &amp;&amp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (_obj.State == System.ServiceModel.CommunicationState.Faulted) <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _obj.Abort(); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else if (obj!= null) &amp;&amp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (_obj.State != System.ServiceModel.CommunicationState.Closed)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _obj.Close(); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;<br />Another recommended way to close WCF connection is by &ldquo;using&rdquo; statement as follows, <br />using (CricketScoreService.ScoreClient sc = new CricketScoreService.ScoreClient ())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sc.getScores(&ldquo;111&rdquo;); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br /></p><p>The using block&nbsp;automatically calls sc.Dispose() when it's done.<br /><strong>using statement doesn&rsquo;t always ensure closed connection, hence it is not recommended to be used for closing connections.&nbsp; <br /></strong>With ClientBase abstract class(which any WCFClient would inherit, check <a href="http://msdn.microsoft.com/en-us/library/ms576141.aspx">here</a>), implementing the Dispose() method will make a call to Close(). When the ClientBase's Close() method is called, a web service call actually goes out to the WCF service, informing it that the connection session is no longer required. The problem with this mechanism is that when the Close() method is called, an exception can be thrown. After all, it involves yet another network call to a web service. It's for this reason that the using statement isn't recommended with WCF clients.</p><p>With this as background, watch out for WCF application hang problem for&nbsp;applications running in UAT, or production&nbsp;scenarios and this should come handy resolving it.</p>]]>
    </content>
</entry>
<entry>
    <title>Visual Studio 2010 Beta 1 install experience</title>
    <link rel="alternate" type="text/html" href="http://www.infosysblogs.com/microsoft/2009/06/visual_studio_2010_beta_1_inst.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://infosysblogs.com/microsoft-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=383" title="Visual Studio 2010 Beta 1 install experience" />
    <id>tag:www.infosysblogs.com,2009:/microsoft//1.383</id>
    
    <published>2009-06-15T04:30:35Z</published>
    <updated>2009-06-15T04:31:57Z</updated>
    
    <summary>Visual Studio 2010 Beta 1 install experience</summary>
    <author>
        <name>Atul Gupta</name>
        
    </author>
            <category term=".net 4.0" />
            <category term="Microsoft Products &amp; Technologies" />
    
    <content type="html" xml:lang="en" xml:base="http://www.infosysblogs.com/microsoft/">
        <![CDATA[<p>The other day I finally got to install VS 2010 Beta 1. I had decided to build a VPC for the same so as to not impact my current workstation setup. Overall the experience was pretty smooth and the setup ended without any issues, but the initial few components did cause a bit of pain. </p><p>After every component (VC 9 Runtime, VC 10 Runtime, .NET 3.5 SP1 and .NET framework 4 Beta 1), i.e. 4 of these, I had to restart the machine and it was really painful. Beyond that it completed without any more restarts. </p>]]>
        
    </content>
</entry>
<entry>
    <title>Understanding an ERP implementation – Bridge Analogy</title>
    <link rel="alternate" type="text/html" href="http://www.infosysblogs.com/microsoft/2009/06/understanding_an_erp_implement.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://infosysblogs.com/microsoft-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=386" title="Understanding an ERP implementation – Bridge Analogy" />
    <id>tag:www.infosysblogs.com,2009:/microsoft//1.386</id>
    
    <published>2009-06-12T22:00:00Z</published>
    <updated>2009-06-17T08:09:23Z</updated>
    
    <summary>This is a simplistic approach of relating an ERP implementation to constructing a bridge (under Build, Operate and Transfer basis by a private contractor) due to the inherent nature of activities being the same in both the scenarios.The making of...</summary>
    <author>
        <name>Sachin Bery</name>
        
    </author>
            <category term="Microsoft Dynamics" />
    
    <content type="html" xml:lang="en" xml:base="http://www.infosysblogs.com/microsoft/">
        <![CDATA[<p>This is a simplistic approach of relating an ERP implementation to constructing a bridge (under Build, Operate and Transfer basis by a private contractor) due to the inherent nature of activities being the same in both the scenarios.</p><p>The making of a bridge entails site inspection to ground preparation to blueprinting ending with construction where there are tests in the intervening duration to ensure that this is safe and can serve the intended purpose without risking the lives of the users who are going to use this to go from Point A to Point B. The work is not limited to only bridge but also entails making approach roads and giving a complete end to end solution to the commuter needs.<br /></p>]]>
        <![CDATA[<span><span><p><span><span style="font-size: 11pt; color: #c00000; line-height: 115%; font-family: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"><strong>The ERP implementation is no different!</strong></span><span style="font-size: 11pt; line-height: 115%; font-family: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA">&nbsp;</span></span>Let&rsquo;s see how&hellip;</p><table cellspacing="0" cellpadding="0" border="1"><thead><tr><td style="width: 54px" valign="top"><p><span>S. No. <br /></span></p></td><td style="width: 204px" valign="top"><p><span>Stage in Bridge Construction<br /></span></p></td><td style="width: 216px" valign="top"><p><span>Stage in ERP Implementation <br /></span></p></td><td style="width: 186px" valign="top"><p><span>Important Consideration<br /></span></p></td></tr><strong><tr><td style="width: 54px" valign="top" rowspan="2"><span>1<br /></span></td><td style="width: 204px" valign="top"><strong><span>Ground Preparation</span></strong><span><br /></span></td><td style="width: 216px" valign="top"><strong><span>Project Planning <br /></span></strong></td><td style="width: 186px" valign="top"><span><p>&nbsp;</p></span></td></tr><tr><td style="width: 204px" valign="top"><span>This is the planning phase in which the entire work plan is made, teams are organized, responsibilities given and basic discussions/groundwork is started to assess the details needed for design<strong><br /></strong></span></td><td style="width: 216px" valign="top"><span>The initial discussions around the scope of work, team structure, execution details and discussions, formation of teams by partner and client, objectives and outcomes expected</span><em><span><br /></span></em></td><td style="width: 186px" valign="top"><span><span>&middot;</span></span><em><span>Business user buy-in at client end, <br /></span></em><span><span>&middot;O</span></span><em><span>rganization readiness for change,<br /></span></em><span><span>&middot;C</span></span><em><span>ommunication of objectives and expected benefits,<br /></span></em><span><span>&middot;</span></span><em><span>Be as open as possible with partner to<span>&nbsp; </span>help him understand the details<br /></span></em></td></tr><tr><td style="width: 54px" valign="top" rowspan="2"><span>2<br /></span></td><td style="width: 204px" valign="top"><strong><span>Defining Dependencies<br /></span></strong></td><td style="width: 216px" valign="top"><strong><span>Project Initiation<span>&nbsp; </span><br /></span></strong></td><td style="width: 186px" valign="top"><strong><span><p>&nbsp;</p></span></strong></td></tr><tr><td style="width: 204px" valign="top"><span>Regulations, blasting controls &amp; approvals, contractor negotiations for outsourced work, deciding on methodology of execution, identifying external dependencies<strong><br /></strong></span></td><td style="width: 216px" valign="top"><span>Understand the client business needs, pain points, success criteria, regulatory environment, need for 3<sup>rd</sup> parties involvement, project execution methodology (waterfall, agile, etc.), external dependencies (product vendors, add-ons ISVs, other solutions)<br /></span></td><td style="width: 186px" valign="top"><span><span>&middot;</span></span><em><span>Business needs and pain points must be clearly articulated and documented<br /></span></em><span><span>&middot;</span></span><em><span>Project execution methodology once frozen need to be religiously followed<br /></span></em><span><span>&middot;</span></span><em><span>Risks around the external dependencies need to be documented and understood by client and partner</span></em></td></tr><tr><td style="width: 54px" valign="top" rowspan="2"><span>3<br /></span></td><td style="width: 204px" valign="top"><strong><span>Site Inspection<br /></span></strong></td><td style="width: 216px" valign="top"><strong><span>Scoping &amp; Requirement Gathering<br /></span></strong></td><td style="width: 186px" valign="top"><span><p>&nbsp;</p></span></td></tr><tr><td style="width: 204px" valign="top"><span>To see that the real scenario of the bridge site and assess the potential situations. This helps in defining accurate scope of work and arriving<span>&nbsp; </span>a &lsquo;good&rsquo; budgetary number<strong><span><br /></span></strong></span></td><td style="width: 216px" valign="top"><span>It is very important to define the scope of the ERP implementation along with the details of what all would be covered in the execution plan. This will help in arriving at a &lsquo;good&rsquo; budgetary number which can help in budgeting for the entire project.<br /></span></td><td style="width: 186px" valign="top"><span><span>&middot;</span></span><em><span>Any increase in scope of work can impact project cost<br /></span></em><span><span>&middot;</span></span><em><span>Scope delimitation and finalization is a very important part of the overall project execution<br /></span></em><span><span>&middot;</span></span><em><span>This helps the partner to plan the execution more effectively<br /></span></em></td></tr><tr><td style="width: 54px" valign="top" rowspan="2"><span>4<br /></span></td><td style="width: 204px" valign="top"><strong><span>Blueprinting<br /></span></strong></td><td style="width: 216px" valign="top"><strong><span>Design<br /></span></strong></td><td style="width: 186px" valign="top"><span><p>&nbsp;</p></span></td></tr><tr><td style="width: 204px" valign="top"><span>This is the phase in which the design starts and the load, span along with other design parameters are decided. This also includes incorporating affect of external (environmental) load factors like Wind, Seismic forces, flooding, etc.<br /></span><strong><span><p>&nbsp;</p></span></strong></td><td style="width: 216px" valign="top"><span>The broad architecture, technical design and entity definition happens in this stage. There is a focus on the both functional and non-functional items along with focus on load factors like Concurrent users, time zones, transaction loads, peak load analysis, bandwidth availability, hardware needs, network detailing and interface loads<br /></span></td><td style="width: 186px" valign="top"><span><span>&middot;</span></span><em><span>The loads around users, transactions, network, hardware and instance strategy should be properly sized<br /></span></em><span><span>&middot;</span></span><em><span>The need for interfaces, reports, legal formats, statutory needs, data migration elements need to be planned for development to proceed smoothly</span></em></td></tr><tr><td style="width: 54px" valign="top" rowspan="2"><span>5<br /></span></td><td style="width: 204px" valign="top"><strong><span>Construction<br /></span></strong></td><td style="width: 216px" valign="top"><strong><span>Development<br /></span></strong></td><td style="width: 186px" valign="top"><span><p>&nbsp;</p></span></td></tr><tr><td style="width: 204px" valign="top"><span>Once the design is completed with finalized parameter, we would move into actual construction. This would not be limited to construction of bridge but would also involve &ndash; <br /></span><span><span>&middot;<span>&nbsp;&nbsp; </span></span></span><span>Strengthening the foundation where the bridge would rest<br /></span><span><span>&middot;<span>&nbsp;&nbsp; </span></span></span><span>Making the correct road alignment for the approach roads both at approach and exit from bridge<br /></span></td><td style="width: 216px" valign="top"><span>This involves setting up the coding standards and best practices for the development Lifecycle (Strengthening the foundation), code development for the business needs (making the bridge), Building the interfaces (approach roads) and configuring the reports<br /></span></td><td style="width: 186px" valign="top"><span><span>&middot;</span></span><em><span>The code development should commence once the design has been finalized so that there are no reworks &ndash; which leads to delays, errors and integration issues later<br /></span></em><span><span>&middot;</span></span><em><span>The interface details need<span>&nbsp; </span>to be very clearly captured along with their fit into the overall design and business process</span></em></td></tr><tr><td style="width: 54px" valign="top" rowspan="2"><span>6<br /></span></td><td style="width: 204px" valign="top"><strong><span>Testing<br /></span></strong></td><td style="width: 216px" valign="top"><strong><span>SIT &amp; UAT<br /></span></strong></td><td style="width: 186px" valign="top"><span><p>&nbsp;</p></span></td></tr><tr><td style="width: 204px" valign="top"><span>Each component of the bridge like girders, foundations, angles, connectors, rivets are tested individually and finally the entire bridge is loaded and tested as well<strong><br /></strong></span></td><td style="width: 216px" valign="top"><span>Each code component has to be unit tested. The final code has to undergo multiple rounds of system integration testing to see that they work together and finally the users have to conduct the User Acceptance Testing for the customizations developed.<br /></span></td><td style="width: 186px" valign="top"><span><span>&middot;</span></span><em><span>SIT should happen after the interfaces are built to ensure they work in a test environment<br /></span></em><span><span>&middot;</span></span><em><span>The User test cases must be prepared by client team well in advance to ensure complete coverage of test scenario</span></em><span><br /></span></td></tr><tr><td style="width: 54px" valign="top" rowspan="2"><span>7<br /></span></td><td style="width: 204px" valign="top"><strong><span>Communication &amp; Inauguration<br /></span></strong></td><td style="width: 216px" valign="top"><strong><span>Cutover &amp; Go-Live<br /></span></strong></td><td style="width: 186px" valign="top"><span><p>&nbsp;</p></span></td></tr><tr><td style="width: 204px" valign="top"><span>With the project being completed as per the defined parameters, this is the time to make it available for public to use. The general public need to be aware of the new route and need to be given ample driving directions on the approach roads as well<br /></span><strong><span><span>&nbsp;</span><br /></span></strong></td><td style="width: 216px" valign="top"><span>There needs to be proper user training, handholding and activities around getting the business ready for the correct usage of the application for their own benefit. The data migration and final cutover of balances to the production environment will happen here<br /></span></td><td style="width: 186px" valign="top"><span><span>&middot;</span></span><em><span>Cutover planning is very important and should cover timing of communication and content<br /></span></em><span><span>&middot;</span></span><em><span>Opening balances need to be carried to new environment<br /></span></em><span><span>&middot;</span></span><em><span>The change management aspects for the organization will yield benefit in this stage</span></em></td></tr><tr><td style="width: 54px" valign="top" rowspan="2"><span>8<br /></span></td><td style="width: 204px" valign="top"><strong><span>Bridge Maintenance<br /></span></strong></td><td style="width: 216px" valign="top"><strong><span>Steady State Support<br /></span></strong></td><td style="width: 186px" valign="top"><span><p>&nbsp;</p></span></td></tr><tr><td style="width: 204px" valign="top"><span>The bridge has to be maintained on an ongoing basis with regular maintenance along with any urgent maintenance as well which can sometime even entail stopping the flow of traffic on the bridge<strong><br /></strong></span></td><td style="width: 216px" valign="top"><span>Supporting the application for bug-fixes, software patch application, major and minor enhancements, database administration, user administration, application maintenance, access management, disaster recovery mechanism<br /></span></td><td style="width: 186px" valign="top"><span><span>&middot;</span></span><em><span>The support team should have all documentation from the project implementation<br /></span></em><span><span>&middot;</span></span><em><span>The release of bug-fixes and enhancements should follow the complete lifecycle of development to testing before being deployed on production<br /></span></em><span><span>&middot;</span></span><em><span>Disaster recovery mechanism should never be overlooked</span></em></td></tr><tbody /></strong></thead></table></span></span>]]>
    </content>
</entry>
<entry>
    <title>WPF - Performing Conditional Validation</title>
    <link rel="alternate" type="text/html" href="http://www.infosysblogs.com/microsoft/2009/06/wpf_performing_conditional_val.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://infosysblogs.com/microsoft-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=382" title="WPF - Performing Conditional Validation" />
    <id>tag:www.infosysblogs.com,2009:/microsoft//1.382</id>
    
    <published>2009-06-11T09:22:31Z</published>
    <updated>2009-06-11T09:42:14Z</updated>
    
    <summary>WPF - Performing Conditional Validation</summary>
    <author>
        <name>Atul Gupta</name>
        
    </author>
            <category term=".NET Fwk 3.0" />
            <category term=".NET Fwk 3.5" />
            <category term="Expression Blend" />
            <category term="Microsoft Products &amp; Technologies" />
            <category term="VS2008" />
    
    <content type="html" xml:lang="en" xml:base="http://www.infosysblogs.com/microsoft/">
        <![CDATA[<p>When we look at conditional validation needs in WPF, the typical option that people talk about is the usage of UpdateSourceTrigger property in binding expression. There are many examples that one can find on setting this to explicit and managing the validation or things like setting this to PropertyChange when validating textbox input without having to focus out of it. </p><p>However there can be scenarios where you can't use explicit since you want the normal two way binding behavior, but have a need to validate based on value of some other control. I had a similar scenario the other day where we had a combo box with yes/no options and the validation had to happen only if a value of &quot;yes&quot; was selected in the combo box. </p>]]>
        <![CDATA[<p>The idea that I tried out was to do a trigger based binding on the textbox and enable the validation accordingly. One can easily look at setting some globaly property or pass a parameter to the validation rule and in the implementation check for the condition. But this woud mean that the validation rule still fired. I wanted to do away with this extra firing when not required. </p><p>So in the textbox, I bound it's Tag property to the combo box's Text property as below. </p><div style="font-family: Lucida Sans Unicode; background: white; color: black; font-size: 8pt"><p style="margin: 0px"><span style="color: #a31515">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;</span><span style="color: #a31515">TextBox</span><span style="color: red"> Style</span><span style="color: blue">=&quot;{</span><span style="color: #a31515">StaticResource</span><span style="color: red"> validationStyle</span><span style="color: blue">}&quot;</span><span style="color: red"> Name</span><span style="color: blue">=&quot;textBox2&quot;</span><span style="color: red"> </span><span style="color: red">Tag</span><span style="color: blue">=&quot;{</span><span style="color: #a31515">Binding</span><span style="color: red"> ElementName</span><span style="color: blue">=comboBox1,</span><span style="color: red"> Path</span><span style="color: blue">=Text}&quot;</span><span style="color: red"> </span><span style="color: blue">/&gt;</span></p></div><p><!--EndFragment-->And then in the style that I had created for the&nbsp;textbox,&nbsp;I&nbsp;created a trigger, which would fire when the&nbsp;textbox's&nbsp;Tag property has a value of &quot;yes&quot;. In this trigger,&nbsp;I applied the binding with the validation, else it was a nomal binding (without the validation).&nbsp;The style was defined as below</p><div style="font-family: Lucida Sans Unicode; background: white; color: black; font-size: 8pt"><p style="margin: 0px"><span style="color: #a31515">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;</span><span style="color: #a31515">Style</span><span style="color: red"> x</span><span style="color: blue">:</span><span style="color: red">Key</span><span style="color: blue">=&quot;validationStyle&quot;</span><span style="color: red"> TargetType</span><span style="color: blue">=&quot;{</span><span style="color: #a31515">x</span><span style="color: blue">:</span><span style="color: #a31515">Type</span><span style="color: red"> TextBox</span><span style="color: blue">}&quot;&gt;</span></p><p style="margin: 0px"><span style="color: #a31515">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;</span><span style="color: #a31515">Setter</span><span style="color: red"> Property</span><span style="color: blue">=&quot;Text&quot;&gt;</span></p><p style="margin: 0px"><span style="color: #a31515">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;</span><span style="color: #a31515">Setter.Value</span><span style="color: blue">&gt;</span></p><p style="margin: 0px"><span style="color: #a31515">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;</span><span style="color: #a31515">Binding</span><span style="color: red"> Path</span><span style="color: blue">=&quot;Salary&quot;</span><span style="color: red"> Source</span><span style="color: blue">=&quot;{</span><span style="color: #a31515">StaticResource</span><span style="color: red"> getEmployee</span><span style="color: blue">}&quot;</span><span style="color: red">&nbsp;</span><span style="color: blue">/&gt;</span></p><p style="margin: 0px"><span style="color: #a31515">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;/</span><span style="color: #a31515">Setter.Value</span><span style="color: blue">&gt;</span></p><p style="margin: 0px"><span style="color: #a31515">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;/</span><span style="color: #a31515">Setter</span><span style="color: blue">&gt;</span></p><p style="margin: 0px"><span style="color: #a31515">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;</span><span style="color: #a31515">Style.Triggers</span><span style="color: blue">&gt;</span></p><p style="margin: 0px"><span style="color: #a31515">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;</span><span style="color: #a31515">Trigger</span><span style="color: red"> Property</span><span style="color: blue">=&quot;Tag&quot;</span><span style="color: red"> Value</span><span style="color: blue">=&quot;Yes&quot;&gt;</span></p><p style="margin: 0px"><span style="color: #a31515">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;</span><span style="color: #a31515">Setter</span><span style="color: red"> Property</span><span style="color: blue">=&quot;Text&quot;&gt;</span></p><p style="margin: 0px"><span style="color: #a31515">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;</span><span style="color: #a31515">Setter.Value</span><span style="color: blue">&gt;</span></p><p style="margin: 0px"><span style="color: #a31515">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;</span><span style="color: #a31515">Binding</span><span style="color: red"> Path</span><span style="color: blue">=&quot;Salary&quot;</span><span style="color: red"> Source</span><span style="color: blue">=&quot;{</span><span style="color: #a31515">StaticResource</span><span style="color: red"> getEmployee</span><span style="color: blue">}&quot;</span><span style="color: red"> UpdateSourceTrigger</span><span style="color: blue">=&quot;PropertyChanged&quot; &gt;</span></p><p style="margin: 0px"><span style="color: #a31515">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;</span><span style="color: #a31515">Binding.ValidationRules</span><span style="color: blue">&gt;</span></p><p style="margin: 0px"><span style="color: #a31515">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;</span><span style="color: #a31515">local</span><span style="color: blue">:</span><span style="color: #a31515">RangeValidationRule</span><span style="color: red"> MinSal</span><span style="color: blue">=&quot;1000&quot;</span><span style="color: red"> MaxSal</span><span style="color: blue">=&quot;10000&quot; /&gt;</span></p><p style="margin: 0px"><span style="color: #a31515">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;/</span><span style="color: #a31515">Binding.ValidationRules</span><span style="color: blue">&gt;</span></p><p style="margin: 0px"><span style="color: #a31515">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;/</span><span style="color: #a31515">Binding</span><span style="color: blue">&gt;</span></p><p style="margin: 0px"><span style="color: #a31515">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;/</span><span style="color: #a31515">Setter.Value</span><span style="color: blue">&gt;</span></p><p style="margin: 0px"><span style="color: #a31515">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;/</span><span style="color: #a31515">Setter</span><span style="color: blue">&gt;</span></p><p style="margin: 0px"><span style="color: #a31515">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;/</span><span style="color: #a31515">Trigger</span><span style="color: blue">&gt;</span></p><p style="margin: 0px"><span style="color: #a31515">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;/</span><span style="color: #a31515">Style.Triggers</span><span style="color: blue">&gt;</span></p><p style="margin: 0px"><span style="color: #a31515">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;/</span><span style="color: #a31515">Style</span><span style="color: blue">&gt;</span></p></div><p><!--EndFragment-->This got me the behavior&nbsp;I was looking for. The UpdateSourceTrigger was used&nbsp;to overcome the default value of lost focus for textbox, so that validation could fire as the user would be typing. There are two subtle issues though with this implementation</p><p>1.&nbsp;The binding expression is set again in the trigger. Ideally it should have been that i query the existing binding expression and add validation rule to it. However that would&nbsp;have meant that I will need&nbsp;to add the reverse trigger also to remove the validation rule. </p><p>2.&nbsp;After changing the value in the combo box&nbsp;to&nbsp;yes, the validation&nbsp;won't fire immediately.&nbsp;I had to type something in the textbox for it&nbsp;to work. I could handle the combo box selection changed event handler to address this. </p><p>You can welcome to try to add these behaviors&nbsp;and revert. Hope this helps ! <br />&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p>]]>
    </content>
</entry>
<entry>
    <title>Silverlight 2 and Web Accessibility</title>
    <link rel="alternate" type="text/html" href="http://www.infosysblogs.com/microsoft/2009/06/silverlight_2_and_web_accessib.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://infosysblogs.com/microsoft-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=381" title="Silverlight 2 and Web Accessibility" />
    <id>tag:www.infosysblogs.com,2009:/microsoft//1.381</id>
    
    <published>2009-06-04T02:24:17Z</published>
    <updated>2009-06-04T02:30:40Z</updated>
    
    <summary>One question I have faced multiple times since the inception of Silverlight technology is how well does it support Web Accessibility requirements?  The support for accessibility was quite limited in Silverlight 1; but with Silverlight 2 there have been significant improvements.
</summary>
    <author>
        <name>Chandan Gokhale</name>
        
    </author>
            <category term="Microsoft Design Technologies" />
    
    <content type="html" xml:lang="en" xml:base="http://www.infosysblogs.com/microsoft/">
        <![CDATA[<p>One question I have faced multiple times since the inception of Silverlight technology is how well does it support Web Accessibility requirements?<span>&nbsp; </span>The support for accessibility was quite limited in Silverlight 1; but with Silverlight 2 there have been significant improvements.</p>]]>
        <![CDATA[<p>The three part series, <span><a href="http://www.code-magazine.com/article.aspx?quickid=0810062&amp;page=1">Creating Accessibility-aware Silverlight 2 Content</a>, </span>written by Mark Rideout is the best compilation features and examples on this topic. It walks the designers as well as developers through a series of things they can do to ensure that the RIA application they building is compliant with web accessibility requirements. </p>]]>
    </content>
</entry>
<entry>
    <title>First startup experience after upgrading Outlook 2007 with SP2</title>
    <link rel="alternate" type="text/html" href="http://www.infosysblogs.com/microsoft/2009/06/outlook_2007_with_sp2_start_up_1.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://infosysblogs.com/microsoft-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=380" title="First startup experience after upgrading Outlook 2007 with SP2" />
    <id>tag:www.infosysblogs.com,2009:/microsoft//1.380</id>
    
    <published>2009-06-01T03:35:00Z</published>
    <updated>2009-06-01T04:05:38Z</updated>
    
    <summary>Amartya commented on my previous Windows 7 blog post that network activity notification icon issue would be resolved by upgrading to Office 2007 SP2 (http://www.infosysblogs.com/microsoft/2009/05/windows_7_system_tray.html#comment-123052). Over the weekend I upgraded my system with Office 2007 SP2. As i suspected still...</summary>
    <author>
        <name>Naveen Kumar</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.infosysblogs.com/microsoft/">
        <![CDATA[<p>Amartya commented on my previous Windows 7 blog post that network activity notification icon issue would be resolved by upgrading to Office 2007 SP2 (<a href="http://www.infosysblogs.com/microsoft/2009/05/windows_7_system_tray.html#comment-123052">http://www.infosysblogs.com/microsoft/2009/05/windows_7_system_tray.html#comment-123052</a>). Over the weekend I upgraded my system with Office 2007 SP2. As i suspected still my network notification icon mismatch problem persists <img title="Frown" alt="Frown" src="http://www.infosysblogs.com/microsoft-mt/mt-static/plugins/TinyMCE/jscripts/tiny_mce/plugins/emotions/images/smiley-frown.gif" border="0" />&nbsp;</p><p>Today I find that Outlook is taking too much time to start up.&nbsp;I got a dialog that system is Preparing Outllook for first use. After 10 mins when I looked at the dialog I found the following ( 45 mins remaning).&nbsp;Check the below picture. &nbsp;</p><p>&nbsp;<img width="438" height="337" alt="Outlook.PNG" src="http://www.infosysblogs.com/microsoft/Outlook.PNG" border="0" /> </p><p>Upon further investigation found that there is a KB article&nbsp;at <a href="http://support.microsoft.com/kb/968774">http://support.microsoft.com/kb/968774</a>. Check the&nbsp;section &quot;First Startup experience&quot;.&nbsp; As mentioned in the article delays are&nbsp;because &nbsp;&quot;Outlook must update internal PST data structures that are used in SP2 performance optimizations&quot;</p><p>Though the above dialog shows that 45 mins remaining. Overall it took about 30 mins to start&nbsp;Outlook on my machine. So please check the KB article on the steps to mitigate this delay. Don't fret and fume if you are in hurry to check mails after upgrading to SP2.&nbsp;I am yet to check up the&nbsp;performance optimizations that have been promised in SP2. </p>]]>
        
    </content>
</entry>
<entry>
    <title>“Oslo” May 2009 CTP Released!</title>
    <link rel="alternate" type="text/html" href="http://www.infosysblogs.com/microsoft/2009/05/oslo_may_2009_ctp_released.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://infosysblogs.com/microsoft-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=379" title="“Oslo” May 2009 CTP Released!" />
    <id>tag:www.infosysblogs.com,2009:/microsoft//1.379</id>
    
    <published>2009-05-28T02:45:14Z</published>
    <updated>2009-05-28T02:54:19Z</updated>
    
    <summary>Yesterday Microsoft released the May 2009 CTP for “Oslo”. This was a surprise release for me as I was not expecting another release till August this year. But as promised they are coming out with frequent releases to keep the community interested and engaged, which I think is good. To know more about what’s new in this release and what has changed, I would suggest you go through the blog post by Kraig, Kent, and Chris (editors on the &quot;Oslo&quot; Developer Center) and the release notes. You can download the CTP from here.</summary>
    <author>
        <name>E. Krishna Kumar</name>
        
    </author>
            <category term="Software Factory" />
    
    <content type="html" xml:lang="en" xml:base="http://www.infosysblogs.com/microsoft/">
        <![CDATA[<p align="justify">Yesterday Microsoft released the May 2009 CTP for &ldquo;Oslo&rdquo;. This was a surprise release for me as I was not expecting another release till August this year<img title="Smile" alt="Smile" src="http://www.infosysblogs.com/microsoft-mt/mt-static/plugins/TinyMCE/jscripts/tiny_mce/plugins/emotions/images/smiley-smile.gif" border="0" />. But as promised they are coming out with frequent releases to keep the community interested and engaged, which I think is good. To know more about what&rsquo;s new in this release and what has changed, I would suggest you go through the blog post by <a href="http://blogs.msdn.com/modelcitizen/archive/2009/05/27/about-the-oslo-may-2009-ctp.aspx" target="_blank">Kraig, Kent, and Chris</a> (editors on the <a href="http://msdn.microsoft.com/oslo/" target="_blank">&quot;Oslo&quot; Developer Center</a>) and the <a href="http://msdn.microsoft.com/en-us/oslo/releasenotes.aspx" target="_blank">release notes</a>. You can download the CTP from <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=827122a5-3ca0-4389-a79e-87af37cbf60d&amp;displaylang=en" target="_blank">here</a>.</p>]]>
        <![CDATA[<p align="justify">The biggest news is that Microsoft finally decided to release Quadrant (GUI tool to interact with domain models stored in the repository and to create Visual DSLs) this time around and what they say is that this is a much improved version from what we saw in the VPC that was given out in the last PDC. From what I hear they have also worked a lot on improving the performance of Intellipad. I just hope it stops crashing frequently and opens up faster<img title="Smile" alt="Smile" src="http://www.infosysblogs.com/microsoft-mt/mt-static/plugins/TinyMCE/jscripts/tiny_mce/plugins/emotions/images/smiley-smile.gif" border="0" />! The M language specification as expected has undergone changes and additions and it would be interesting to see how much easier have creating domain models and DSLs using the language become.</p><p align="justify">The team has also updated the <a href="http://msdn.microsoft.com/hi-in/library/cc709420(en-us).aspx" target="_blank">documentation</a> for the &ldquo;Oslo&rdquo; platform on MSDN. I think the lack of sufficient documentation has been one of the key challenges that people faced in their effort to understand the platform and I hope Microsoft comes out with better documentation for things like customizing Intellipad, adding new modes, error handling within Intellipad, System.Dataflow APIs etc.</p>]]>
    </content>
</entry>
<entry>
    <title>Windows 7</title>
    <link rel="alternate" type="text/html" href="http://www.infosysblogs.com/microsoft/2009/05/windows_7_system_tray.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://infosysblogs.com/microsoft-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=378" title="Windows 7" />
    <id>tag:www.infosysblogs.com,2009:/microsoft//1.378</id>
    
    <published>2009-05-27T03:31:01Z</published>
    <updated>2009-05-27T04:20:51Z</updated>
    
    <summary>Few weeks back I upgraded my Windows vista enterprise to Windows 7 Ultimate RC build 7100. So i have retained all my earlier programs. It works great, there are lot of cool features that have been extolled by many in...</summary>
    <author>
        <name>Naveen Kumar</name>
        
    </author>
            <category term="VS2008" />
    
    <content type="html" xml:lang="en" xml:base="http://www.infosysblogs.com/microsoft/">
        <![CDATA[<p>Few weeks back I upgraded my Windows vista enterprise to Windows 7 Ultimate RC build 7100. So i have retained all my earlier programs. It works great, there are lot of cool features that have been extolled by many in the blogosphere, so wont touch upon it. </p><p>Listing few problems I&nbsp;came across&nbsp;with this windows version. I searched on technet and msdn forums and didnt find any solutions. </p><p>1. Once in a while Windows 7 desktop UI flickers. When it flickers it flickers violently. Entire Task bar and all the icons go blank. I am yet to figure out the reasons/conditions under which it behaves like this. </p><p>2. Wrong system icon tray notifications. Though I have internet connection, the net work notiifcation displays&nbsp;incorrect meesage that &quot;no internet access&quot; as shown in the below image. This is true for both LAN connection and Wireless Lan connection. </p><p><img width="313" height="189" alt="Internet Access.png" src="http://www.infosysblogs.com/microsoft/Internet%20Access.png" border="0" /></p><p>3. After Upgrade from Windows Vista, my VPN CheckPoint SecureClient&nbsp;was not starting. Went to Services MMC and found that &quot;Check Point VPN-1 Securemote service&quot; is dependent on VPN-1 module that has been deleted or marked for deletion. Tried many things but finally reinstallation of the Secure Client Software did the trick. After reinstalling i found that &quot;Check Point SSL Network Extender&quot; has been added to services list. In the Log On options, &quot;Allow Service to interact with Desktop&quot; has been checked. </p><p>4. e Trust Anti Virus 8.1 version from Computer Associates. This is not compatible with Windows 7. It is installed properly and works. Just that it does not download the latest signature files. Add to this, Action Center shows me that this Antivirus software is not compatible and suggests me other compaines anti virus programs. Being on the corporate network cannot use anti virus&nbsp;software not recommended by our network group. Currently working with our network team to sort it out. This may force me to take my&nbsp;laptop off the network or force me to down grade my o/s to Vista. </p><p>5. Not exactly related to Windows 7. IE 8 that comes as a default browser is not compatible with Outlook Web Access. This requires Exchange Server to be upgraded with a patch to allow DHTML controls on browser. Any patch management on servers is a huge task for network folks so would take take. Some of our internal IS apps are not compatible with IE 8. So I am planning to install a VPC image on my laptop with IE 6 as browser. Are there any better ways to work around it??</p><p>If you are aware of any solutions to the above problems, please point me to them.</p>]]>
        
    </content>
</entry>
<entry>
    <title>Custom Classification Types and Formats for your Textual DSL</title>
    <link rel="alternate" type="text/html" href="http://www.infosysblogs.com/microsoft/2009/05/custom_classification_types_an.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://infosysblogs.com/microsoft-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=377" title="Custom Classification Types and Formats for your Textual DSL" />
    <id>tag:www.infosysblogs.com,2009:/microsoft//1.377</id>
    
    <published>2009-05-19T06:07:51Z</published>
    <updated>2009-05-19T06:40:56Z</updated>
    
    <summary>Classification types and their formats are defined to perform text formatting in Intellipad for your textual DSL. For example, you would want to define text formatting for your language tokens like keywords, comments, values etc. so as to make it more readable while viewing/editing inside the Intellipad. The out of the box classification types as well as their formats are defined in ClassificationTypes.xcml and ClassificationFormats.xcml respectively under the folder: C:\Program Files\Microsoft Oslo SDK 1.0\Bin\Intellipad\Settings folder.
</summary>
    <author>
        <name>E. Krishna Kumar</name>
        
    </author>
            <category term="Software Factory" />
    
    <content type="html" xml:lang="en" xml:base="http://www.infosysblogs.com/microsoft/">
        <![CDATA[<p align="justify">Classification types and their formats are defined to perform text formatting in Intellipad for your textual DSL. For example, you would want to define text formatting for your language tokens like keywords, comments, values etc. so as to make it more readable while viewing/editing inside the Intellipad. The out of the box classification types as well as their formats are defined in ClassificationTypes.xcml and ClassificationFormats.xcml respectively under the folder: <em>C:\Program Files\Microsoft Oslo SDK 1.0\Bin\Intellipad\Settings</em> folder.</p>]]>
        <![CDATA[<p align="justify">The out of the box classification types are fine and do cover most of the tokens that you will usually find in any textual DSL, but what if we want to have our DSL specific classification types and formats? To my knowledge there are couple of ways in which you could do this today.</p><ul><li><div align="justify">Add a new classification type to the ClassificationTypes.xcml file in the Settings folder, as shown below:</div></li></ul><blockquote><p align="left"><strong>&lt;act:Export Type='mvstc:ClassificationTypeDefinition'&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;ls:ClassificationType Name='CustomKeyword' DerivesFrom='text' /&gt;<br />&lt;/act:Export&gt;</strong></p></blockquote><blockquote><p align="justify">To define the format for the classifiaction type that we just added, we need to define the format in the ClassificationFormats.xcml file in the Settings folder, as shown below:</p><p align="left"><strong>&lt;act:Export Name='{}{Microsoft.Intellipad}ClassificationFormat'&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;ls:ClassificationFormat Name='CustomKeyword'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FontFamily='Consolas'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FontWeight='Bold'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Foreground='#FF2B91AF' /&gt;<br />&lt;/act:Export&gt;</strong></p></blockquote><blockquote><p align="justify">Make sure that &ldquo;Name&rdquo; attribute while defining the format should be same as the Name of the classification type that we had defined in the previous step.</p><p align="justify">In your DSL MGrammar code you can use the classification type created above in the following manner:</p><p>@{Classification[&quot;CustomKeyword&quot;]}<br /><strong>token</strong> MyToken = &ldquo;SampleToken&rdquo;;</p></blockquote><blockquote><p align="justify">Now if you save the .xcml files, close (if already open) and open up Intellipad, you will be able to see the new classification type in action.</p></blockquote><ul><li><div align="justify">Now the second option is to have a separate .xcml file for our DSL, where we could specify the classification types specific to our DSL and can be deployed when we install our own mode into Intellipad. In order to define the same classification type specified above in a separate .xcml file, you need to first create a file with the extension .xcml (Name doesn&rsquo;t matter, but something related to your DSL would be better), and then specify the type and the format as shown below:</div></li></ul><blockquote><p align="left"><strong>&lt;act:Exports xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:act='clr-namespace:System.ComponentModel.Activation;assembly=Activation'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:mvstc='clr-namespace:Microsoft.VisualStudio.Text.Classification;assembly=Microsoft.VisualStudio.Platform.Editor'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:ls='clr-namespace:Microsoft.Intellipad.LanguageServices;assembly=Microsoft.Intellipad.Core'&gt;<br />&nbsp; </strong></p><p align="left"><strong>&nbsp; &nbsp;&lt;act:Export Type='mvstc:ClassificationTypeDefinition'&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;ls:ClassificationType Name='CustomKeyword' DerivesFrom='text' /&gt;<br />&nbsp; &nbsp;&lt;/act:Export&gt;<br />&nbsp; &nbsp;&lt;act:Export Name='{}{Microsoft.Intellipad}ClassificationFormat'&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;ls:ClassificationFormat Name='CustomKeyword'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FontFamily='Consolas'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FontWeight='Bold'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Foreground='#FF2B91AF' /&gt;<br />&nbsp; &nbsp;&lt;/act:Export&gt;<br />&lt;/act:Exports&gt;</strong></p><p align="justify">Once you have saved the file, you can either put this file under the Settings folder or you can create a new directory for your DSL under the <em>C:\Program Files\Microsoft Oslo SDK 1.0\Bin\Intellipad\Components</em> folder, and put it in that directory to enable Intellipad to pick up the types and their formats.</p></blockquote><p align="justify">As per my understanding, Intellipad by default picks up the classification types by scanning the files with .xcml extension both in the Settings as well as the sub folders under the Components folder and picking up all the Export elements with the type as ClassificationTypeDefinition. Considering this fact, to me the second option would be a better one to go for, when it comes to ease of deployment and maintenance. But when it comes to performance, I feel having all the types in one file would be a better option. Hence if you have a lot of custom classification types that you would be creating for your DSL then I would suggest you go for the second option, but if the number of classification types you are going to create are less in number, then it would be better to define those in the ClassificationTypes.xcml and ClassificationFormats.xcml files under the Settings folder.</p><p>&nbsp;</p>]]>
    </content>
</entry>
<entry>
    <title>Caching Controversy!!!</title>
    <link rel="alternate" type="text/html" href="http://www.infosysblogs.com/microsoft/2009/05/caching_controversy_1.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://infosysblogs.com/microsoft-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=376" title="Caching Controversy!!!" />
    <id>tag:www.infosysblogs.com,2009:/microsoft//1.376</id>
    
    <published>2009-05-07T12:31:42Z</published>
    <updated>2009-05-07T12:55:51Z</updated>
    
    <summary>While defining .net architecture several times we come across scenarios where multiple server side caching options needs to be evaluated and dealt with, with .Net 4.0 it is to be seen whether these decision get simplified or further complicated.Microsoft Project...</summary>
    <author>
        <name>Sudhanshu Madhaorao Hate</name>
        
    </author>
            <category term=".net 4.0" />
    
    <content type="html" xml:lang="en" xml:base="http://www.infosysblogs.com/microsoft/">
        <![CDATA[<p>While defining .net architecture several times we come across scenarios where multiple server side caching options needs to be evaluated and dealt with, with <strong>.Net 4.0</strong> it is to be seen whether these decision get simplified or further complicated.</p><p>Microsoft Project code name &ldquo;<strong>Velocity</strong>&rdquo;, part of <strong>.net 4.0</strong> is Microsoft&rsquo;s highly scalable in memory cache framework for all kinds of data in distributed applications. Usually caching is employed in application to improve the performance and scalability. Good candidates for caching data is static or master data e.g. product list. Recommended practice is to cache master or reference or lookup data as it hardly changes over time but at times scenarios exists where transactional or session specific data needs to be cached for valid reasons. </p>]]>
        <![CDATA[<p>Velocity provides a framework where by the identified data can be cached in middle tier server memory and database round trip for the same can be avoided. Objects can be added in cache using simple Get or Put calls.</p><p>Velocity can be hosted either within the application (<strong>embedded</strong>) or as an independent <strong>service</strong>. If hosted within the application, the distributed cache shares the memory with the application. If hosted as service, client access the cache using client APIs.</p><p>To ensure every time the request to cache is fulfilled and the cache returns the correct results in quick time, distributed cache can be <strong>partitioned, clustered and or replicated</strong>. Nodes can be added or removed dynamically to and from clusters to increase the throughput or decrease the response time. Velocity will do implicit load balancing and new data will be cached in new node and existing data will also be migrated to new node. </p><p>Clients can either directly query the Cache host which in turn returns the correct cached object or client can locally host the routing table which keeps track of where the distributed cached objects are and can query cached objects directly.</p><p>To ensure cache <strong>consistency</strong>, Velocity supports Notification services, optimistic and pessimistic concurrency. Expiration of cache is time based and cache object eviction can kick in based on least recently used object algorithm or high water mark of the application.</p><p>Velocity provides SessionStoreProvider class that plugs into Asp.net session storage provider model and stores session state. Using Velocity ensures non sticky session routing and ensures session data is available across clusters.</p><p>For application specific data the cache can be hosted or embedded within the application. For data required enterprise wide or cuts across multiple applications should be exposed using Cache Service. In the enterprise architecture, Velocity can very well sit on top of Master Data management applications and negotiate the frequent Database hits from client applications.</p><strong>Caching options<br /></strong><p>APIs from System.Web.Caching namespace can be used only in Web applications, the problem with directly using these APIs in the application is every developer uses his creativity in dealing uniquely with cache and hence it is recommended to use Enterprise Library Caching application block to standardize the coding/usage pattern. With 4.0 the new namespace System.Caching will take over for specifically inproc caching. System.Web.Caching will remain to support backward compatibility.</p><p>In process cache is the fastest of all the caching techniques. <strong>Enterprise library Caching application block</strong> using in-process cache has limitations on the scalability, reliability and availability front, when the asp.net worker process gets recycled the data in the in memory cache is lost. In Web garden, where multiple worker processes exists, the data integrity issues surface from the limitation due to synchronization of multiple copies of cache. In Web farm scenario, where multiple servers exist, a standalone cache is unaware of other servers and their respective state which again leads to data integrity issues. In process cache cannot usually grow beyond what the application process can handle where as distributed cache can grow in size through distribution.</p><p>Outproc technique <strong>using Asp.net State Server/service </strong>on 32bit machine can grow up to 2GB of memory space, up to maximum 3 GB if you use the /3GB switch. As 32bit servers are becoming legacy and 64bit becomes main stream, this limitation of memory space will not hold long. If run with single state server, the state service technique has single point of failure. If State server is clustered, it has the limitations of data synchronization across cluster. If the state service or the machine on which it is running goes down, clustered state service will still not be able to recover the state of the data e.g. Ready to check out shopping basket. Though you can still continue to be in the application and may or may not have to re login into the application, selecting and adding items in to the basket will have to be started all over again, ultimately hampering the user experience. </p><p>Outproc techniques <strong>using SQL Server</strong> to some extent resolve above mentioned data integrity and scalability issues, but the idea behind caching is to save the database roundtrip, and here the data is being cached in another SQL Server database instance defeats part of the objective. In customer scenarios where SQL Server cannot be used as caching database, custom provider for Oracle or for that matter any database can be used to extend it to respective database but the database roundtrip limitation holds.</p><p>Till date if the architecture needs to deal with distributed caching problem, it has to live with the limitations of out of the box outproc techniques or rely on 3rd party components like NCache, <br />ScaleoutState Server, StateMirror, etc. Having out of the box support for distributed cache from .net 4.0 Velocity framework would help deal with such scenarios without additional investments.</p><p>In physics, Velocity is ratio of change of distance to change in time in specific direction. The Microsoft framework Velocity certainly attempts to fulfill this definition by making the data available to end user in quick time <span><span>J</span></span></p>]]>
    </content>
</entry>
<entry>
    <title>Plan, Deliver, Operate, Manage – Microsoft Operations Framework (MOF)</title>
    <link rel="alternate" type="text/html" href="http://www.infosysblogs.com/microsoft/2009/05/plan_deliver_operate_manage_mi.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://infosysblogs.com/microsoft-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=375" title="Plan, Deliver, Operate, Manage – Microsoft Operations Framework (MOF)" />
    <id>tag:www.infosysblogs.com,2009:/microsoft//1.375</id>
    
    <published>2009-05-04T06:30:16Z</published>
    <updated>2009-05-04T06:43:27Z</updated>
    
    <summary><![CDATA[During the beginning of this decade as Visual Studio and .NET created&nbsp;&nbsp;waves in the industry for its robust infrastructure and rapid application development and interoperability, Microsoft came up with its &ldquo;Solutions Framework&rdquo; (MSF) to catalyze its adoption. Microsoft Solutions Framework...]]></summary>
    <author>
        <name>Venkatesh Rajagopalan Narayanan</name>
        
    </author>
            <category term="Solution Accelerators" />
    
    <content type="html" xml:lang="en" xml:base="http://www.infosysblogs.com/microsoft/">
        <![CDATA[<p>During the beginning of this decade as Visual Studio and .NET created&nbsp;<span>&nbsp;</span>waves in the industry for its robust infrastructure and rapid application development and interoperability, Microsoft came up with its &ldquo;Solutions Framework&rdquo; (MSF) to catalyze its adoption. Microsoft Solutions Framework addresses the concerns of Developers, Agility and Processes.</p><p>Now, it&rsquo;s time to think big. Microsoft Operations framework (MOF) addresses the entire gamut of challenges cutting&nbsp; across CIOs, managers, admins and developers.</p>]]>
        <![CDATA[<p>Microsoft <span>&nbsp;</span>Operations Framework (MOF) consists of integrated best practices, principles, and activities that provide comprehensive guidelines for achieving reliability for IT solutions and services. As Always, it&rsquo;s a simple interface beneath a robust infrastructure. MOF provides question-based guidance that allows you to determine what is needed for your organization now, as well as activities that will keep the IT organization running efficiently and effectively in the future.</p><p>The guidance in the Microsoft Operations Framework encompasses all of the activities and processes involved in managing an IT service: its conception, development, operation, maintenance, and&mdash;ultimately&mdash;its retirement.&nbsp;MOF organizes these activities and processes into Service Management Functions (SMFs), which are grouped together in phases that mirror the IT service lifecycle. Each SMF is anchored within a lifecycle phase and contains a unique set of goals and outcomes supporting the objectives of that phase.&nbsp;</p>MOF guidance is available at <span><a href="http://www.microsoft.com/technet/solutionaccelerators/cits/mo/mof/default.mspx">http://www.microsoft.com/technet/solutionaccelerators/cits/mo/mof/default.mspx</a>.<br /></span>]]>
    </content>
</entry>
<entry>
    <title>Microsoft Surface Technology: Some Field Observations</title>
    <link rel="alternate" type="text/html" href="http://www.infosysblogs.com/microsoft/2009/05/microsoft_surface_technology_s.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://infosysblogs.com/microsoft-mt/mt-atom.cgi/weblog/blog_id=1/entry_id=374" title="Microsoft Surface Technology: Some Field Observations" />
    <id>tag:www.infosysblogs.com,2009:/microsoft//1.374</id>
    
    <published>2009-05-01T14:28:13Z</published>
    <updated>2009-05-01T14:32:08Z</updated>
    
    <summary>Yesterday, I hosted a major transport agency in Atlanta at the Atlanta MTC to demo and showcase Microsoft Surface Technology.  Multi-touch based interactivity is already main stream - thanks largely to iPhone and similar handhelds, but it is still amazing to watch the way people respond to the way Surface based applications. 
</summary>
    <author>
        <name>Chandan Gokhale</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.infosysblogs.com/microsoft/">
        <![CDATA[<p>Yesterday, I hosted a major transport agency in Atlanta at the <a href="http://www.microsoft.com/mtc/locations/atlanta.mspx">Atlanta MTC</a> to demo and showcase Microsoft Surface Technology.<span>&nbsp; </span>Multi-touch based interactivity is already main stream - thanks largely to iPhone and similar handhelds, but it is still amazing to watch the way people respond to the way Surface based applications. </p>]]>
        <![CDATA[<p>The multi-touch part is cool and all but what really make people truly marvel at this new technology platform is the multi-user and object recognition capabilities of Surface technology. Being able to manipulate portions of user interface while someone else is also using the same application is a new experience for most people. Like I have mentioned in my previous posts, this multi-user capability draws people into genuinely collaborative actions. </p><p>While multi-user nature of Surface technology allows for unusual user experiences, the object recognition capability gets people thinking about true power of intelligent ambient systems and how it could solve every day problems around us.<span>&nbsp; </span>With Bluetooth capabilities that allow communication between Surface and devices like mobile phones, the Surface technology gives you a very powerful platform to build business solutions that leverage natural user interface (NUI) and connect them seamlessly to the power of mobile computing.</p><p>As a designer, building Surface applications has been a real education though. Mental reflexes trained in building interactions that are triggered by instantaneous events - like click of a button or mouse click &ndash; need to be forcibly unlearned as gestural interactions are more dragged out and spread over time. Thanks largely to the very well written document that accompanies the Surface SDK, the process of learning to design for Surface can be more focused and productive. The document lists some core principals - like <strong>Seamlessness, Social Orientation, Spatial Orientation, Contextual Environments and Super Realism </strong>that are well explained and come handy to bring out the uniqueness of Surface based interactions.</p><p>For anyone wanting to learn about Multi-touch devices and how to design for multi-touch devices, one very comprehensive resource is the site put together by Bill Buxton - <a href="http://www.billbuxton.com/multitouchOverview.html">Multi-Touch Systems that I Have Known and Loved</a>. I have used it extensively in my learning process of designing for Surface Platform.</p>]]>
    </content>
</entry>

</feed> 

