<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>mszCool's thoughts and cents revealed : Architectural Thoughts</title><link>http://blogs.msdn.com/mszcool/archive/tags/Architectural+Thoughts/default.aspx</link><description>Tags: Architectural Thoughts</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Identity Interop Update for our Interoperability Council: ADFS v2 and WIF Interop with Sun OpenSSO, Novell Access Manager, CA, OpenID and Sun Metro / WSIT</title><link>http://blogs.msdn.com/mszcool/archive/2009/11/05/identity-interop-update-for-our-interoperability-council-adfs-v2-and-wif-interop-with-sun-opensso-novell-access-manager-ca-openid-and-sun-metro-wsit.aspx</link><pubDate>Thu, 05 Nov 2009 13:30:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9917974</guid><dc:creator>mszCool</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mszcool/comments/9917974.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mszcool/commentrss.aspx?PostID=9917974</wfw:commentRss><description>&lt;p&gt;As today we’re going to host our 3rd Microsoft Austria Interoperability Council, I thought that in addition to our existing results we’re presenting today, it’s a good time to publish an update of my &lt;strong&gt;Identity Interoperability Demos and samples&lt;/strong&gt; I created earlier this year.&lt;/p&gt;  &lt;p&gt;Furthermore, &lt;strong&gt;based on the feedback of members from our interop-council&lt;/strong&gt;, I’d like to provide a few links with more information on Identity Interoperability between Microsoft Windows Identity Framework (WIF) and Active Directory Federation Services v2 (ADFS v2- both formerly codenamed Geneva Framework and Geneva Server).&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;The Foundation – OASIS Identity Metasystem&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Primarily the foundation for all these interoperability thoughts is the Identity Metasystem vision originally started by &lt;a href="http://identityblog.com/" target="_blank"&gt;Kim Cameron&lt;/a&gt; (Microsoft – &lt;a href="http://msdn.microsoft.com/en-us/library/ms996422.aspx" target="_blank"&gt;see article on MSDN&lt;/a&gt;). More information on the official standards can be found on the following link:&lt;/p&gt;  &lt;p align="center"&gt;&lt;a title="http://docs.oasis-open.org/imi/identity/v1.0/identity.html" href="http://docs.oasis-open.org/imi/identity/v1.0/identity.html"&gt;http://docs.oasis-open.org/imi/identity/v1.0/identity.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Sun Metro / WSIT Interoperability&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The interop-identity PoC I’ve created demonstrates interoperability with Sun Metro / Web Services Interoperability Toolkit. For the PoC you need a Glassfish v2 application sever to host a Java-based Relying Party and integrate this RP with a .NET-based Security-Token-Service (STS) and a .NET-based client. The PoC shows, how you can integrate Java-based services in a Windows-based security-infrastructure based on standards.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://www.mszcool.at/blog/2009/20091105_Identity_Interop_Geneva_Beta2.zip" target="_blank"&gt;Click here to download the lates version of my ID-Interop-PoC&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/mszcool/archive/2009/01/23/identity-interoperability-geneva-beta-1-sts-with-net-client-and-netbeans-6-5-metro-1-3-wsit-java-client-working-again.aspx" target="_blank"&gt;Click here to view my previous blog-entry on how-to setup the PoC&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Note, that the download package is a little big larger this time. You don’t need to download any additional bits. Everything including all Java-Pre-Requisites is included, except Microsoft Geneva Beta 2 (&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=118c3588-9070-426a-b655-6cec0a92c10b" target="_blank"&gt;click here to download&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Interoperability with CA, Novell Access Manager, Sun Open SSO&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;While working with colleagues (Michael Steinböck, Dominik Paiha from Microsoft) on a proposal for a customer (who is also a member of the council) on identity interoperability, we’ve collected a number of additional resources on identity interoperability. First and foremost I would like to mention papers on interop between Sun Open SSO, Novell Access Manager and CA.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=9eb1f3c7-84da-40eb-b9aa-44724c98e026#filelist" target="_blank"&gt;Click here to download Interop-Whitepapers for ADFS v2 (Geneva)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;OpenID Interoperability with Microsoft ADFS v2 and WIF&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Also a question continuously asked is the interoperability between the Microsoft-platform and OpenID. Of course OpenID can be used as a means of authentication on top of a WIF/ADFSv2-based STS.&lt;/p&gt;  &lt;p&gt;Thanks to &lt;strong&gt;Matias Woloski&lt;/strong&gt; who is working very close with Microsoft’s patterns &amp;amp; practices team, you can find more information and a conceptual view below (click image to enlarge):&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.southworks.net/mwoloski/2009/07/14/openid-ws-fed-protocol-transition-sts/" target="_blank"&gt;Click to read Matias’ blog entry on OpenID integration&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://dotnetopenauth.net:8000/" target="_blank"&gt;Click to get to DotNetOpenAuth, a library for .NET-OpenID-integration&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="https://www.ohloh.net/p/dotnetopenauth/download?package=DotNetOpenAuth&amp;amp;release=3.2.2" target="_blank"&gt;Download .NET Open Auth here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.mszcool.at/blog/2009/20091105_OpenIDInterop.jpg" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="20091105_OpenIDInterop[1]" border="0" alt="20091105_OpenIDInterop[1]" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteropUpdateforourInteroperabil_C26B/20091105_OpenIDInterop%5B1%5D_3.jpg" width="423" height="326" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Novell Bandit Project provides Information-Card Interoperability&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteropUpdateforourInteroperabil_C26B/bandit-logo_2.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="bandit-logo" border="0" alt="bandit-logo" align="right" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/IdentityInteropUpdateforourInteroperabil_C26B/bandit-logo_thumb.gif" width="73" height="70" /&gt;&lt;/a&gt; In partnership with Microsoft, Novell is working on an initiative called “The Bandit Project”. This initative provides components and source code to implement a complete Identity Metasystem-based solution with STS, RP and even identity selectors (DigitalMe) for clients. To get these components to ensure complete interoperability of your Java- and browser-based components and end user experience on Linux, click the link below:&lt;/p&gt;  &lt;p align="center"&gt;&lt;a title="http://www.bandit-project.org/" href="http://www.bandit-project.org/"&gt;http://www.bandit-project.org/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Identity Interoperability with IBM Tivoli&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;At last year’s PDC 2008, &lt;a href="http://blogs.msdn.com/vbertocci" target="_blank"&gt;Vittorio Bertocci&lt;/a&gt; and &lt;a href="http://identityblog.com/" target="_blank"&gt;Kim Cameron&lt;/a&gt; demonstrated interoperability with IBM Tivoli access manager and ADFS v2 / Geneva Framework.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/vbertocci/archive/2008/10/28/identity-pdc08-roadmap-session-with-kim-cameron-himself-yours-truly.aspx" target="_blank"&gt;Take a look at Vittorio’s blog here for more details.&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://channel9.msdn.com/pdc2008/BB11/" target="_blank"&gt;Click to view the session, directly, and get the info from live-demos.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Interoperability between Shibboleth and ADFS&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Microsoft published a guide on interoperability between Shibboleth and the Microsoft platform for it’s previous version of Active Directory Federation Services, already. Of course this guide is still available.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=0EBC0F18-C8F5-4699-AA36-5B6562448912&amp;amp;displaylang=en" target="_blank"&gt;Download Shibboleth – ADFS Interop here.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;With ADFS v2, Microsoft is implementing the SAML 2 protocol in addition to the WS-* protocols which are available in both, ADFS v2 and the Windows Identity Framework. Having that said, interoperability will be given for Shibboleth and ADFS v2, as well. I’ve found the following references on this interoperability and I’ll continue my search to find or build more concrete step-by-step guides and samples on this kind of interoperability:&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://identity-des.com/2008/11/02/geneva-saml-interop-with-a-lot-of-help-from-our-friends/" target="_blank"&gt;Geneva and SAML 2 from Don Schmidt of the identity-team&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://identity-des.com/2008/10/28/microsoft-geneva-server-supports-saml-20/" target="_blank"&gt;SAML 2 protocol and Shibboleth Interop-Announcement&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;&lt;strong&gt;&lt;u&gt;Patterns &amp;amp; Practices Identity and Access Guide&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p align="left"&gt;Finally I wanted to share one last, extremely important resource. My friend &lt;a href="http://blogs.msdn.com/eugeniop" target="_blank"&gt;Eugenio Pace&lt;/a&gt; from the Microsoft patterns and practices team in Redmond is currently working on a PnP-guide on identity and access management using ADFS v2 and WIF. This guide is currently under development and is published as a open project on &lt;a href="http://www.codeplex.com"&gt;www.codeplex.com&lt;/a&gt;. That means, feel free to start reading through the guide and provide the PnP team with feedback as much as you can and about all the things you would love to read there.&lt;/p&gt;  &lt;p align="left"&gt;&lt;strong&gt;They are also working on a guidance on how-to implement BOTH, single-sign-on (&lt;/strong&gt;which is available out-of-the-box in Geneva&lt;strong&gt;) and single-sign-off, which is a very special challenge, typically!&amp;quot;&lt;/strong&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://claimsid.codeplex.com/" target="_blank"&gt;Click here to get to the guides workspace on codeplex.&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/eugeniop/" target="_blank"&gt;Click here to get to Eugenio’s blog.&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;&lt;strong&gt;&lt;u&gt;Final thoughts&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p align="left"&gt;I think, these are some of the most important pieces of information, architects and developers need when it comes to thinking about identity interoperability. I personally strongly believe in all the parts of the identity metasystem vision and claims-based security. I also see, that most of the vendors are (slowly) moving towards this direction with their products and offerings.&lt;/p&gt;  &lt;p align="left"&gt;So stay tuned, keep your eye on all these things.&lt;/p&gt;  &lt;p align="left"&gt;Cheers   &lt;br /&gt;&lt;strong&gt;Mario&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9917974" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mszcool/archive/tags/Architectural+Thoughts/default.aspx">Architectural Thoughts</category><category domain="http://blogs.msdn.com/mszcool/archive/tags/Presentations+-+Demos+-+Samples/default.aspx">Presentations - Demos - Samples</category><category domain="http://blogs.msdn.com/mszcool/archive/tags/Personal+Thoughts+-+My+Opinion/default.aspx">Personal Thoughts - My Opinion</category></item><item><title>Presentation at Microsoft TechReady in the US on Always Responsive Applications and Services with samples using CCR (Concurrency and Coordination Runtime) as well as .NET 4.0 Task Parallel Library</title><link>http://blogs.msdn.com/mszcool/archive/2009/07/31/presentation-at-microsoft-techready-in-the-us-on-always-responsive-applications-and-services-with-samples-using-ccr-concurrency-and-coordination-runtime-as-well-as-net-4-0-task-parallel-library.aspx</link><pubDate>Fri, 31 Jul 2009 02:00:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9853840</guid><dc:creator>mszCool</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mszcool/comments/9853840.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mszcool/commentrss.aspx?PostID=9853840</wfw:commentRss><description>&lt;p&gt;Today in the morning I gave a presentation at Microsoft’s largest internal conference for employees in Seattle, WA (called TechReady, about 5000-6000 Micorsoft employees are there on technical education).&lt;/p&gt;  &lt;p&gt;The presentation I gave is essentially based on the whitepaper I’ve written and we’ve published a few weeks ago together with Frequenits AG on always responsive and scalable apps and services. You can find &lt;strong&gt;&lt;u&gt;&lt;a href="http://blogs.msdn.com/mszcool/archive/2009/04/15/whitepaper-always-responsive-clients-and-services-with-wpf-and-wcf-frequentis-ag-tracking-tracing-logbook-for-maritime-communications.aspx" target="_blank"&gt;more details as well as the paper for download here&lt;/a&gt;&lt;/u&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;While the presentation is strictly confidential, I can publish the demo scenarios. Therefore click the link below if you are interested in a complete scenario that shows asynchronous processing within clients and services as well as across services… of course I do not cover all possible “exceptions”, but it’s a starting point.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://www.mszcool.at/blog/2009/20090730-AsyncTaskScenario-VS2010b1.zip" target="_blank"&gt;&lt;strong&gt;Click here to download the demo&lt;/strong&gt;&lt;/a&gt;    &lt;br /&gt;(for Visual Studio 2010 Beta 1, only, I will provide a VS 2008 version with CCR-only implementations soon)&lt;/p&gt;  &lt;p&gt;The demo scenario supports a few arguments discussed in my whitepaper as well as the presentation:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Performance comparison between Peer-2-Peer and Service-bus based communication metaphors.&lt;/li&gt;    &lt;li&gt;Base classes for implementing the Command/Job/Queue patterns discussed in the whitepaper.&lt;/li&gt;    &lt;li&gt;And finally – a mapping of these patterns to .NET Framework technologies that definitely help implementing the patterns themselves. I include two implementations, one that uses the &lt;strong&gt;Concurrency and Coordination Runtime&lt;/strong&gt; from the Microsoft Robotics Studio and another one that uses the &lt;strong&gt;.NET Framework Task Parallel Library&lt;/strong&gt; that we are going to publish with the .NET Framework 4.0. To switch between those two implementations, just modify the JobManagerFactory in the AsyncDemo.JobLibrary project to use one or the other implementation.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The project with Frequentis definitely showed me, that Asynchronous programming and thinking is not just for the sake of performance, it’s also for “responsiveness” and “availability”. The neat thing is, that simply by keeping a few things in mind, these things can go hand-in-hand. &lt;/p&gt;  &lt;p&gt;Nevertheless, it was very special for me delivering this session at TechReady. Seven years ago, right before I started working for Microsoft in October 2002, Seattle was the place where I attended the first Microsoft conference of my life (and the first conference in the US, at all). And it was in the very same location as TechReady this year – in the Washington State and Convention Center, in the Sheraton Hotel and Hyatt Hotel in Seattle.&lt;/p&gt;  &lt;p&gt;My session was in one of the Grand Ball Rooms in the Sheraton with about 100 attendees… and back in August 2002 I had my room in the Sheraton at the Windows .NET Server 2003 conference… at that time I would have never thought that I will hold a session in the same location at any time:) So this was special for me! And I hope it was not for the last time!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9853840" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mszcool/archive/tags/Architectural+Thoughts/default.aspx">Architectural Thoughts</category><category domain="http://blogs.msdn.com/mszcool/archive/tags/Whitepapers+-+Publications/default.aspx">Whitepapers - Publications</category><category domain="http://blogs.msdn.com/mszcool/archive/tags/Presentations+-+Demos+-+Samples/default.aspx">Presentations - Demos - Samples</category><category domain="http://blogs.msdn.com/mszcool/archive/tags/Personal+Thoughts+-+My+Opinion/default.aspx">Personal Thoughts - My Opinion</category></item><item><title>Project with the Medical Association in Austria, a Pragmatic Services Architecture with .NET 3.5 and SQL Server 2005/2008</title><link>http://blogs.msdn.com/mszcool/archive/2009/05/05/project-with-the-medical-association-in-austria-a-pragmatic-services-architecture-with-net-3-5-and-sql-server-2005-2008.aspx</link><pubDate>Tue, 05 May 2009 21:46:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9589449</guid><dc:creator>mszCool</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/mszcool/comments/9589449.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mszcool/commentrss.aspx?PostID=9589449</wfw:commentRss><description>&lt;p&gt;&lt;em&gt;Hint: technical presentations about this project as download in the link list at the end of this post!!&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;This year the &lt;i&gt;Austrian medical association&lt;/i&gt; together with the medical associations of the different federal states in Austria as well as one of our Gold-certified partners, &lt;i&gt;Anecon Software Design und Beratung GmbH.&lt;/i&gt;, completed a project we (Microsoft Austria) started together on the country-wide management of data for medical practitioners and their ordinations.&lt;/p&gt;  &lt;p&gt;The management of this data is prescribed by the Austrian law and is used for several scenarios such as sponsorships of medical practitioners, promotions, payments, traceability or even for support in lawsuits and is therefore mission-critical!&lt;/p&gt;  &lt;p&gt;Attached to this blog-entry you will find two presentations with technical information on how we architected the solution. While the first presentation (Part1.pdf) contains shows some of the most important requirements within the environment, usage-scenarios of technologies as well as some really cool screen-shots of parts of the application, the second presentation (Part2.pdf) is based on an architectural specification I’ve written for the project on where and how-to apply which technologies of the .NET Framework 3.x in the application architecture.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Understanding the political and technical environment&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Austria’s health care environment is one of the most complex political environments in Europe – and the most complex political environment in the country itself. The environment is organized in a federal way, that means each federal state of Austria (we have 9 of them) is treated as an autonomous unit. &lt;/p&gt;  &lt;p&gt;Therefore each federal state has its own state-medical association with its own responsibilities and duties. Many of these responsibilities and duties are self-managed by these medical associations for a federal state, but on the other hand many of them are prescribed by a country-wide medical association which is the &lt;i&gt;Austrian medical association&lt;/i&gt;.&lt;/p&gt;  &lt;p&gt;Having these autonomous associations’ leads to the fact that each association manages both, a common set of information on medical practitioners which is prescribed by the Austrian medical association as well as its own, additional set of information they want to and need to manage for the federal state they’re acting in. That means that the application of discussion of this web blog as well as the attached presentations need to be deployed in each federal association with their own data storage, their own service instances and client applications while on the other hand they need to synchronize the common set of data between the federal associations to be able to manage and process data on medical practitioners having ordinations in multiple federal states.&lt;/p&gt;  &lt;p&gt;Finally that means we are talking about federated data and federated services from a technical point-of-view with medical associations in the states within Austria as well as one overall organization which is the Austrian medical association. Technologies such as workflows for synchronization using SQL Server Service broker for data-synchronization transactions with “transformation”-rules in between are core in the application architecture.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;The role of the medical association, Anecon and Microsoft in the project&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Requirements as well as the underlying data model haven been defined by a working group defined by the Austrian medical association that consisted of several representatives of the different medical associations from the federal states. Our partner, Anecon, was responsible for the design, implementation and test of the overall solution based on latest Microsoft technologies. We from Microsoft acted as a trusted advisor for the Austrian Medical association: Robert John, our business development manager ensured getting the right support from the Area and Microsoft Corp. while I helped creating the overall architecture for the system together with Anecon and the representatives of the medical association.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Download the presentation&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.mszcool.at/blog/2009/20090505_Austrian_Med_Association_Part1.pdf"&gt;Requirements, usage-scenarios of technologies and screen-shots from Anecon&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.mszcool.at/blog/2009/20090505_Austrian_Med_Association_Part2.pdf"&gt;Core technical architecture recommendations from Microsoft / Mario Szpuszta&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Involved technologies, links and further resources&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/netframework/aa663326.aspx"&gt;.NET Framework 3.5 (incl. Service Pack 1)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/netframework/aa663326.aspx"&gt;Windows Presentation Foundation&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/netframework/aa663328.aspx"&gt;Windows Workflow Foundation&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/netframework/aa663324.aspx"&gt;Windows Communication Foundation&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/sqlserver/bb671064.aspx"&gt;SQL Server 2005 and SQL Server 2008 (for newer deployments)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms345108.aspx"&gt;SQL Server Service Broker&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/practices/default.aspx"&gt;Microsoft Patterns &amp;amp; Practices Home&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codeplex.com/AppArchGuide"&gt;Microsoft Patterns &amp;amp; Practices Application Architecture Blueprint&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9589449" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mszcool/archive/tags/Architectural+Thoughts/default.aspx">Architectural Thoughts</category><category domain="http://blogs.msdn.com/mszcool/archive/tags/Whitepapers+-+Publications/default.aspx">Whitepapers - Publications</category></item><item><title>TechEd Europe 2008 - Downloads and Architectural Thoughts</title><link>http://blogs.msdn.com/mszcool/archive/2008/12/16/teched-europe-2008-downloads-and-architectural-thoughts.aspx</link><pubDate>Tue, 16 Dec 2008 19:32:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9226463</guid><dc:creator>mszCool</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/mszcool/comments/9226463.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mszcool/commentrss.aspx?PostID=9226463</wfw:commentRss><description>&lt;p&gt;A little late but nevertheless I managed to publish my demos from this year's TechEd Europe 2008 in Barcelona from my session on the &lt;strong&gt;identity meta system applied to real world projects &lt;/strong&gt;in Austria.&lt;/p&gt;  &lt;p&gt;As mentioned, the experience I summarized in the session comes from a project we've been driving in Austria in the electronic health care sector as outlined &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/architecture/cc836394.aspx"&gt;in issue 16 of the architecture journal&lt;/a&gt; in &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/architecture/cc836394.aspx"&gt;my article&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;You can download the demo applications from my session at TechEd by clicking the link below:&lt;/p&gt;  &lt;p&gt;&lt;iframe style="border-bottom: #dde5e9 1px solid; border-left: #dde5e9 1px solid; padding-bottom: 0px; background-color: #ffffff; margin: 3px; padding-left: 0px; width: 240px; padding-right: 0px; height: 66px; border-top: #dde5e9 1px solid; border-right: #dde5e9 1px solid; padding-top: 0px" marginheight="0" src="http://cid-c57a431d03937fc0.skydrive.live.com/embedrowdetail.aspx/.Public/TechEd%20EMEA%202008/TechEd2008IdentityDemos.zip" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;Also here you can download the presentation material of my session by clicking below:&lt;/p&gt;  &lt;p&gt;&lt;iframe style="border-bottom: #dde5e9 1px solid; border-left: #dde5e9 1px solid; padding-bottom: 0px; background-color: #ffffff; margin: 3px; padding-left: 0px; width: 240px; padding-right: 0px; height: 66px; border-top: #dde5e9 1px solid; border-right: #dde5e9 1px solid; padding-top: 0px" marginheight="0" src="http://cid-c57a431d03937fc0.skydrive.live.com/embedrowdetail.aspx/.Public/TechEd%20EMEA%202008/ARC314%7C_Szpuszta%7C_20081110%7C_102316.pdf" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;Essentially in my presentation I really focused on discussing four things where in my opinion the concepts from the identity meta system vision really helped us implementing our stuff:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Clear separation of concerns&lt;/strong&gt;       &lt;br /&gt;Separation of where authentication happens from where authorization happens enables you switching authentication modes without affecting your back-end services. If authentication happens at all your services, you need to touch all the clients and services for doing so. If you separate authentication out into a Security Token Service you just need to touch your clients and the STS while the services at the back end can remain untouched. In the attached demos you need to work with the NET.SecondTestClient, the mszcool-ActiveSTS and the ClaimsAwareWebService-VS2008 projects to test out what I've shown in my session. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Simplification through Claims        &lt;br /&gt;&lt;/strong&gt;Claims-based security helped us implementing the two-factor authentication that was a requirement for according to the strong data protection law. More on that later in this post. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Building bridges between domains and/or platforms&lt;/strong&gt;       &lt;br /&gt;On the one hand side trust-chains between Security Token Services helped us separating out responsibilities and ownerships given based on political reasons while still remaining an easy possibility to change these responsibilities and ownerships by just merging or splitting STS'es if the political interests changed. On the other hand transformation of tokens from rather proprietary tokens to standardized tokens is another thing where the separation of concerns between authentication (STS) and authorization (Relying party service) really can help. In the attached demo you need to work with the &lt;strong&gt;JavaWebHostNew&lt;/strong&gt; Netbeans 6.5 project as well as the NET.TestClient and the SimpleActiveSTS-VS2008 projects to try things I've shown in my session at TechEd. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Coming back to the second point I outlined above. If you're working with the NET.ThirdClient, the mszcool-activeSTS and the ClaimsSuperTokenService you can try out a simple implementation of our approach for making sure that only things are published into some e-health system if the patient explicitly agrees at leat two times. The model from a business point-of-view was the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;For getting read access, a patient needs to explicitly authenticate with his e-card when visiting a doctor for a medical treatment at the reception. For the time of the treatment the doctor got &lt;strong&gt;read-only&lt;/strong&gt; access to documents published in a variety of e-health services. For this purpose, the e-card STS issues a &lt;strong&gt;standard-token&lt;/strong&gt; with standard-claims based on the e-card authentication. e-health services do not allow to update any content with this standard-token because the STS does not add a what we called &lt;strong&gt;super-token-claim&lt;/strong&gt;.&lt;/li&gt;    &lt;li&gt;For updating content in e-health services the patient needs to explicitly authenticate for each update-process in addition to the previously mentioned, first authentication step. During this authentication the client application sends the previously issued token as a means of authentication to the STS which leads the STS to add a super-token-claim to the issued token. Therefore e-health services detect the presence of the super-token-claim and allow writing / updating content to their storage. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Subsequent graphics should outline what's going on there. Take the first graphic as an example. Here the previously defined process is executed as needed. The client authenticated for read-stuff and gets a token for reading stuff without the super-token-claim. Later during the medical treatment the doctor wants to publish stuff and therefore the patient authenticates a second time. That second authentication includes the previously issued SAML token which leads the STS to include the super-token-claim in the newly issued token. With this newly issued token the client software of the doctor can issue an update on the back end e-health service of the current context.&lt;/p&gt;  &lt;p&gt;&lt;a title="Everything Okay" target="_blank" href="http://zawp9w.bay.livefilestore.com/y1ppnvhOSj8zP0_n9qJRYg805PcT1V-FxfUwasefJIXdnBqFhe9L16OIRAn5snMZbKMSFyMWq0Ztwk/TechEd%20Demo%20Part%201.jpg"&gt;&lt;img src="http://zawp9w.bay.livefilestore.com/y1ppnvhOSj8zP0_n9qJRYg805PcT1V-FxfUwasefJIXdnBqFhe9L16OIRAn5snMZbKMSFyMWq0Ztwk/TechEd Demo Part 1.jpg" width="416" height="240" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;If one of the authentication steps, either the first or the second one is missing, the STS won't issue a token with a super-token-claim. And therefore the e-health services should and can simply deny access to any updating operation - based on a simple query whether a claim has been added to the token issued by the STS or not. The following graphic demonstrates what happens if the client tries to update content in an e-health services without the first authentication-step so that you can better understand our selected approach and idea:&lt;/p&gt;  &lt;p&gt;&lt;a title="No two-phase authentication" target="_blank" href="http://zawp9w.bay.livefilestore.com/y1pY4xj4VtY_Q7kPOsir0E2Lqh0dA8soaJcbR1RzQX0lfy1_nW7lV8NGD7pqpKcq2lOt4kqint0zAw/TechEd%20Demo%20Part%202.jpg"&gt;&lt;img src="http://zawp9w.bay.livefilestore.com/y1pY4xj4VtY_Q7kPOsir0E2Lqh0dA8soaJcbR1RzQX0lfy1_nW7lV8NGD7pqpKcq2lOt4kqint0zAw/TechEd Demo Part 2.jpg" width="421" height="231" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The neat thing is that the e-health services really just need to query the issued SAML-token from the STS for the super-token-claim. If it's there let updates happen, if not then not;) As simple as that. In classic scenarios they would need to manage sessions, state and all that stuff what is much more complicated.&lt;/p&gt;  &lt;p&gt;In my opinion this really shows, how claims-based security (as a part of the concepts from the identity meta system vision) really simplifies complex processes in the security world by separating the responsibility of authentication from authorization and by making authorization as simple as querying standardized tokens for claims.&lt;/p&gt;  &lt;p&gt;If you're interested in my approach for building bridges between platforms through the separation of concerns with STS'es and relying parties, just take a look at my &lt;a target="_blank" href="http://blogs.msdn.com/mszcool/archive/2008/10/30/devcamp-2008-making-security-interoperability-work-with-a-zermatt-based-security-token-service-sts-a-net-client-and-a-java-web-service-hosted-in-glassfish.aspx"&gt;previous posting&lt;/a&gt; which I created for TechEd 2008 and the local DevCamp conference &lt;a target="_blank" href="http://blogs.msdn.com/mszcool/archive/2008/10/30/devcamp-2008-making-security-interoperability-work-with-a-zermatt-based-security-token-service-sts-a-net-client-and-a-java-web-service-hosted-in-glassfish.aspx"&gt;here...&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Any questions - feel free asking me through comments or the contact link here of the blogging-engine;)&lt;/p&gt;  &lt;p&gt;Cheers   &lt;br /&gt;&lt;strong&gt;Mario&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9226463" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mszcool/archive/tags/Architectural+Thoughts/default.aspx">Architectural Thoughts</category><category domain="http://blogs.msdn.com/mszcool/archive/tags/Presentations+-+Demos+-+Samples/default.aspx">Presentations - Demos - Samples</category><category domain="http://blogs.msdn.com/mszcool/archive/tags/Personal+Thoughts+-+My+Opinion/default.aspx">Personal Thoughts - My Opinion</category></item><item><title>DevCamp 2008 - Making Security-Interoperability work with a Zermatt-based Security Token Service (STS), a .NET Client and a Java Web Service hosted in Glassfish</title><link>http://blogs.msdn.com/mszcool/archive/2008/10/30/devcamp-2008-making-security-interoperability-work-with-a-zermatt-based-security-token-service-sts-a-net-client-and-a-java-web-service-hosted-in-glassfish.aspx</link><pubDate>Thu, 30 Oct 2008 19:07:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9024712</guid><dc:creator>mszCool</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/mszcool/comments/9024712.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mszcool/commentrss.aspx?PostID=9024712</wfw:commentRss><description>&lt;p&gt;(&lt;a href="http://www.mszcool.com/Blog%20Downloads/2008/200810_NET-Java-Identity-Interop.zip"&gt;Click here to download my Security-Interop-Sample&lt;/a&gt;)    &lt;br /&gt;(&lt;a href="http://www.mszcool.com/Blog%20Downloads/2008/200810%20-%20DevCamp%20Identity%20MetaSystem%20Presentation.pdf"&gt;Click here for downloading the presentation&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;While I am here at PDC studying the most exciting new stuff from Microsoft around Software+Services and much more interesting platform-enhancements (Dublin, Velocity, Geneva etc.) I promised about more than a week ago at the DevCamp 2008 conference in Vienna that I will publish some details about a demo on security I've shown in my session about applying concepts from the Identity Meta System Vision in the real world for heterogeneous environments.&lt;/p&gt;  &lt;p&gt;The session itself was all about taking the separation of concerns in terms of authentication and authorization that is proposed by federated identity patterns. Furthermore it was about learning, how this SoC can help you solving real world problems when it comes down to implementing security in your solutions.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.mszcool.com/Blog%20Downloads/2008/200810%20-%20DevCamp%20Identity%20MetaSystem%20Presentation.pdf"&gt;Click here for downloading the presentation.&lt;/a&gt; I'd strongly recommend you do this before moving on in this post!&lt;/p&gt;  &lt;p&gt;In the last demo I've shown a Security Token Service (STS) written with Microsoft Codename &amp;quot;Zermatt&amp;quot; that authenticates requests coming from a .NET-based client application through Windows Authentication and transforms the (proprietary;)) Windows-token into a standards-based SAML-token. Why that? Well, non-Windows based platforms won't be able to deal with a proprietary Windows-token for authorizing requests - especially if they're not running on Windows. But they will be able to work with SAML as it is just a signed XML with information about an authenticated user proofed by an identity provider (the security token service). The following picture shows the scenario I've implemented:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="171" alt="image" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/image_thumb.png" width="413" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In this post I give you a step-by-step guide how-to setup the samples which you find for download under the following link:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.mszcool.com/Blog%20Downloads/2008/200810_NET-Java-Identity-Interop.zip"&gt;Click here to download my Security-Interop-Sample&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In the following sections I summarized the pre-requisites and steps you need to complete for making the sample above work!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Installation Pre-Requisites&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Microsoft-Part of the Sample&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://msdn.microsoft.com/de-de/vstudio/aa700831.aspx"&gt;Visual Studio 2008 with SP1 installed&lt;/a&gt;        &lt;br /&gt;(Service Pack 1 download &lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=1&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3dfbee1648-7106-44a7-9649-6d9f6d58056e%26DisplayLang%3den"&gt;here&lt;/a&gt;)&lt;/li&gt;      &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=2&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3d333325fd-ae52-4e35-b531-508d977d32a6%26DisplayLang%3den"&gt;.NET Framework 3.5&lt;/a&gt; (&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=1&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3dab99342f-5d1a-413d-8319-81da479ab0d7%26DisplayLang%3den"&gt;with SP1&lt;/a&gt; installed)&lt;/li&gt;      &lt;li&gt;&lt;a href="https://connect.microsoft.com/site/sitehome.aspx?SiteID=642&amp;amp;wa=wsignin1.0"&gt;Microsoft &amp;#8220;Zermatt&amp;#8221; (now Geneva Identity Framework) CTP&lt;/a&gt;        &lt;br /&gt;(I have included the version of Zermatt-CTP that I've used for developing the sample in the download so that at later point of times you can try this in an isolated environment without bothering with some breaking changes in Zermatt at first place;))&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Java-Part of the Sample&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://java.sun.com/javase/downloads/index_jdk5.jsp"&gt;Java2 SDK 1.5.0 with Update 15&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://www.netbeans.org/community/releases/65/"&gt;Netbeans 6.5 Beta IDE with Glassfish v2&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://java.sun.com/javase/downloads/index_jdk5.jsp"&gt;JCE Policy Files&lt;/a&gt; installed&lt;/li&gt;      &lt;li&gt;&lt;a href="http://www.dom4j.org/dom4j-1.6.1/download.html"&gt;Dom4j 1.6.1&lt;/a&gt; and &lt;a href="http://jaxen.org/releases.html"&gt;Jaxen 1.1.1&lt;/a&gt; installed&lt;/li&gt;      &lt;li&gt;Appropriate Java environment variables set for command prompts. For this purpose I added a sample &amp;#8220;Java Command Prompt&amp;#8221; batch file to the download (located in the &amp;quot;Pre-Requisites\Java&amp;quot;-directory). You need to adopt it based on your installation-path values on your machine.&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Steps to make the Microsoft / .NET Side running:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Install the certificates using Zermatt Samples Utilities     &lt;br /&gt;The necessary batch-files for doing so are located in the Zermatt Directory (typically &amp;#8220;C:\Program Files\Microsoft Code Name Zermatt\Samples\Utilities&amp;#8221;) &amp;#8211; execute the SamplesPreReqSetup.bat in a Visual Studio Command Prompt as Administrator.&lt;/li&gt;    &lt;li&gt;Run Visual Studio 2008 as Administrator and open the SimpleSTSForActiveClients-VS2008.sln Visual Studio 2008 solution located in the &amp;#8220;&amp;lt;your working folder&amp;gt;\DevCamp\Simple STS For Active Clients&amp;#8221; directory. This is a modified and extended version of the standard Simple Active STS sample included with Microsoft Code Name &amp;#8220;Zermatt&amp;#8221;.&lt;/li&gt;    &lt;li&gt;Right-click the solution and configure the startup-projects so that the STS, the .NET-based test service and the test-client start-up as shown in the following screen-shot:     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image002_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="254" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image002_thumb.jpg" width="404" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Try the solution by pressing CTRL-F5 in Visual Studio to run everything without debugging. Important is that you follow the following steps in the running applications:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;In the &amp;#8220;ClaimsAwareWebSErvice-VS2008&amp;#8221;-project enter &amp;#8220;1&amp;#8221; to take the included simple active STS as a security token service.&lt;/li&gt;      &lt;li&gt;In the client application type in &amp;#8220;net&amp;#8221; to call the .NET-based service and verify whether the STS and the .NET-based service as well as the client are working properly on your machine!       &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image004_2.gif"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="237" alt="clip_image004" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image004_thumb.gif" width="394" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Make the Java-Side working&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Now, after the .NET-based solution is running, we can move forward by making the Java-version of our claims-based web service running. For that purpose follow the subsequent steps:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;First of all run Netbeans Developer studio as administrator and make sure that all application server references are registered with your IDE. With the Netbeans 6.5 beta I&amp;#8217;ve installed, just Glassfish v3 was included in the server list. So you need to add Glassfish v2 (which is the one I&amp;#8217;ve tested the service with) to your services list. For that purpose follow the next sub-steps but note that by default Netbeans should create a personal domain during the installation of the IDE:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;In the left panel switch to the services tab and open the &amp;#8220;Servers&amp;#8221; tree-view element.&lt;/li&gt;      &lt;li&gt;Right-click the &amp;#8220;Servers&amp;#8221;-node and select &amp;#8220;Add Server&amp;#8221;&lt;/li&gt;      &lt;li&gt;Select &amp;#8220;Glassfish V2&amp;#8221; from the list and leave the name below as it is.       &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image006_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="276" alt="clip_image006" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image006_thumb.jpg" width="398" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;Create a personal domain for the application server that will install some configuration files in your local user profile. These files also will include the certificate store for your development instance of the app-server.       &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image008_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="276" alt="clip_image008" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image008_thumb.jpg" width="399" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;Select a folder for the development domain where you would like to install the configuration files to as shown in the following screen (note that there it will be &amp;#8220;D:\Data\.testDevDomain&amp;#8221; which is what I will refer to later on, as well)       &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image010_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="276" alt="clip_image010" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image010_thumb.jpg" width="399" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;Then you will have to select an administrator user name and a password and afterwards you will need to specify the ports on which the server is running. Make sure that nothing else runs on these ports and note the ports as you will need them later on.&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Then open the Java-project I&amp;#8217;ve included in the samples-download. This project is located in the &amp;#8220;&amp;lt;your working folder&amp;gt;\DevCamp\JavaWebHostNew&amp;#8221; directory. Just let Netbeans point to that directory in the open-project dialog and it will detect that this is a Netbeans-project, automatically.&lt;/li&gt;    &lt;li&gt;You probably will need to update a few references to point to dom4j and Jaxen as I use these libraries for some XML processing in the test application. Netbeans will warn you if you need to update the references. If so, switch to the &amp;#8220;Projects&amp;#8221; tab in the panel on the left, navigate to your project &amp;#8220;JavaWebHostNew&amp;#8221; and within there on the libraries-node. Right-click the &amp;#8220;Libraries&amp;#8221;-node and select &amp;#8220;Add Jar / Folder&amp;#8221; from the context menu. Add the &amp;#8220;dom4j-1.6.1.jar&amp;#8221; and the &amp;#8220;jaxen-1.1.1.jar&amp;#8221; files as libraries this way to your project. I&amp;#8217;ve included them in the download in the &amp;#8220;&amp;lt;your working folder&amp;gt;\DevCamp\Pre-Requisites\Java&amp;#8221; directory&amp;#8221;. Also remove all broken references from the project by right-clicking the project and going to the properties:     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image012_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="279" alt="clip_image012" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image012_thumb.jpg" width="410" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;After all libraries and references are set-up correctly, you should be able to compile the solution using Netbeans, successfully. Next we can start configuring the application server appropriately to make this stuff running.&lt;/li&gt;    &lt;li&gt;Next we need to install the Java cryptography policy extensions (JCE) with Java to be able to work with our certificates. For this purpose copy all files from the &amp;#8220;&amp;lt;your working folder&amp;gt;\ DevCamp\Pre-Requisites\Java\jce&amp;#8221;-directory to the &amp;#8220;C:\Program Files\Java\jdk1.5.0_15\jre\lib\security&amp;#8221;-directory and overwrite all files.&lt;/li&gt;    &lt;li&gt;Now we need to install certificates for the two sides of the application &amp;#8211; first the Java-service needs to be able to trust the STS and therefore it needs to have the STS&amp;#8217;s public key in its trusted certificates store and second the .NET client and the STS need to have a way to trust the Java service and therefore we need to export the public key from the Java service&amp;#8217;s certificate and import it into the Windows certificate store.&lt;/li&gt;    &lt;li&gt;To ensure, that the Java-service is able to trust and validate tokens issued by the STS, execute the following steps on your machine.&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Export the STS certificate from the Windows certificate store as DER-encoded file. Only export the public key. Store the file to a directory of your choice. The certificates are installed in the personal store of the local computer by the previously executed Microsoft Code Name Zermatt Samples Batch-file utilities when setting up the .NET based solution, before. You can get to the machine&amp;#8217;s certificate store by starting a management console (mmc.exe) and selecting &amp;#8220;File &amp;#8211; Add / Remove Snap-In&amp;#8221; and then select &amp;#8220;Certificates&amp;#8221; from the list, click the &amp;#8220;Add &amp;gt;&amp;#8221; button and then click okay. Make sure that you select &amp;#8220;Computer Account&amp;#8221; and &amp;#8220;Local Computer&amp;#8221; when adding the snap-in. You&amp;#8217;ll find the certificate as shown in the following screen-shot:       &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image014_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="234" alt="clip_image014" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image014_thumb.jpg" width="399" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;Import the STS-public key certificate in the trusted certificates store of your Glassfish personal domain by executing the following command (typically the &lt;strong&gt;password&lt;/strong&gt; you have to enter is &lt;strong&gt;changeit &lt;/strong&gt;by default):        &lt;br /&gt;keytool -import -alias sts -file sts.cer -keystore &amp;quot;d:\Data\.testDevDomain\config\cacerts.jks&amp;quot;        &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image016_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="214" alt="clip_image016" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image016_thumb.jpg" width="403" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Next we need to ensure that the STS and the client can trust the Java service. For this purpose we need to export the Java service&amp;#8217;s certificate and import it in the Windows certificate store. To do so, follow these steps:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Execute the following command to export the default service certificate from glassfish with its public key. This certificate is typically called s1as.       &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image018_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="216" alt="clip_image018" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image018_thumb.jpg" width="407" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;Now import the certificate in the personal store of the local computer of the Windows Certificate store. Also import the certificate into the trusted people store so that the validation of the certificate can succeed.       &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image020_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="234" alt="clip_image020" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image020_thumb.jpg" width="399" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Before we test the web service solution we need to make sure that the correct WS-Policy configuration is set for the Java Web Service. For this purpose open the &amp;#8220;Web Services&amp;#8221;-node in your Netbeans-project and double-click the &amp;#8220;JavaTestService&amp;#8221; Web Service in the project. In the designer then click the &amp;#8220;Advanced&amp;#8230;&amp;#8221; button to open the web service configuration dialog and make sure that it looks as shown in the following two screen-shots:     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image022_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="353" alt="clip_image022" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image022_thumb.jpg" width="342" border="0" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image024_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="351" alt="clip_image024" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image024_thumb.jpg" width="340" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Finally you can un-deploy and deploy the new service to Glassfish as shown in the following screen-shot.     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image026_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="220" alt="clip_image026" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image026_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;It&amp;#8217;s important that you note the URL on which your web service is listening depending on the ports you configured for your Glassfish application server instance and development-domain. Typically this should appear in the output-window within the Netbeans-IDE for Glassfish as shown in the following screen-shot:     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image028_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="97" alt="clip_image028" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image028_thumb.jpg" width="440" border="0" /&gt;&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Final steps and then running the application&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;After you have configured Glassfish, configured the Java Web Service and deployed it, successfully, you can try the interoperability solution between Java and .NET. For this purpose you need to update the .NET test-client&amp;#8217;s configuration to point to your running Java web service and then run the application. The URL to the Java-service is configured in the client&amp;#8217;s App.config (NET.TestClient in my sample solution) as shown in the following screen-shot:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image030_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="269" alt="clip_image030" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image030_thumb.jpg" width="445" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Just one last step before running it &amp;#8211; you need to update the STS so that it encrypts the SAML-token with the certificate of your Glassfish Java Web service. As these certificates are re-generated for each machine you need to update my code in the sample to make it work. Update the certificate-name in the project &amp;#8220;SimpleActiveSTS-VS2008&amp;#8221; of my solution in the file &amp;#8220;MySecurityTokenService.cs&amp;#8221; and change the common name of the certificate to yours (you should only need to replace the machine-name part of the common name which is &amp;#8220;vaiom&amp;#8221; in my sample and should be &amp;#8220;yourmachinename&amp;#8221; in your environment):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image032_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="265" alt="clip_image032" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image032_thumb.jpg" width="438" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;After you have updated this one you can try to run the solution and instead of calling the .NET-based service you can call the Java-service by entering &amp;#8220;java&amp;#8221; instead of &amp;#8220;net&amp;#8221; when the client asks you which web service it should call. The following screen-shot shows the resulting application in action. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image034_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="271" alt="clip_image034" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/Dev.NETClientandaJavaWebServicehostedinG_2CD0/clip_image034_thumb.jpg" width="431" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In the console-windows you can see the .NET-based applications running: the claims-aware web service which is not called in this scenario, the security token service which issues a SAML-token based on the Windows identity the client authenticates with and the client itself that calls the Java service this time. In the background you can see the Netbeans IDE with the Glassfish output Window where clearly the Java application outputs the contents of the SAML token it gets passed from the STS. That SAML token just contains claims extracted from the Windows-token the client authenticated with against the STS. And that way we managed to make security-interoperability happen by transforming a proprietary Windows-token to a standardized SAML-token through an STS and give Java access to the contents of the Windows-token. Of course the Java-application could run on a Linux-box as well and still you would be able to use Windows and AD as the primary identity management system for managing users, groups etc. and include Java-services (or other services) running on any OS with your security-infrastructure as they don&amp;#8217;t need to know about any details of the security infrastructure. The only thing they need to know is the Security Token Service which proofs the fact that the user has been authenticated successfully by passing a signed SAML-token through the client to the Java-service. In my opinion that shows one of the things that unveil the real power of a federated identity infrastructure based on the WS-* standards...&lt;/p&gt;  &lt;p&gt;If you have any feedback or questions, feel free getting in touch with me through my blog;) ... of course I'd be happy about any feedback:)&lt;/p&gt;  &lt;p&gt;Cheers   &lt;br /&gt;&lt;strong&gt;Mario&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9024712" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mszcool/archive/tags/Architectural+Thoughts/default.aspx">Architectural Thoughts</category><category domain="http://blogs.msdn.com/mszcool/archive/tags/Presentations+-+Demos+-+Samples/default.aspx">Presentations - Demos - Samples</category></item><item><title>Microsoft Patterns &amp; Practices Application Architecture Guidance v2</title><link>http://blogs.msdn.com/mszcool/archive/2008/10/02/microsoft-patterns-practices-application-architecture-guidance-v2.aspx</link><pubDate>Thu, 02 Oct 2008 22:36:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8974246</guid><dc:creator>mszCool</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/mszcool/comments/8974246.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mszcool/commentrss.aspx?PostID=8974246</wfw:commentRss><description>&lt;p&gt;For a long time the application architecture guidance from the patterns &amp;amp; practices team remained unchanged... and it was inherently necessary to give it an update with all the new technologies and also trends appeared on the market.&lt;/p&gt;  &lt;p&gt;Now the first messages are out... just take a look at the blog of my peer Cesar from Spain - he created a pretty cool mind-map with the topics addressed by the new App Arch Guidance.&lt;/p&gt;  &lt;p&gt;Check out the following links:&lt;/p&gt;  &lt;p&gt;&lt;a target="_blank" href="http://blogs.msdn.com/cesardelatorre/archive/2008/09/29/new-application-architecture-guide-v-2-0-from-microsoft-patterns-practices.aspx"&gt;Cesar's blog entry on App Arch v2&lt;/a&gt;    &lt;br /&gt;&lt;a target="_blank" href="http://blogs.msdn.com/jmeier/archive/2008/09/11/guidelines-are-live.aspx"&gt;J.D. Meier's blog entry summaring new guides&lt;/a&gt;    &lt;br /&gt;&lt;a target="_blank" href="http://blogs.msdn.com/jmeier/archive/2008/09/02/patterns-practices-app-arch-guide-2-0-project.aspx"&gt;Application Architecture Guide v2.0 Info&lt;/a&gt;    &lt;br /&gt;&lt;a target="_blank" href="http://blogs.msdn.com/jmeier/archive/2008/09/11/app-arch-guide-2-0-key-features.aspx"&gt;Key Features of App Architecture Guide v2.0&lt;/a&gt;    &lt;br /&gt;&lt;a target="_blank" href="http://blogs.msdn.com/jmeier/archive/2008/09/03/app-arch-meta-frame.aspx"&gt;The Meta-frame for the App Architecture Guide&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I hope that the team will release the guide as a printed book as well as they did with the previous version of the guide. I'll definitely spend one of my upcoming weekends reading the guide;)&lt;/p&gt;  &lt;p&gt;Cheers   &lt;br /&gt;&lt;strong&gt;Mario&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8974246" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mszcool/archive/tags/Architectural+Thoughts/default.aspx">Architectural Thoughts</category></item><item><title>Migrate from CAB/SCSF to Composite WPF Guidance / Prism!?</title><link>http://blogs.msdn.com/mszcool/archive/2008/07/11/migrate-from-cab-scsf-to-composite-wpf-guidance-prism.aspx</link><pubDate>Fri, 11 Jul 2008 16:47:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8721263</guid><dc:creator>mszCool</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/mszcool/comments/8721263.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mszcool/commentrss.aspx?PostID=8721263</wfw:commentRss><description>&lt;p&gt;Finally, after the &lt;a href="http://www.codeplex.com/CompositeWPF"&gt;Composite Application Guidance for WPF&lt;/a&gt; (codename &amp;quot;Prism&amp;quot;) was released last week, I started thinking about necessary steps for migrating CAB/SCSF based solutions to the new Smart Client framework built with WPF. I also started migrating &lt;a href="http://blogs.msdn.com/mszcool/archive/2008/06/05/hp-banqpro-the-demo-for-the-paper-posted-earlier.aspx"&gt;the solution&lt;/a&gt; I've created for last year's TechEd and for the &lt;a href="http://blogs.msdn.com/mszcool/archive/2008/06/05/hp-banqpro-a-wpf-smart-client-project-with-wf-integration.aspx"&gt;HP banqpro/ case study&lt;/a&gt; to Composite WPF guidance.&lt;/p&gt;  &lt;p&gt;I would like to share the thoughts I made with you right now... but don't expect this to be the only post about this topic. I believe while moving on with the migration I definitely will find out some more things and my thoughts will evolve, definitely;)&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Important note: please understand that these are my own, personal thoughts and that this is NOT Microsoft's official opinion and this is not an official Microsoft-statement at all!&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;#1: What should I use when starting a new project?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;My personal conclusion: For me that question is obvious: use Composite WPF guidance and WPF if your client-hardware is sufficient for WPF.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;WPF adds a lot value that make things for development of enterprise line-of-business client apps much easier - although the design time experience isn't where it should be, today. And Composite WPF brings you the framework for building extensible and manageable enterprise-level smart clients with WPF! So just use it!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;#2: Should you migrate to Composite WPF from CAB/SCSF?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Of course many customers are asking this question right now. They are afraid that they are using an old technology which is not going to be state-of-the-art anymore and running into panic-mode.&lt;/p&gt;  &lt;p&gt;Well, I don't see it that critical. CAB/SCSF is still driven forward by the community (see &lt;a href="http://codeplex.com/scsfcontrib"&gt;SCSFContrib&lt;/a&gt;, &lt;a href="http://www.codeplex.com/SCSFWPF"&gt;SCSFWPF&lt;/a&gt; etc.) and there are lots of people out there answering questions, sharing experience etc. Furthermore according to the Microsoft homepage &lt;a href="http://msdn.microsoft.com/en-us/library/aa480482.aspx#scsfroadmapfeedbackandsupport"&gt;it is still supported the same way it was supported all the time&lt;/a&gt;: it is simply treated as custom code in support cases with Microsoft.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;My personal conclusion therefore:&lt;/em&gt; &lt;em&gt;if you do not get additional business value out of Composite WPF and if you are happy with CAB/SCSF in your solution, why should you take the effort of migrating to it!? Then you don't need to... some good reasons to migrate might be:&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;em&gt;native WPF implementation that leverages the base classes of WPF such as its existing command mechanisms etc.&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;more lightweight - Composite WPF is more lightweight than CAB/SCSF and I had the feeling that it is easier to learn...&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;extended flexibility of Composite WPF: you have the choice which features you want to use and which you don't want to. Composite WPF features are independent from others - e.g. you could use the MVP/MVC implementation without being bound to any &amp;quot;Controller&amp;quot; or &amp;quot;WorkItem&amp;quot; base classes or to the dependency injection mechanisms.&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;the new Unity framework as an easier-to-use, more lightweight dependency injection framework&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;the ability of Composite WPF to use another dependency injection framework such as spring etc.&lt;/em&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;But these are just some thoughts that went through my head. And again - for me important is that if you don't get any value for YOU out of these advantages then why migrate!? There is no reason for doing so. If you get additional value, then let's go;)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;#3: How do components from CAB/SCSF map to Composite WPF?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;As far as I have seen, the Composite WPF framework achieves exactly the same goals as CAB on it's own. There is no replacement for SCSF available, so far, and &lt;a href="http://msdn.microsoft.com/en-us/library/cc707819.aspx"&gt;according to Microsoft&lt;/a&gt; none is planned for the foreseeable future. The team is in a kind-of gathering customer feedback loop right now;) Okay, but let's map some features from CAB/SCSF to Composite WPF - I assume that you read &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=5f9a8435-1651-4be2-956d-0446a89a7358&amp;amp;DisplayLang=en"&gt;my paper on CAB/SCSF&lt;/a&gt; to fully understand the following table...&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="436" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="198"&gt;Shell Workspaces&lt;/td&gt;        &lt;td valign="top" width="236"&gt;Region Managers&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;Shell UI Extension Sites&lt;/td&gt;        &lt;td valign="top" width="235"&gt;none&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;WorkItem class&lt;/td&gt;        &lt;td valign="top" width="234"&gt;none or your own ordinary class         &lt;br /&gt;&lt;font size="1"&gt;It's on you whether you want to use &amp;quot;use case controllers&amp;quot; as described in my paper or not. And if, you just create ordinary classes without any attributes or base-class dependencies;)&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="201"&gt;WorkItem -         &lt;br /&gt;Use Case Controller-part&lt;/td&gt;        &lt;td valign="top" width="233"&gt;none&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="202"&gt;WorkItem -         &lt;br /&gt;Container-part&lt;/td&gt;        &lt;td valign="top" width="233"&gt;Unity Framework and it's container capabilities&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="202"&gt;WorkItem -         &lt;br /&gt;Client Services management&lt;/td&gt;        &lt;td valign="top" width="233"&gt;Unity Framework and it's container capabilities&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="202"&gt;Event Broker&lt;/td&gt;        &lt;td valign="top" width="233"&gt;Event Aggregator&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="202"&gt;Command Pattern&lt;/td&gt;        &lt;td valign="top" width="233"&gt;WPF Commands and/or Composite WPF extensions to WPF commands&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="202"&gt;Dependency Injection&lt;/td&gt;        &lt;td valign="top" width="233"&gt;Unity Framework or your own&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="202"&gt;Smart Parts&lt;/td&gt;        &lt;td valign="top" width="233"&gt;WPF controls as views&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="202"&gt;Presenter class&lt;/td&gt;        &lt;td valign="top" width="233"&gt;none or your own ordinary class         &lt;br /&gt;&lt;font size="1"&gt;It's up to you whether you use MVP/MVC - and if you just implement ordinary classes without any attributes or base class dependencies.&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="202"&gt;ModuleController, ModuleInit&lt;/td&gt;        &lt;td valign="top" width="233"&gt;IModule classes&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="202"&gt;ProfileCatalog, ModuleEnumerator/Services&lt;/td&gt;        &lt;td valign="top" width="233"&gt;ModuleEnumerator&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;As you can see, Composite WPF supports all scenarios but leaves you more &amp;quot;freedom&amp;quot; of whether you want to implement a scenario or not. And also if you implement a scenario you often don't need to inherit from any base class or apply attributes in most cases. That means you can build-up your own hierarchies without running into too many dependencies of the Composite WPF guidance.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;#4: The very basic steps to get from CAB/SCSF to Prism&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;These are some of the first steps I had to complete while migrating the shell and modules from CAB/SCSF to prism. Essentially these where the following:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Create a new solution for the Composite WPF version of my demo.&lt;/li&gt;    &lt;li&gt;Import the interface libraries from the CAB/SCSF solution to the Composite WPF solution and remove all namespace-, attribute- and base-class references to CAB/SCSF-related classes.&lt;/li&gt;    &lt;li&gt;Re-create the shell as described in the guidance: I have to admit I didn't even try to migrate the shell because many of the concepts are different. But I left my &lt;strong&gt;IShellExtensionService&lt;/strong&gt; interface concept and therefore I was able to hide this pretty heavy change from the modules I migrated later on.&lt;/li&gt;    &lt;li&gt;Add a new class library with some of my own base classes:     &lt;br /&gt;(1) A Controller base class with a state-bag to replace WorkItems. This is a simple as possible and I just used it because I used the WorkItem.State property. (2) A presenter base class with a reference to the original work item.&lt;/li&gt;    &lt;li&gt;Add the first CAB/SCSF module to my new solution.&lt;/li&gt;    &lt;li&gt;Replace the &amp;quot;ModuleInit&amp;quot; class by a IModule implementation. I even left the ModuleController-concept for simplicity.&lt;/li&gt;    &lt;li&gt;Remove the WorkItemController base class reference in my ModuleController class and replace it by the Controller-base class I created in step 4.1 above.&lt;/li&gt;    &lt;li&gt;Replace CAB-Commands [CommandHandler] by DelegateCommands as used in WPF and WPF composite guidance.&lt;/li&gt;    &lt;li&gt;Replace all WorkItem.Service usages against a Unity Container Service usage.&lt;/li&gt;    &lt;li&gt;UI Extension Site usage must be replaced by my IShellExtensionService concepts as described in my paper as they are not available anymore. Or you create your own IShellService that supports extension of menus etc. in your shell.&lt;/li&gt;    &lt;li&gt;Uncomment CAB/SCSF generated code in the code-besides of the smart parts.&lt;/li&gt;    &lt;li&gt;Remove all attributes in Presenter classes and SmartParts which are specific to CAB/SCSF.&lt;/li&gt;    &lt;li&gt;Replace all WorkItem classes with your own, custom Controller classes that inherit from the Controller-base class I've created in step 4.&lt;/li&gt;    &lt;li&gt;Update the configuration and run the application:))))&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;I know, that looks heavy, but it took me 1/2 day to migrate the first two modules and the shell from CAB/SCSF to Composite WPF guidance without having played with the new guidance before, at all!!!! So I was a bloody beginner with Composite WPF guidance when I started and it took my just 1/2 day...&lt;/p&gt;  &lt;p&gt;I have published the first version of my migration solution where I completed the tasks described above for the first two modules of my last year's TechEd demo.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/mszcool/archive/2008/07/11/cab-scsf-migration-demo-part-1.aspx" target="_blank"&gt;You can find that download in my previous post.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;While this is just a first step I know that I will encounter some additional issues when I have time migrating the remaining parts... so stay tuned on future entries about this story... whereas I am not sure whether I will be able to do this soon:))) because... well... it's vacation time:)))&lt;/p&gt;  &lt;p&gt;Cheers   &lt;br /&gt;&lt;strong&gt;Mario&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8721263" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mszcool/archive/tags/Architectural+Thoughts/default.aspx">Architectural Thoughts</category><category domain="http://blogs.msdn.com/mszcool/archive/tags/Personal+Thoughts+-+My+Opinion/default.aspx">Personal Thoughts - My Opinion</category></item><item><title>LINQ to SQL and my Previous Architectural Thoughts</title><link>http://blogs.msdn.com/mszcool/archive/2008/06/25/linq-to-sql-and-my-previous-architectural-thoughts.aspx</link><pubDate>Thu, 26 Jun 2008 00:16:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8653376</guid><dc:creator>mszCool</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/mszcool/comments/8653376.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mszcool/commentrss.aspx?PostID=8653376</wfw:commentRss><description>&lt;p&gt;Thanks to Jim Wooley I have to extend what I wrote about my &lt;a href="http://blogs.msdn.com/mszcool/archive/2008/06/13/linq-workshop-with-ernst-young-which-data-access-technology-should-i-use-my-thoughts.aspx"&gt;LINQ-Architecture thoughts before&lt;/a&gt;. Actually LINQ to SQL supports putting the OR-Mapping definitions into a separate XML file instead of having the mapping meta data applied as attributes on your classes and properties. Just take a look at the following blog-entry: &lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.thinqlinq.com/Default/LINQ-to-SQL-support-for-POCO.aspx" href="http://www.thinqlinq.com/Default/LINQ-to-SQL-support-for-POCO.aspx"&gt;http://www.thinqlinq.com/Default/LINQ-to-SQL-support-for-POCO.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It describes how-to put the OR-Mapping meta data into a separate XML file.&lt;/p&gt;  &lt;p&gt;Nevertheless the mapping-mechanisms of LINQ-to-SQL are much simpler compared to full-blown OR-Mapping frameworks such as the ADO.NET entity framework. And still I believe that the performance of simpler mapping mechanisms will be higher, of course. So the fact that this is possible does not really change anything to my recommendations in terms of deciding which DB technology to use when;)&lt;/p&gt;  &lt;p&gt;Anyway, thanks to Jim who pointed me to the link above. It's pretty cool that LINQ-to-SQL also supports a more &amp;quot;generic&amp;quot; mapping approach even for the small-to-medium sized applications.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8653376" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mszcool/archive/tags/Architectural+Thoughts/default.aspx">Architectural Thoughts</category></item><item><title>LINQ Workshop with Ernst &amp; Young - Which Data Access Technology should I use?? - My Thoughts</title><link>http://blogs.msdn.com/mszcool/archive/2008/06/13/linq-workshop-with-ernst-young-which-data-access-technology-should-i-use-my-thoughts.aspx</link><pubDate>Fri, 13 Jun 2008 14:52:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8591185</guid><dc:creator>mszCool</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/mszcool/comments/8591185.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mszcool/commentrss.aspx?PostID=8591185</wfw:commentRss><description>&lt;p&gt;While &lt;a href="http://blogs.msdn.com/mszcool/archive/2008/06/11/linq-workshop-with-ernst-young-in-prag-demos.aspx"&gt;preparing the workshop&lt;/a&gt; and discussing the variety of LINQ technologies in the aforementioned workshop I really started thinking of when to use which technology in the big landscape of data access possibilities on the Microsoft platform. Summarizing the technologies we have there you see the following now:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="293"&gt;&lt;strong&gt;Technology&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="105"&gt;&lt;strong&gt;Available since&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="293"&gt;ADO.NET Command, DataReader&lt;/td&gt;        &lt;td valign="top" width="105"&gt;.NET 1.x / 2.0&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="293"&gt;ADO.NET DataSets, DataTables&lt;/td&gt;        &lt;td valign="top" width="105"&gt;.NET 1.x / 2.0&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="293"&gt;ASP.NET Data Source Controls&lt;/td&gt;        &lt;td valign="top" width="105"&gt;.NET 2.0&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="293"&gt;Windows Forms Data Source Controls&lt;/td&gt;        &lt;td valign="top" width="105"&gt;.NET 2.0&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="293"&gt;&lt;em&gt;LINQ Foundation&lt;/em&gt;&lt;/td&gt;        &lt;td valign="top" width="105"&gt;&lt;em&gt;.NET 3.5&lt;/em&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="293"&gt;LINQ to DataSet&lt;/td&gt;        &lt;td valign="top" width="105"&gt;.NET 3.5&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="293"&gt;LINQ to SQL&lt;/td&gt;        &lt;td valign="top" width="105"&gt;.NET 3.5&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="293"&gt;&lt;em&gt;LINQ to XML&lt;/em&gt;&lt;/td&gt;        &lt;td valign="top" width="105"&gt;&lt;em&gt;.NET 3.5&lt;/em&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="293"&gt;ADO.NET Entity Framework&lt;/td&gt;        &lt;td valign="top" width="105"&gt;.NET 3.5 SP1&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="293"&gt;LINQ to Entities&lt;/td&gt;        &lt;td valign="top" width="105"&gt;.NET 3.5 SP1&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="293"&gt;Dynamic Web Data Forms&lt;/td&gt;        &lt;td valign="top" width="105"&gt;.NET 3.5 SP1&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="293"&gt;&lt;em&gt;ADO.NET Data Services&lt;/em&gt;&lt;/td&gt;        &lt;td valign="top" width="105"&gt;&lt;em&gt;.NET 3.5 SP1&lt;/em&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Lots of technologies and that of course fires up the question of what to use when!? I tried to think a bit about it and came up with the following conclusion as my personal opinion.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/LINQWorkshopwithErnstYoungThoughts_8D2B/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/LINQWorkshopwithErnstYoungThoughts_8D2B/image_thumb.png" width="462" height="331" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I think you should base your decision based on two factors: how fast do you need to be (Developer Productivity axis) and how are your requirements in terms of maintainability/flexibility and performance. Having that said I see the world as follows:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;If you need high performance in an enterprise-level application that is NOT a prototype I would prefer manually coded data access layers going to the DB directly through commands and data readers. It's still the fastest thing but you need to code it manually. &lt;/li&gt;    &lt;li&gt;LINQ to SQL combines performance with productivity as it includes designer support. The OR Mapping in LINQ to SQL happens via .NET attributes applied to your classes. That is tightly coupled to the database and less flexible than complete OR mappers. But as the mapping layer is &amp;quot;coded&amp;quot; it's still faster than OR framework. So its in between of these worlds and still has a really good performance. &lt;/li&gt;    &lt;li&gt;If flexibility and maintainability is the major thing and you want to have your object models strongly &lt;strong&gt;de-coupled&lt;/strong&gt; from your database, then OR-Mappers such as the ADO.NET Entity Framework and LINQ to entities (adding even more productivity to it) are the way to go. &lt;/li&gt;    &lt;li&gt;For &lt;strong&gt;Rapid Prototypes&lt;/strong&gt; that you want to use for demonstrating value to customers to prepare larger projects or that are not going to be used in a long-term fashion in your company you can use Dynamic Data Forms shipping with .NET 3.5 SP1 or the classic SqlDataSource stuff we've introduced with .NET 2.0. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I haven't added LINQ Foundation and LINQ to XML to this diagram as I think you can use them everywhere you want incl. LINQ to objects;) I also have not added LINQ to DataSets as I rather see this as a migration scenario to migration slowly form DataSets to these new technologies.&lt;/p&gt;  &lt;p&gt;Based on what I've written above to simplify the decision of which technology to use when I would update my diagram as follows:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/LINQWorkshopwithErnstYoungThoughts_8D2B/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/mszcool/WindowsLiveWriter/LINQWorkshopwithErnstYoungThoughts_8D2B/image_thumb_1.png" width="443" height="318" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I hope these thoughts help you for your future decision on which data access technology to use when. As mentioned these are my personal thoughts and not an official opinion of Microsoft in any way;)&lt;/p&gt;  &lt;p&gt;Cheers    &lt;br /&gt;&lt;strong&gt;Mario&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8591185" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mszcool/archive/tags/Architectural+Thoughts/default.aspx">Architectural Thoughts</category></item></channel></rss>