项目简介

  Microsoft – Spain团队有一个很不错的面向领域多层分布式项目案例:Microsoft – Domain Oriented N-Layered .NET 4.0 App Sample(在本系列文章中,我使用NLayerApp作为该项目的名称进行介绍),在codeplex上的地址是:http://microsoftnlayerapp.codeplex.com/

  它是学习领域驱动设计(DDD)的一个非常不错的案例项目。该项目采用的是经典的DDD架构,而不是CQRS架构,但我觉得整个案例做的非常不错,基本上包含了基于DDD的架构实践的各个方面。因此,应不少社区朋友的要求,我打算花一部分精力来写一个介绍该项目理论与实践的系列文章。这部分系列文章将分为两个部分:

  1. 原理部分:这部分介绍Microsoft NLayerApp的一些理论依据,包括架构设计原则、分层架构、DDD、Distributed DDD、面向对象分析与设计等。事实上,microsoftnlayerapp.codeplex.com站点上已经有一些文档对这部分内容作了介绍,因此,原理部分的内容我将基本上是对这些英文文档进行翻译整理,然后再添加一些自己的注释,这样做的好处是,能够就整个企业级项目的开发与设计为读者提供一套相对系统全面的学习材料。NLayerApp的官方站点本身也在做西班牙语到英语的翻译工作,所以这部分英文文档也并不全面,我会在新英文版文档发布后,在此相应地添加所缺失的部分
  2. 实践部分:这部分将对整个NLayerApp Solution的结构、各个逻辑层、各种用到的技术进行剖析和介绍。与原理部分不同,此部分内容更关注技术的具体实现细节,而不是去讨论什么是面向对象,什么是分层架构等基础性问题

  注意:Microsoft – Spain团队一直以Domain Oriented一词来形容这个项目,而不是用Domain Driven Design,原因是,Domain Driven Design包含的内容,不仅仅是某一种架构技术,它还包含软件项目的开发方式、开发团队的协作管理、用于领域专家和软件人员之间的通用语言的创建等内容。然而,在整个NLayerApp项目中,并没有用到DDD的所有这些内容,项目的范围仅限于逻辑/技术层面的架构设计。

  NLayerApp项目环境搭建

  在开始这个系列文章之前,先让我们把NLayerApp的项目环境搭建好。在搭建环境之前,请检查你的电脑是否满足下面的先决条件:

  • Visual Studio 2010 RTM 和 .NET 4.0 RTM
  • Expression Blend 4(好像微软公共官方网站没有直接的下载地址,只有MSDN订阅用户才能下载到完整版本。不过使用Expression Blend SDK for Silverlight 4应该也是可以的。下载地址是:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=d197f51a-de07-4edf-9cba-1f1b4a22110d)
  • SQL Server 2008 R2 Express/Standard/Enterprise(本系列文章使用的是Express版本)
  • Unity Application Block 2.0 – 5/5/2010发布(下载地址:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=2D24F179-E0A6-49D7-89C4-5B67D939F91Bdisplaylang=en)
  • Pex Moles 0.94.51023.0, Visual Studio 2010 Power Tools, 10/29/2010发布(地址:http://research.microsoft.com/en-us/projects/pex/downloads.aspx#PexMSDN)
  • WPF Toolkit:http://wpf.codeplex.com/releases/view/40535
  • Silverlight 4 Tools for Visual Studio 2010: http://www.microsoft.com/downloads/en/details.aspx?displaylang=enFamilyID=b3deb194-ca86-4fb6-a716-b67c2604a139
  • Silverlight 4.0 Toolkit (4/15/2010): http://silverlight.codeplex.com/releases/view/43528
  • Windows Server AppFabric(可选,本系列文章用不到):http://www.microsoft.com/downloads/en/details.aspx?FamilyID=467e5aa5-c25b-4c80-a6d2-9f8fb0f337d2
  • Windows Azure SDK Azure Tools for VS2010, Nov. 2010(可选,本系列文章用不到):http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7a1089b6-4050-4307-86c4-9dadaa5ed018

  请按下面的步骤安装和配置NLayerApp:

  1. 完成上述开发包的安装和配置(最后两项可以不安装,本系列文章没有用Windows Server AppFabric和Azure的功能)
  2. 下载NLayerApp v1.0的压缩包,地址是:http://microsoftnlayerapp.codeplex.com/releases/view/56660,选择V1.0 - N-Layer DDD Sample App NET4.0,本系列文章将使用这个版本进行介绍
  3. 解压缩下载完的zip包,包含三个文件夹:CORE、CORE-APPFABRIC和CORE-AZURE。本系列文章没使用AppFabric和Azure,所以,直接进入CORE目录
  4. 暂时直接无视Tests,所以,双击打开NLayerAppWithoutTesting.sln解决方案
  5. 这个解决方案没有将Infrastructure.Data.MainModule.Mock项目添加进来,这会导致Infrastructure.CrossCutting.IoC项目无法编译通过。在Visual Studio中,将解决方案展开到1.5.1 Data节点,在该节点上右键单击,选择Add | Existing Project,然后在CORE的Infrastructure.Data.MainModule.Mock目录下选择Infrastructure.Data.MainModule.Mock.csproj项目文件,并单击Open按钮
  6. Server Explorer中,右键单击Data Connections节点,选择Create New SQL Server Database选项
  7. 在打开的Create New SQL Server Database对话框中,填入你的Server地址,然后输入数据库名称,再单击OK按钮。本案例使用SQL Express(with Windows Authentication),使用默认的数据库名称NLayerApp

    你完全可以选择自己定义的SQL Server和数据库名称,如果你是使用自己定义的SQL Server和数据库的话,请同时修改2 – Database节点下NLayerAppDatabase项目的属性:右键单击NLayerAppDatabase项目,选择Properties,在Property页的Deploy选项卡中修改相关参数:

  8. 右键单击NLayerAppDatabase项目,然后单击Deploy,这将创建数据库Schema
  9. 编译整个解决方案
  10. 1.2 – Distributed Services节点下,找到DistributedServices.Deployment项目,右键单击项目下的MainModule.svc文件,选择View in Browser,以启动WCF服务
  11. 启动用户界面。NLayerApp v1.0提供以下几种用户界面:基于RIA的Silverlight 4.0 Client,基于Web的ASP.NET MVC Client,基于Windows的WPF Client
    基于RIA的Silverlight 4.0 Client
    右键单击Silverlight.Client.Web项目下的Silverlight.Client.Web.html文件,选择View in Browser,则启动基于RIA的Silverlight 4.0 Client

    基于Web的ASP.NET MVC Client
    MVC.Client项目设置为启动项目并直接运行,可以启动基于Web的ASP.NET MVC Client

    可能是我浏览器版本低的缘故,得到的ASP.NET MVC页面布局有点乱
    基于Windows的WPF Client
    WPF.Client项目设置为启动项目并直接运行,可以启动基于Windows的WPF Client

  本文介绍了NLayerApp项目的基本情况和环境搭建。从下一讲开始,我们将进入架构设计的理论学习部分,包括:分层架构、SOLID与设计原则、面向领域驱动设计(DDD)的架构趋势以及分布式DDD(Distributed DDD,DDDD)。这部分内容将主要来自于NLayerApp官网(microsoftnlayerapp.codeplex.com)提供的英文文档,daxnet将在此做翻译、整理与注解。

一起谈.NET技术,Microsoft NLayerApp案例理论与实践 - 项目简介与环境搭建相关推荐

  1. Microsoft NLayerApp案例理论与实践 - 项目简“.NET研究”介与环境搭建

    项目简介 Microsoft – Spain团队有一个很不错的面向领域多层分布式项目案例:Microsoft – Domain Oriented N-Layered .NET 4.0 App Samp ...

  2. 一起谈.NET技术,Microsoft NLayerApp案例理论与实践 - 多层架构与应用系统设计原则...

    在对NLayerApp实际项目进行讨论之前,让我们首先学习一下(或者应该说重温一下)分层/多层架构与应用系统设计原则.很多朋友会认为这些都是老掉牙的内容,只要是软件从业人员,都会对这些内容非常熟悉.然 ...

  3. 【学习OpenCV4】案例3:OpenCV Python语言开发环境搭建

    本书分享内容来自图书学习OpenCV 4:基于Python的算法实战>,该书刚刚上市,是国内第一本系统讲解OpenCV4各个模块的图书,配套案例深入浅出的讲解.第一章有在各个平台搭建环境的介绍, ...

  4. 软件工程理论与实践项目

    这次软件工程理论与实践分组情况,经过大家一起的思考学习,我们选定的项目是微信小程序拼车.然后我们开展了需求分析,最终确定为两大方向:1.学生发起拼车.2.学生寻找队伍.然后我按照了队伍完成的用例图的基 ...

  5. Elasticsearch技术解析与实战(一)基础概念及环境搭建

  6. PyTorch机器学习与深度学习技术方法与案例实践应用

    目录 第一章.Python基础知识串讲 第二章.PyTorch简介与环境搭建 第三章.PyTorch编程入门与进阶 第四章.PyTorch前向型神经网络 第五章.PyTorch卷积神经网络 第六章.P ...

  7. 高并发-【抢红包案例】之一:SSM环境搭建及复现红包超发问题

    文章目录 概述 抢红包案例 案例关注点 工程结构 库表设计 Domain Dao层实现 Service层实现 使用全注解搭建SSM 开发环境 Controller层 View层 运行测试 超量发送的B ...

  8. 大数据技术之Hadoop概述集群环境搭建常见错误解决等

    Hadoop概述 文章目录 Hadoop概述 1. Hadoop是什么 2. Hadoop发展历史 4. Hadoop的优势 5. Hadoop组成 6. 大数据技术生态体系 7. 推荐系统框架图略图 ...

  9. 技术人员谈管理之整体管理案例论文

    本论文为本人准备项目管理师考试的时候写的,已经通过考试,现在把论文共享出来,供考试和项目的管理者借鉴.本人相信有志者事竟成,只要肯努力,就一定能通过考试. 摘要: 2011年8月,我作为项目经理参与了 ...

最新文章

  1. 优达学城《DeepLearning》2-3:权重初始化
  2. 新上任项目经理遇到的难题
  3. 【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!...
  4. Nginx如何限流?
  5. 跑三小时的monkey测试该怎么算_百亿次的锤炼 - 带逛Dragonboat的各类测试
  6. java 栈 泛型_java 泛型栈(数组实现) | 学步园
  7. python读取每一行文字二十四_python接口自动化(二十四)--unittest断言——中(详解)...
  8. 入门篇|学渣是如何自学数据结构的?
  9. Django 的系统时区设置 RPC
  10. 卡尔曼滤波—建立状态空间表达式
  11. tar -xf_【图】兼具优雅与运动 抢先实拍改款捷豹XF
  12. 中国最美的一千个汉字 : 千字文
  13. 腾讯云轻量应用服务器搭建网站
  14. 高德地图placesearch 搜索结果生成自定义marker
  15. html给图片和文字加链接 a标签的用法
  16. cad能整体比例缩小吗_cad怎么把原尺寸图缩小几倍
  17. html的img标签repeat,border-image-repeat属性怎么用
  18. 943数据结构勘误表
  19. 水深6到9米有鱼吗_钓大鱼就要打重窝?别一概而论,根据鱼的摄食量来打窝才对路...
  20. android MediaPlayer架构

热门文章

  1. 一键转载CSDN博客
  2. JAVA的if用法比如if(...){} 和if()没有区别
  3. java声明接口_为什么必须用Java声明接口?
  4. python 中定义的函数 如何在main中调用_在python中,在定义类时自动运行函数的方法?_class_酷徒编程知识库...
  5. linux使用vim同时打开文件,VIM 在同一个窗口中同时编辑多个文件
  6. oracle服务器文件有哪些,Oracle服务器参数文件维护的技巧有哪些呢?
  7. hashmap put过程_阿里面试官:HashMap数据结构之道
  8. 标记偏置 隐马尔科夫 最大熵马尔科夫 HMM MEMM
  9. 操作计算机的英文,操作计算机必读的53个英文单词
  10. 社区发现(六)--模块度