项目简介

  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的所有这些内容,项目的范围仅限于逻辑/技术层面的架构设计。

<上海企业网站设计与制作p>  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的Infrastru上海企业网站制作cture.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将在此做翻译、整理与注解。

转载于:https://www.cnblogs.com/waw/archive/2011/10/15/2213516.html

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

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

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

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

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

  3. 10天基于STM32F401RET6智能锁项目实战第1天(环境搭建和新建工程)

    10天基于STM32F401RET6智能锁项目实战第1天(环境搭建和新建工程) 一.环境搭建 二.新建工程 一.环境搭建 1.安装keil5 2.安装支持包 这里按照需求安装支持包,有F4和F1的支持 ...

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

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

  5. kafka项目启动_Kafka 探险 源码环境搭建

    这个 Kafka 的专题,我会从系统整体架构,设计到代码落地.和大家一起杠源码,学技巧,涨知识.希望大家持续关注一起见证成长! 我相信:技术的道路,十年如一日!十年磨一剑! 前言 在阅读源码之前,首先 ...

  6. cocos2d-x项目101次相遇-安装和环境搭建 -xcode

    cocos2d-x 101次相遇 / 目录 1   安装和环境搭建 -xcode 2   Scenes , Director, Layers, Sprites 3   建立图片菜单 4   在Hell ...

  7. 【IC萌新虚拟项目】ppu整体uvm验证环境搭建

    关于整个虚拟项目,请参考: [HISI IC萌新虚拟项目]Package Process Unit项目全流程目录_尼德兰的喵的博客-CSDN博客 前言 本篇文章完成ppu整体uvm环境搭建的指导,在进 ...

  8. 【IC萌新虚拟项目】ppu模块的编译环境搭建与RTL编译

    关于整个虚拟项目,请参考: [HISI IC萌新虚拟项目]Package Process Unit项目全流程目录_尼德兰的喵的博客-CSDN博客 前言 虚拟机为芯王国公众号提供的虚拟机,虚拟机内置vc ...

  9. Vue组件化京东金融项目实战详细笔记一:环境搭建

    文章目录 一.环境准备 1.nvm(Node版本管理工具) 2.git 3.webpack(重要) 4.babel(重要) 5.需要预先掌握的知识体系 6.初始化构建代码 二.git分支(方便我们及时 ...

最新文章

  1. Unable to inject views for BcFragment{8d4c0 #1 id=0x7f0d00a1}
  2. java 按键框架,如何在java中更改框架?
  3. QML范围和命名分辨率
  4. oracle使用sqlplus工具命令连接,快速启动oracle服务。
  5. mysql error handler_MySql错误处理(二) - Condition Handle
  6. centos8部署Django项目---后台运行
  7. Leetcode--144. 二叉树的前序遍历(迭代递归)
  8. 2018北京大学计算机考研分数线,2018年北京大学考研复试分数线已公布
  9. 从零开始自学c语言,从零开始学习C语言
  10. 腾讯封杀linux/mac QQ
  11. 计算机科学与技术的主要研究方向,计算机科学与技术学科方向与特色
  12. 随机效应估算与固定效应估算_混合OLS模型、固定效应模型、随机效应模型的区别是什么...
  13. 火热的区块链技术,也能解决文化领域的这些痛点
  14. 计算机网络未识别网络,电脑网络连接出现未识别的网络怎么办
  15. MzTreeView(梅花雪)
  16. Pyinstaller的Spec文件用法
  17. 操作系统课程设计 Pintos 1 ALarm Clock 问题
  18. mysql字段的区分度_详解MySQL索引长度和区分度之间的平衡,值得收藏
  19. 使用 ktra 搭建私人 Cargo registry
  20. 【操作系统】进程调度(3):RR(轮转) 算法 原理与实践

热门文章

  1. android 自定义键盘高度不对,NVUE 容器一旦设置了position且容器高度不能超过整屏,在安卓端就会被键盘遮挡...
  2. mysql创建库几种方法_MySQL创建数据库的两种方法
  3. 同时打包多个场景_人机CP模式闯入“打包界”,智能设备让每一厘米纸箱物尽其用...
  4. mysql数据库名虚拟机_linux虚拟机上装mysql数据库
  5. python中使用html前端页面显示图像预测结果(改进)
  6. PTA团体程序设计天梯赛-L2-024 部落
  7. lookup函数和vlookup_5个实用案例告诉你,为什么说Lookup函数比vlookup更简单
  8. (每日一题)2016 北京ICPC网络赛G hihocoder 1388 (中国剩余定理 + NTT)
  9. Codeforces 1408 D. Searchlights(优化DP、思维)
  10. 【每日DP】day 10、P1005 矩阵取数游戏【区间DP+高精(python)】难度⭐⭐⭐★