{"id":883,"date":"2010-03-25T16:47:00","date_gmt":"2010-03-25T16:47:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/cesardelatorre\/2010\/03\/25\/our-brand-new-ddd-n-layered-net-4-0-architecture-guide-book-and-sample-app-in-codeplex\/"},"modified":"2010-03-25T16:47:00","modified_gmt":"2010-03-25T16:47:00","slug":"our-brand-new-ddd-n-layered-net-4-0-architecture-guide-book-and-sample-app-in-codeplex","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cesardelatorre\/our-brand-new-ddd-n-layered-net-4-0-architecture-guide-book-and-sample-app-in-codeplex\/","title":{"rendered":"Our brand-new &#8216;DDD N-Layered .NET 4.0 Architecture Guide\u2019 book and Sample-App in CODEPLEX"},"content":{"rendered":"<p><a href=\"http:\/\/msdn.microsoft.com\/cc982177.aspx\"><img decoding=\"async\" title=\"Platform Architecture Team\" src=\"http:\/\/i.msdn.microsoft.com\/aa699358.MoA-Small(en-us,MSDN.10).png\" alt=\"Platform Architecture Team\" align=\"left\" \/><\/a><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/32\/2019\/03\/image_2.png\"><img decoding=\"async\" style=\"width: 449px;height: 138px;border-width: 0px\" title=\"image\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/32\/2019\/03\/image_thumb.png\" alt=\"image\" width=\"453\" height=\"141\" border=\"0\" \/><\/a><\/p>\n<p><strong>[UPDATED &#8211; April\u00a02017] &#8211; IMPORTANT: \u00a0<span>For up-to-date architecture and development guidance using .NET (i.e. .NET Core, ASP.NET Core, Docker containers, etc.) including Domain-Driven Design patterns, microservices architectures and other .NET related technologies like Xamarin for mobile apps check this landing page pointing to multiple NEW guides and reference applications:<\/span><\/strong><\/p>\n<p><a href=\"https:\/\/www.microsoft.com\/net\/architecture\/\">https:\/\/www.microsoft.com\/net\/architecture\/<\/a><\/p>\n<p>Specifically, most of the DDD (Domain-Driven Design) patterns explained in the guidance written in 2010\/2011 are still valid nowadays, however all the technologies have evolved significantly. Also, many new architecture patterns like Microservices Architecture *which is deriving from Domain-Driven Design) have been polished and improved over the years.<\/p>\n<ul>\n<li>For an up-to-date guide\/eBook on Microservices\/Containers Architecture with .NET Core, check this:\n<ul>\n<li><a href=\"http:\/\/aka.ms\/MicroservicesEbook\">http:\/\/aka.ms\/MicroservicesEbook<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>For an up-to-date reference application\u00a0on Microservices\/Containers Architecture with .NET Core, check this:\n<ul>\n<li><a href=\"http:\/\/aka.ms\/MicroservicesArchitecture\">http:\/\/aka.ms\/MicroservicesArchitecture<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong><\/strong>Thanks,<\/p>\n<p>Cesar.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>[UPDATED &#8211; Feb. 2013] <\/strong>The sample application can be downloaded from here: <a href=\"https:\/\/1drv.ms\/u\/s!Ag33_uWyTcH5n9g2UGtmmF11BefagQ\" title=\"https:\/\/1drv.ms\/u\/s!Ag33_uWyTcH5n9g2UGtmmF11BefagQ\">https:\/\/1drv.ms\/u\/s!Ag33_uWyTcH5n9g2UGtmmF11BefagQ<\/a><\/p>\n<p>The last <strong>released Guide chapters (v2)<\/strong> can be downloaded from here: <a href=\"https:\/\/1drv.ms\/u\/s!Ag33_uWyTcH5n9g4QYJtUF9Zdyelxw\" title=\"https:\/\/1drv.ms\/u\/s!Ag33_uWyTcH5n9g4QYJtUF9Zdyelxw\">https:\/\/1drv.ms\/u\/s!Ag33_uWyTcH5n9g4QYJtUF9Zdyelxw<\/a><\/p>\n<p>&#8212;<\/p>\n<p>Original (v1) PDF eBooks:<\/p>\n<p>(English): https:\/\/1drv.ms\/u\/s!Ag33_uWyTcH5n9g5NrdCNie7ekMn8g<\/p>\n<p>(Spanish): https:\/\/1drv.ms\/u\/s!Ag33_uWyTcH5n9g6pTGYuXWL9t9uLg<\/p>\n<p><em>The DDD approaches and patterns explained in the guide are still valid, but the technologies used in the sample app are outdated as they are from 2011.<\/em><\/p>\n<p><strong><em>For an updated technologies positioning and <em>global approaches\u00a0<\/em>recommendations, where DDD is also positioned from a high level point of view, read this guide:<\/em><\/strong><\/p>\n<p><strong><em>.NET Technology Guide for Business Applications (2013):\u00a0<\/em><em><a href=\"http:\/\/www.microsoft.com\/net\/nettechnologyguidance\">http:\/\/www.microsoft.com\/net\/nettechnologyguidance<\/a>\u00a0\u00a0<\/em><\/strong><\/p>\n<p><strong><em>also available as free eBook from MS PRESS:\u00a0<\/em><\/strong><\/p>\n<p><a href=\"http:\/\/blogs.msdn.com\/b\/microsoft_press\/archive\/2013\/11\/13\/free-ebook-net-technology-guide-for-business-applications.aspx\">http:\/\/blogs.msdn.com\/b\/microsoft_press\/archive\/2013\/11\/13\/free-ebook-net-technology-guide-for-business-applications.aspx<\/a><\/p>\n<p><strong><strong>[UPDATED &#8211; May 2011]<\/strong><\/strong><\/p>\n<p>We just published the English version of our &#8216;DDD N-Layered .NET 4.0 Architecture Guide\u2019 book (at MSDN).<\/p>\n<p>The \u2018landing page\u2019 where you can download the free eBook in several formats like .PDF, .XPS and for eBook Readers (.EPUB, .MOBI) is the following:\n<a href=\"http:\/\/msdn.microsoft.com\/es-es\/architecture\/en\/\">http:\/\/msdn.microsoft.com\/es-es\/architecture\/en\/<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>It is also available from AMAZON:\u00a0<a href=\"http:\/\/www.amazon.com\/N-Layered-Domain-Oriented-Architecture-Guide-NET\/dp\/8493903612\/ref=sr_1_1?ie=UTF8&amp;qid=1386007359&amp;sr=8-1&amp;keywords=domain+oriented+nlayer\">http:\/\/www.amazon.com\/N-Layered-Domain-Oriented-Architecture-Guide-NET\/dp\/8493903612\/ref=sr_1_1?ie=UTF8&amp;qid=1386007359&amp;sr=8-1&amp;keywords=domain+oriented+nlayer<\/a><\/p>\n<p><strong>[UPDATED &#8211; Feb. 13th 2011]<\/strong><\/p>\n<p>We are currently in the process of translating our \u201c<em><strong>Domain Oriented NLayered Architecture<\/strong><\/em>\u201d book to <strong>English<\/strong> (Spanish Guide\/Book was released during early December 2010), but for the sake of many people who were asking for the English version, we decided to publish the draft chapters with a &#8216;pre-final&#8217; state, at our CODEPLEX site.\nHere you can download only the <strong>English &#8216;Pre-Final&#8217; drafts<\/strong>:\n<a href=\"http:\/\/microsoftnlayerapp.codeplex.com\/releases\/view\/56660#DownloadId=207782\"><strong>http:\/\/microsoftnlayerapp.codeplex.com\/releases\/view\/56660#DownloadId=207782<\/strong><\/a>\nPlease send your feedback\/errata (typos, technical or any grammatical mistakes) to: <strong>cesardl at microsoft dot com<\/strong><\/p>\n<p>&#8212;&#8211;<\/p>\n<p>We (Microsoft DPE-Spain ) just published in <strong>MSDN<\/strong>-Spain &amp; <strong>CODEPLEX<\/strong> our new <strong>DDD N-Layered .NET 4.0 Architecture Application guide book<\/strong> (e-book &amp; printed book as a gift in our events) and <strong>Sample-App (published in CODEPLEX)<\/strong>, based on <strong>.NET 4.0 wave, Entity Framework 4.0, Unity, WCF, PEX<\/strong> (Moles &amp; Stubs) for Unit Testing and mocking, etc.<\/p>\n<p><span style=\"text-decoration: underline\">All is still a draft documentation &amp; BETA app-example, take that into account\u2026<\/span> It will be growing\u2026 \ud83d\ude42<\/p>\n<p>Take also into account that our Guide-Book is in Spanish (we could translate it to English after summer), but our Sample-App is all in English.<\/p>\n<p>We&#8217;ve been working on it during several months and now we just published it. But I wanna highlight that the related documentation is still a DRAFT version and the App example is still an ALPHA\/BETA version, as well.<\/p>\n<p><strong>DDD Architecture Style Diagram and Guide-Book cover and Table of Content<\/strong><\/p>\n<table style=\"width: 539px;height: 686px\" border=\"0\" cellspacing=\"0\" cellpadding=\"2\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"491\"><img decoding=\"async\" style=\"margin-left: 0px;margin-right: 0px\" src=\"http:\/\/y0lekw.blu.livefilestore.com\/y1pjBDB2THRk2WF7Z5KnzrriJn48Rh0ICNMkstkV0A7s3A2hydg5_Vhf9op3IjHf0RU1qtjYFXvB9-0YwZYoYesDhyX7LgQsiEF\/DDD_NLAYER_ARCHITECTURE_SMALL.png\" alt=\"\" width=\"470\" height=\"352\" align=\"left\" \/><\/td>\n<\/tr>\n<tr>\n<td><strong>\u00a0<\/strong><\/p>\n<p><strong>e-Book (Free) \u2013 Draft version (March 2010)<\/strong>\n<a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/32\/2019\/03\/image_4.png\"><img decoding=\"async\" style=\"border: 0px\" title=\"image\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/32\/2019\/03\/image_thumb_1.png\" alt=\"image\" width=\"406\" height=\"300\" border=\"0\" \/><\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Overview<\/strong><\/p>\n<p>This project implements a simple business scenario, but it is quite end to end complete regarding <strong>DDD N-Layered Architecture style<\/strong> , <strong>.NET 4.0<\/strong> technologies and Archetypes (we&#8217;ll be growing to many different clients, starting from <strong>WPF 4.0<\/strong> , <strong>Silverlight 4.0<\/strong> , and going to <strong>ASP.NET MVC<\/strong> , <strong>OBA<\/strong> , <strong>Windows Phone<\/strong> during the next future).\nIt is very <strong>&#8216;Domain Oriented&#8217;<\/strong> , therefore, <span style=\"text-decoration: underline\">it illustrates typical <strong>DDD patterns<\/strong> , like <strong>Entity, POCO\/IPOCO Entities, Value-Object, Aggregates, Repository, Unit of Work, Specification<\/strong><\/span> (most of those patterns originally defined by <em>Eric Evans <\/em>and <em>Martin Fowler <\/em>), using ADO.NET <strong>Entity Framework 4.0 , Unity, WCF, and PEX (Stubs and Moles)<\/strong> for Unit Testing and mocking.<\/p>\n<p><em><strong>Architecture Guide material downloads<\/strong>:<\/em><\/p>\n<table style=\"width: 786px\" border=\"0\" cellspacing=\"0\" cellpadding=\"2\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"784\"><strong>Download &#8211; <\/strong><em><strong>DDD N-Layer Architecture &amp; .NET 4.0 wave implementation guide e-book &#8211; (SPANISH)<\/strong><\/em>\n<img decoding=\"async\" src=\"http:\/\/i.msdn.microsoft.com\/aa699358.icono_pdf(es-es,MSDN.10).gif\" alt=\"\" width=\"27\" height=\"26\" align=\"left\" hspace=\"5\" \/>\n<a href=\"http:\/\/msdn.microsoft.com\/es-es\/architecture\/default.aspx\">http:\/\/msdn.microsoft.com\/es-es\/architecture\/default.aspx<\/a><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"784\"><strong>Download APPLICATION EXAMPLE in CODEPLEX (<em>ENGLISH<\/em>)<\/strong>\n<img decoding=\"async\" src=\"http:\/\/i.msdn.microsoft.com\/ee402630.CodePlex_sm(en-us,MSDN.10).png\" alt=\"\" align=\"left\" hspace=\"5\" \/>\n<a href=\"http:\/\/microsoftnlayerapp.codeplex.com\/\">http:\/\/microsoftnlayerapp.codeplex.com\/<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>\u00a0<\/strong><\/p>\n<p><strong>Targets\/Objectives<\/strong><\/p>\n<p>It is\u00a0really important to note that DDD and therefore this App-Example and our .NET DDD N-Layer Architecture Guide is specifically made for Complex Apps where you have a lot of business rules. It is NOT for small and data-centric apps. If you are going to create this other kind of app, I recommend not to adopt this approach but instead going for a RAD approach line WCF-RIA-Services, which is much simpler (but it is a more coupled approach not suitable for long life apps).<\/p>\n<p><strong>Sample-App in Codeplex (WPF version)<\/strong><\/p>\n<p><img decoding=\"async\" src=\"http:\/\/y0lekw.blu.livefilestore.com\/y1p0A60PEHYIcEzS5k9knNJzOymhozk3MMvJZoj01HImr70e4l6xJajLMZkmQHaFNy9c4EDa55_pGmIdPGXqfDDzFlC6lcwc51s\/Nlayer_AppSample_Screen01.png\" alt=\"\" width=\"342\" height=\"228\" \/><img decoding=\"async\" src=\"http:\/\/y0lekw.blu.livefilestore.com\/y1p-uJFjS-QHex5BMB92IqJO9xT2eRl1pCLwuPf28YKhtXWom0WMyLje7fyVRenU1Q5VOp-rnIQtfnT9sLQ28cCHfMxLC5_6CIy\/Nlayer_AppSample_Screen02.png\" alt=\"\" width=\"342\" height=\"228\" \/><\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<p><strong>Current required Base Software <\/strong><em>(See exact versions in our Codeplex site)<\/em><\/p>\n<p><em>&#8211; Microsoft Visual Studio 2010 &#8211; RC <\/em>\n<em>&#8211; Microsoft SQL Server 2008 Express (or higher) <\/em>\n<em>&#8211; Microsoft Unity 1.2 (We&#8217;ll migrate to Unity 2.0 in the near future) <\/em>\n<em>&#8211; Microsoft PEX 2010 <\/em>\n<em>&#8211; Microsoft WPF Toolkit<\/em><em>\u00a0<\/em><\/p>\n<p><em>\u00a0<\/em><\/p>\n<p><em><strong>Next versions plan!!<\/strong><\/em><\/p>\n<p><em>For next versions &amp; App\u2019s flavors, we\u2019re actually working on several new stuff:<\/em><\/p>\n<p><em>&#8211; Adding new clients like: <strong>Silverlight 4.0, ASP.NET MVC, OBA<\/strong> and <strong>Windows Phone 7<\/strong>!!<\/em><\/p>\n<p><em>&#8211; Adding <strong>AppFabric-Cache<\/strong> (\u201cVelocity\u201d)<\/em><\/p>\n<p><em>&#8211; Adding <strong>AppFabric Hosting<\/strong> support for WCF Services<\/em><\/p>\n<p><em>&#8211; Adding <strong>Claims Orientation<\/strong>\u00a0<strong>Security<\/strong> based on <strong>WIF (Windows Identity Foundation)<\/strong><\/em><\/p>\n<p><em>&#8211; <strong>Unity 2.0<\/strong> for loosely-coupled Application Server components<\/em><\/p>\n<p><em>&#8211; Some components\/building blocks coming from <strong>Enterprise-Library 5.0<\/strong><\/em><\/p>\n<p><em>&#8211; more ideas you can have!! \ud83d\ude42<\/em><\/p>\n<p><em>\u00a0<\/em><\/p>\n<p><strong>Team<\/strong><\/p>\n<p>This project is locally supported by several Software Architects and Developers (coming from Microsoft DPE Spain, MVPs, partners and Microsoft Services). Special thanks to my collaborators:<\/p>\n<p>&#8211; <em>Unai Zorrilla (Plain-Concepts), Javier Calvarro, Miguel Angel Ramos (Microsoft), Rido Minguez (Microsoft), Pierre Millet (Microsoft), Israel Garc\u00eda Mesa (Microsoft), Roberto Gonzalez (Renacimiento) and Juan Cid (Avanade),<\/em> and some other Architects and developers I will add&#8230;\nWe&#8217;ll be happy to hearing from you and getting your feed-back to improve and evolve this Architectural example!!.<\/p>\n<p>We&#8217;ll improve it during next months, and we\u2019d love to get your feed-back and new ideas to consider!!<\/p>\n<p>Thanks a lot for your feed-back!! (You can use CODEPLEX DISCUSSIONS within our site) \ud83d\ude42<\/p>\n<p>Cesar<\/p>\n","protected":false},"excerpt":{"rendered":"<p>[UPDATED &#8211; April\u00a02017] &#8211; IMPORTANT: \u00a0For up-to-date architecture and development guidance using .NET (i.e. .NET Core, ASP.NET Core, Docker containers, etc.) including Domain-Driven Design patterns, microservices architectures and other .NET related technologies like Xamarin for mobile apps check this landing page pointing to multiple NEW guides and reference applications: https:\/\/www.microsoft.com\/net\/architecture\/ Specifically, most of the DDD [&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":[5,12,19,37,41,48,70,71,75,89,98,109],"class_list":["post-883","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cesardelatorre","tag-net-4-0","tag-ado-net","tag-architecture","tag-codeplex","tag-ddd","tag-entity-framework","tag-n-layer","tag-n-tier","tag-patterns","tag-soa","tag-unity","tag-wcf"],"acf":[],"blog_post_summary":"<p>[UPDATED &#8211; April\u00a02017] &#8211; IMPORTANT: \u00a0For up-to-date architecture and development guidance using .NET (i.e. .NET Core, ASP.NET Core, Docker containers, etc.) including Domain-Driven Design patterns, microservices architectures and other .NET related technologies like Xamarin for mobile apps check this landing page pointing to multiple NEW guides and reference applications: https:\/\/www.microsoft.com\/net\/architecture\/ Specifically, most of the DDD [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cesardelatorre\/wp-json\/wp\/v2\/posts\/883","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=883"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cesardelatorre\/wp-json\/wp\/v2\/posts\/883\/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=883"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cesardelatorre\/wp-json\/wp\/v2\/categories?post=883"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cesardelatorre\/wp-json\/wp\/v2\/tags?post=883"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}