Skip to content

1. 简介

本文档的PDF版本可在此处获取 |HERE|。

本文档中的示例可<在此处>查看。

我们计划编写一个 .NET 应用程序,允许用户模拟某市“Maison de la petite enfance”协会中儿童保育人员的薪资计算。我们将同样重视应用程序 .NET 代码的结构组织与代码本身。

最终应用程序(我们将它命名为 [SimuPaie])将采用以下三层架构:

  • [1-DAO]层(DAO = 数据访问对象)将负责数据访问。数据将存储在数据库中。
  • [2-business]层将处理应用程序的业务逻辑,即薪资计算。
  • [3-ui]层(ui = 用户界面)将负责向用户展示数据以及执行用户请求。我们将执行此功能的模块集合称为[Application]。它充当用户界面。
  • 通过使用 .NET 接口,这三个层将实现相互独立
  • 不同层之间的集成将由 Spring IoC 负责

客户端请求的处理遵循以下步骤:

  1. 客户端向应用程序发起请求。
  1. 应用程序处理该请求。为此,它可能需要[业务]层的协助,而[业务]层若需与数据库交换数据,则可能需要[DAO]层的协助。应用程序从[业务]层接收响应。
  2. 基于该响应,它向客户端发送相应的视图(即响应结果)。

呈现给用户的界面可以采用多种形式:

  1. 控制台应用程序:在此情况下,视图是一系列文本行。
  2. Windows GUI 应用程序:在此情况下,视图是一个 Windows 窗口
  3. Web 应用程序:在此情况下,视图是一个 HTML 页面
  4. ……

我们将编写该应用程序的不同版本:

  1. 一个包含单个表单且采用单层架构的 ASP.NET 版本。
  2. 一个与前一个版本完全相同但增加了 Ajax 扩展的版本
  3. 一个基于三层架构的 ASP.NET 版本,其中数据访问层使用 NHibernate 框架实现。该版本仍将保留版本 1 中的单表单。
  4. 第 4 个版本:基于第 3 个版本的三层架构,采用多视图、单页式的 ASP.NET 应用程序。
  5. 客户端/服务器应用程序的服务器端,其中服务器作为基于第3版分层架构的Web服务实现。
  6. 前述客户端/服务器应用程序的客户端部分,采用 ASP.NET 层实现。
  7. 一个采用第 3 版三层架构的多视图、多页面的 ASP.NET 第 7 版。
  8. 基于第 5 版 Web 服务的多视图、多页面的 ASP.NET 8 客户端版本。
  9. 一个采用第 3 版三层架构的多视图、多页面的 ASP.NET 9 版本,其中数据访问层使用 Spring 类实现,以方便使用 NHibernate 框架。
  10. 一个用 FLEX 实现的第 10 版,作为第 5 版 Web 服务的客户端。

先决条件


按[初级-中级-高级]的难度等级划分,本文档属于[中级]类别。要理解本文档,需要具备一些先决条件,这些内容可在笔者撰写的部分文档中找到:

  1. ASP.NET 编程 [使用 ASP.NET 1.1 进行 Web 开发];
  2. C# 2008:《使用 .NET Framework 3.5 学习 C# 3.0》:类、接口、继承、多态
  3. [Spring IoC],详见 [Spring IoC for .NET]。涵盖 Spring.NET 框架中控制反转(IoC)或依赖注入(DI)的基础知识 [http://www.springframework.net]。
  4. [使用 Spring 和 VB.NET 构建三层 Web 应用程序],可在 [使用 Spring.NET 和 VB.NET 创建三层 Web 应用程序] 网址获取。本课程介绍了一个简化的基于 Web 的产品购买应用程序。其三层架构实现了 MVC 模式。

本文档中某些段落的开头会提供阅读建议,这些建议引用了前文提及的文档。


工具


本案例研究中使用的工具可在网上免费获取。具体如下:

  • Visual C# 2008、Visual Web Developer Express 2008SQL Server Express 2005,可从网址 [http://www.microsoft.com/express/downloads/] 获取。
  • Spring IoC 用于实例化应用程序所需的服务,可访问 [http://www.springframework.net/]——另见 [3]
  • NHibernate 用于 DBMS 数据访问层 [http://sourceforge.net/projects/nhibernate/]
  • NUnit:[http://www.nunit.org] 用于单元测试。