zoukankan      html  css  js  c++  java
  • 领域驱动设计案例:Tiny Library:简介

    应广大网友的要求,我最近抽空基于ASP.NET MVC + WCF + Entity Framework做了一个案例,该案例以图书馆图书管理、读者借书、还书为业务背景,以领域驱动设计为思想指导,全程采用Microsoft技术进行实践,希望能够给Microsoft技术的狂热者以及领域驱动设计的学者提供实践参考。

    本案例选用的业务逻辑非常简单,所以项目取名上我选用了“Tiny Library”,在后面一章我将详细介绍这个案例的业务逻辑、模型设计与系统架构。

    下载案例

    本来打算将项目发布到codeplex上,便于大家交流,也便于代码更新与维护,但由于某些原因,我无法在自己的网络环境中连接codeplex的svn/tfs服务,于是,目前只能以压缩包的形式发布案例源代码,希望大家谅解,等以后有机会更新到codeplex上后再通知大家。

    【请单击此处下载案例源代码】

    系统需求

    • Microsoft Visual Studio 2010
    • Microsoft Patterns & Practices 5.0(v5.0.414.0,Runtime v2.0.50727。请自行到Microsoft官方网站下载安装)
    • Microsoft ASP.NET MVC 2
    • Microsoft Entity Framework(注意:是Visual Studio 2010自带的那个版本,而不是最新发布的那个Feature Pack CTP版本)
    • Microsoft SQL Express 2008 SP1
    • Apworks Application Development Framework

    请在打开本案例解决方案之前自行安装上述软件和组件!

    说明:Apworks Application Development Framework是我自己开发的一套领域驱动(Domain Driven)的应用程序开发框架,里面提供了对Aggregate Root、Repositories、Specifications以及Transaction Context的支持,基本能够满足基于Microsoft.NET技术的中小型领域驱动项目的应用开发。目前这个框架项目正在进一步实现基于CQRS体系结构模式的框架。为了节约时间,本系列文章不会对Apworks Application Development Framework做太多介绍。本框架目前也还是under construction,所以读者朋友也千万不要将其用在自己的系统开发中,以免发生危险!有关Apworks Application Development Framework的源代码以及更多信息,请访问项目站点:http://apworks.codeplex.com。Tiny Library压缩包里包含了一个可被Tiny Library使用的Apworks版本,因此读者朋友无需自己去Apworks站点上下载并编译源代码。当然,如果您希望了解Apworks的实现方式,可以使用上面的站点查看Apworks的源代码。

    安装部署

    1. 建立数据库
      使用Microsoft Visual Studio 2010提供的Server Explorer功能,在Data Connections上单击鼠标右键,选择Create New SQL Server Database选项,此时出现Create New SQL Server Database对话框,在对话框的Server name中输入(local)\SQLEXPRESS,在New database name中输入TinyLibraryDB,之后单击OK按钮
      image
    2. 创建数据库Schema
      使用Microsoft Visual Studio 2010打开TinyLibrary解决方案,在TinyLibrary.Domain项目节点下找到TinyLibrary.edmx.sql脚本文件,打开此脚本文件,在SQL Editor区域,点击鼠标右键,选择Connection | Connect菜单,此时弹出Connect to Database Engine对话框,Server选择SQLEXPRESS,然后单击OK
      image
      再次在SQL Editor区域点击鼠标右键,选择Execute SQL选项,执行SQL脚本以创建数据库Schema
      image
    3. 建立演示数据(Demo Data)
      以上述同样的方式,打开TinyLibrary.Domain项目下的TinyLibrary.DemoData.sql脚本并执行
    4. 3722端口
      Tiny Library的WCF Service采用3722端口作为其服务的固定端口,因此在使用本案例钱,确保该端口未被其它应用程序占用


    运行案例

    1. 在Microsoft Visual Studio 2010的Solution Explorer上,右键单击TinyLibrary Solution然后选择Rebuild Solution以重新编译解决方案
      image
    2. 在TinyLibrary.Services项目下,选中TinyLibraryService.svc,然后单击右键,选择View in Browser,此时会自动打开ASP.NET Development Server,端口占用3722,同时打开WCF Service的页面。此时将WCF Service的页面关闭,仅留下ASP.NET Development Server
      image
    3. 右键单击TinyLibrary.WebApp项目,选择Set as StartUp Project选项,然后在Microsoft Visual Studio中按下Ctrl+F5或者Debug | Start Without Debugging选项以启动应用程序
    4. 应用程序启动后,可以看到主界面如下
      image 

    登录账号

    测试需要,Tiny Library默认提供三个用户账户:daxnet、acqy和james。用户名、密码如下:

    1. 登录名:daxnet;名称:DaxNet;密码:daxnet@live.com
    2. 登录名:acqy;名称:Sunny Chen;密码:acqy@163.com
    3. 登录名:james;名称:james;密码:james@tinylibrary.com

    额外说明

    时间有限,本案例仅仅是一个基于Microsoft.NET技术的领域驱动设计实践案例,因此,如下内容没有包含在本案例中:

    1. 基于AOP和Policy Injection的技术实践。这包括:异常处理、数据验证与系统日志
    2. 基于用户/角色验证的图书维护页面
    3. ASP.NET MVC的高级应用
    4. WCF的异常捕获与显示
    5. 单元测试
    6. 其它的一些技术细节

    有兴趣的朋友可以在本案例源代码的基础上进行扩充,以实现一套完整的图书馆管理应用。

  • 相关阅读:
    管道命令'|' 和xargs find命令找到后把所有找到的删除
    UVa
    【手势交互】9. PS Move
    jquery时间格式化插件
    Android学习路线(十三)Activity生命周期——暂停和恢复(Pausing and Resuming )一个Activity
    hdu 2604 Queuing (矩阵高速幂)
    【Linux驱动】TQ2440 DM9000E网卡驱动移植(Linux-2.6.30.4)
    bzoj2648 SJY摆棋子
    Hive编程指南_学习笔记01
    通信协议中的转义符
  • 原文地址:https://www.cnblogs.com/daxnet/p/1853944.html
Copyright © 2011-2022 走看看