{"id":183,"date":"2013-06-03T21:14:14","date_gmt":"2013-06-03T21:14:14","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/cesardelatorre\/2013\/06\/03\/my-teched-2013-u-s-breakout-session-demos\/"},"modified":"2013-06-03T21:14:14","modified_gmt":"2013-06-03T21:14:14","slug":"my-teched-2013-u-s-breakout-session-demos","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cesardelatorre\/my-teched-2013-u-s-breakout-session-demos\/","title":{"rendered":"My TechEd 2013 U.S. breakout-session demos"},"content":{"rendered":"<p>Related to the session I delivered at <strong>TechEd 2013 North America<\/strong>, I\u2019m using a sample application we created called \u201c<strong>MY CONFERENCES<\/strong>\u201d.<\/p>\n<p>This is the session at TechEd U.S. (New Orleans): <a title=\"https:\/\/channel9.msdn.com\/Events\/TechEd\/NorthAmerica\/2013\/DEV-B204#fbid=L6pa5lhw3Vn\" href=\"https:\/\/channel9.msdn.com\/Events\/TechEd\/NorthAmerica\/2013\/DEV-B204#fbid=L6pa5lhw3Vn\">https:\/\/channel9.msdn.com\/Events\/TechEd\/NorthAmerica\/2013\/DEV-B204#fbid=L6pa5lhw3Vn<\/a>&#160;<\/p>\n<p>This sample application is really the v2.0 or evolution of the \u201cMY EVENTS\u201d sample application we created a few months ago, but we added the following changes:<\/p>\n<p><strong>&#8211; 1. <\/strong>Completely new ASP.NET MVC <strong>SINGLE-PAGE-APPLICATION<\/strong> (instead of a plain MVC app like we had in 1.0):<\/p>\n<p>In this SPA (Single Page Application) we\u2019re using the <strong>Durandal<\/strong> JavaScript framework for navigation\/map-router, also the <strong>Knockout<\/strong> library for MVVM approach in JavaScript, and <strong>RequireJS<\/strong> for incremental download of JavaScript, etc.<\/p>\n<p><strong>&#8211; 2. <\/strong>New sub-system or bounded-context (ORDERING BC) showing different patterns common in DDD (Domain-Driven Design), like Aggregates, no-anemic-domain-model with Domain-Entities which own domain rules code, Repository pattern, Application Layer and Application Service pattern, etc.<\/p>\n<p><strong>&#8211; 3. Asynchronous<\/strong> <strong>Integration<\/strong> between the different <strong>Bounded-Contexts (BCs)<\/strong> using a custom <strong>Event-Bus<\/strong> (in-memory bus) or switching to different implementations (<strong>Windows Azure Service Bus<\/strong> or <strong>custom named-pipes event-bus<\/strong>) by simply changing the implementation registration in the IoC container (using UNITY)<\/p>\n<p><strong>&#8211; 4. LightSwitch HTML5 application<\/strong> for a pure <strong>CRUD<\/strong> and <strong>Data-Driven Bounded-Context<\/strong> (subsystem) example. Also integrating its \u201cconferences changes\u201d through the Event-Bus.<\/p>\n<p><strong>&#8211; 5. Windows Phone 8<\/strong> client app in <strong>.NET\/XAML<\/strong>, as an additional client to the current clients we have: <strong>Windows 8 Store app in .NET\/XAML<\/strong>,&#160; <strong>Windows 8 Store app in WinJS\/HTML5<\/strong>, and <strong>WPF client<\/strong>. <\/p>\n<p>As you\u2019ll guess, we changed the name of the sample application (originally MY EVENTS) because we\u2019re using now \u201cintegration events\u201d following an Event-Driven approach, therefore, as a business term now it is better to use the word \u201cCONFERENCE\u201d, so there\u2019s no mistake about it when reading the code.. \ud83d\ude09<\/p>\n<p><strong>SPA application<\/strong> (Smooth navigation, with clear transition\/effects between views, etc.):<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/32\/2019\/03\/5047.image_4D25239C.png\"><img decoding=\"async\" title=\"image\" border=\"0\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/32\/2019\/03\/6433.image_thumb_303BFEC7.png\" width=\"829\" height=\"430\" \/><\/a> <\/p>\n<p>&#160;<\/p>\n<p><strong>LightSwitch CRUD\/Data-Driven application:<\/strong><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/32\/2019\/03\/8688.image_4F7EA59A.png\"><img decoding=\"async\" title=\"image\" border=\"0\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/32\/2019\/03\/4338.image_thumb_6EC14C6D.png\" width=\"812\" height=\"432\" \/><\/a> <\/p>\n<p>&#160;<\/p>\n<p><strong>Instructions to make it work:<\/strong> <\/p>\n<p>Install the following pre-requisites.<\/p>\n<p><strong>Visual Studio 2012 with UPDATE 2<\/strong> \u2013 (<em>Premium<\/em> or <em>Ultimate<\/em> as we\u2019re using Fakes, <em>Professional<\/em> could be used but you\u2019ll need to simplify the code):<\/p>\n<p><a href=\"http:\/\/www.microsoft.com\/en-us\/download\/details.aspx?id=38188\">http:\/\/www.microsoft.com\/en-us\/download\/details.aspx?id=38188<\/a><\/p>\n<p><strong>SQL Server Express<\/strong><\/p>\n<p><a href=\"http:\/\/msdn.microsoft.com\/en-us\/evalcenter\/hh230763.aspx\">http:\/\/msdn.microsoft.com\/en-us\/evalcenter\/hh230763.aspx<\/a>&#160;<\/p>\n<p><strong>Windows Azure SDK<\/strong> : Required for the Service Bus. Even when you might use\/test the simpler in-memory event-bus rather than the Windows Azure Service Bus, you just need to install this SDK so everything compiles.<\/p>\n<p><a href=\"http:\/\/www.windowsazure.com\/en-us\/downloads\/?sdk=net\">http:\/\/www.windowsazure.com\/en-us\/downloads\/?sdk=net<\/a><\/p>\n<p><strong>Bing Maps for Windows Store SDK<\/strong><\/p>\n<p><a href=\"http:\/\/visualstudiogallery.msdn.microsoft.com\/bb764f67-6b2c-4e14-b2d3-17477ae1eaca\">http:\/\/visualstudiogallery.msdn.microsoft.com\/bb764f67-6b2c-4e14-b2d3-17477ae1eaca<\/a>&#160;<\/p>\n<p>&#160;<\/p>\n<p><strong>Generate the<\/strong> Bounded-Contexts <strong>Databases<\/strong> just by <strong>running the Web-SPA<\/strong> application. Underneath, it will use EF to create the 2 required databases. Yo ujust need to have a SQL Server Express instance running in your system (like .\\SQLEXPRESS) and run Visual Studio with a Windows account with the required rights in your SQL Server instance.<\/p>\n<p>Below you can see the project you need to run in order to generate the databases. It will take a few minutes the first time. <\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/32\/2019\/03\/4064.image_7CC8AAA1.png\"><img decoding=\"async\" title=\"image\" border=\"0\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/32\/2019\/03\/1263.image_thumb_3C929127.png\" width=\"319\" height=\"284\" \/><\/a>&#160; <\/p>\n<p>After that, you\u2019ll be able to run the Windows Store apps, WPF Desktop app, etc., as well.<\/p>\n<p><strong>OPTIONAL STEP (NOT REQUIRED):<\/strong><\/p>\n<p>If you want to use Windows Azure SERVICE BUS as the implementation for the Event-Bus instead of the simple custom in-memory event-bus (for the integration events between different Bounded-Contexts), you must provide the required info of your SERVICE BUS in Windows Azure, within the Web.config of the MyConferences.SPA.Web project:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/32\/2019\/03\/2844.image_1C77846A.png\"><img decoding=\"async\" title=\"image\" border=\"0\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/32\/2019\/03\/1856.image_thumb_2A49CA65.png\" width=\"844\" height=\"402\" \/><\/a> <\/p>\n<p>The Facebook App ID should be changed if you want to use a different FaceBook App definition, although that is not required to make the app work. The Facebook authentication is not related to the Event-Bus, neither. <\/p>\n<p>Then, about the Azure Service bus, you also need to specify to the UNITY container that the implementation for the interface IEventBus will be the Azure SB instead of the custom-in-memory bus:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/32\/2019\/03\/1362.image_232A8DED.png\"><img decoding=\"async\" title=\"image\" border=\"0\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/32\/2019\/03\/1385.image_thumb_22BE5AF8.png\" width=\"830\" height=\"430\" \/><\/a> <\/p>\n<p>&#160;<\/p>\n<p><strong>DOWNLOAD:<\/strong><\/p>\n<p>An finally, here\u2019s where you can download it:<\/p>\n<p><a title=\"http:\/\/sdrv.ms\/13DjESg\" href=\"http:\/\/sdrv.ms\/13DjESg\">http:\/\/sdrv.ms\/13DjESg<\/a>&#160;<\/p>\n<p>&#160;<\/p>\n<p><strong>IMPORTANT<\/strong>: Current version of this sample application is \u201cBETA\u201d. We\u2019re still refactoring quite a few points and I\u2019ll be publishing the final version of this example in MSDN Samples, just right after TechEd Europe (late June). If you have feedback, send it to me so we can take it into account while refactoring. \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Related to the session I delivered at TechEd 2013 North America, I\u2019m using a sample application we created called \u201cMY CONFERENCES\u201d. This is the session at TechEd U.S. (New Orleans): https:\/\/channel9.msdn.com\/Events\/TechEd\/NorthAmerica\/2013\/DEV-B204#fbid=L6pa5lhw3Vn&#160; This sample application is really the v2.0 or evolution of the \u201cMY EVENTS\u201d sample application we created a few months ago, but we added [&hellip;]<\/p>\n","protected":false},"author":362,"featured_media":12806,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-183","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cesardelatorre"],"acf":[],"blog_post_summary":"<p>Related to the session I delivered at TechEd 2013 North America, I\u2019m using a sample application we created called \u201cMY CONFERENCES\u201d. This is the session at TechEd U.S. (New Orleans): https:\/\/channel9.msdn.com\/Events\/TechEd\/NorthAmerica\/2013\/DEV-B204#fbid=L6pa5lhw3Vn&#160; This sample application is really the v2.0 or evolution of the \u201cMY EVENTS\u201d sample application we created a few months ago, but we added [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cesardelatorre\/wp-json\/wp\/v2\/posts\/183","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/cesardelatorre\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/cesardelatorre\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cesardelatorre\/wp-json\/wp\/v2\/users\/362"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cesardelatorre\/wp-json\/wp\/v2\/comments?post=183"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cesardelatorre\/wp-json\/wp\/v2\/posts\/183\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cesardelatorre\/wp-json\/wp\/v2\/media\/12806"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/cesardelatorre\/wp-json\/wp\/v2\/media?parent=183"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cesardelatorre\/wp-json\/wp\/v2\/categories?post=183"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cesardelatorre\/wp-json\/wp\/v2\/tags?post=183"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}