Skip to content

1. 简介

本文档的 PDF 版本可通过 |HERE| 获取。

本文档的示例可通过 |HERE| 获取。

我们希望编写一个 .NET 应用程序,允许用户对某市镇“幼儿之家”协会的保育员工资进行计算模拟。 我们将既关注应用程序代码的结构,也关注代码本身。

最终的应用程序,我们将命名为 [SimuPaie],将具有以下三层结构:

  • [1-dao]层(DAO=数据访问对象)负责数据访问。这些数据将存储在数据库中。
  • [2-métier]层将负责应用程序的业务逻辑,即薪资计算。
  • [3-ui]层(ui=用户界面)将负责向用户展示数据并处理其请求。我们将承担此功能的全部模块统称为[Application]。它是用户与系统的交互界面。
  • 通过使用接口,这三个层将实现相互独立。
  • 各层之间的集成将由 Spring IoC 实现

处理客户端请求的流程如下:

  1. 客户端向应用程序发起请求。
  2. 应用程序处理该请求。 为此,它可能需要 [métier] 层的协助;如果需要与数据库交换数据,该层又可能需要 [dao] 层的协助。应用程序从 [métier] 层收到响应。
  3. 根据该响应,应用程序向客户端发送相应的视图(即响应)。

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

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

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

  1. 一个 ASPNET 版本,包含一个表单,并采用单层架构构建。
  2. 一个与前一个版本相同但带有 Ajax 扩展的版本
  3. 一个版本 ASP.NET,基于三层架构,其中数据访问层使用框架 NHibernate 实现。它仍将保留版本 1 中的唯一表单。
  4. 第4版 ASP.NET,采用多视图单页设计,并沿用第3版的三层架构。
  5. 客户端/服务器应用程序的服务器端,其中服务器由基于第3版分层架构的Web服务实现。
  6. 前述客户端/服务器应用程序的客户端部分,由 ASP.NET 层实现。
  7. 一个采用第 3 版三层架构的第 7 版 ASP.NET 多视图和多页面版本。
  8. 第 8 版 ASP.NET,作为第 5 版 Web 服务的客户端,具有多视图和多页面功能。
  9. 一个版本 9 ASP.NET,具有多视图和多页面功能,采用版本 3 的三层架构,其中数据访问层由 Spring 类实现,这便于使用 NHibernate 框架。
  10. 一个基于 FLEX 实现的第 10 版,并作为第 5 版 Web 服务的客户端。

先决条件


在 [débutant-intermédiaire-avancé] 框架中,本文档位于 [intermédiaire] 部分。理解本文需要满足若干先决条件,相关内容可参见我撰写的部分文档:

  1. ASP.NET 编程 [使用 ASP.NET 1.1 进行 Web 开发 (2004)使用 ASP.NET 1.1 进行 Web 开发 (2004)];
  2. C# 2008 语言:[使用 .NET Framework 3.5 学习 C# 3.0(2008)]:类、接口、继承、多态
  3. [Spring IoC],可在 URL 和 [Spring IoC pour .NET ] 中获取。 介绍Spring.Net [http://www.springframework.net]框架中的控制反转(Inversion of Control)或依赖注入(Dependency Injection)基础。
  4. [Construction d'une application web à trois couches avec Spring et VB.NET],相关内容可参见URL [使用 Spring.NET 和 VB.NET 创建三层 Web 应用程序 (2005)]。本课程介绍了一个简化的网络购物应用。其三层架构实现了MVC模型。

本文档各段落开头有时会提供阅读建议,这些建议引用了前面的文档。


工具


本案例研究中使用的工具均可免费从网上获取,具体包括:

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