在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统 (Part 1)

来源:互联网 发布:linux下java开发好处 编辑:程序博客网 时间:2024/03/29 20:36
在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统 (Part 1)
 
 
在新的.Net Framework 3.5平台上,Microsoft发布了LINQ(C# 3.0, VB.Net 9.0)-集成语言查询(Language-Integrated Query),也就是通过编程语言来查询数据:
  • 数据库 (LINQ to SQL)
  • DataSet 数据集(LINQ to Dataset)
  • XML文档 (LINQ to XML) 
  • 实体对象 (LINK to Entities)
本文将演示如何在ASP.NET 3.0平台上,使用LINQ to SQL构建多层的Web应用程序。在当前的编程领域中,创建N-Tier应用程序成为一般的要求,且.NET Framework 提供了灵活的支持。一般而言,N-Tier应用程序有如下几个层:1. 表示层;2. 业务逻辑层;3. 数据访问层;4. 数据库层。每一层均完成特定的任务。本篇文章中介绍的架构和经典的N-Tier相似,不过数据库层替换新的DataLinq 层,使用LINQ to SQL 完成数据操作。
图1.1:基于LINQ to SQL的N-Tier架构
 
架构思考
如果你有大型ASP.NET项目的经历,你可能会注意到更多的时间花在写组件代码,而不是Web页面代码。有时,组件的设计和管理成为一个费时的过程,你可能正遇到架构方面的问题-寻找最好的方式来设计Web应用程序。
 
我写这篇文章的想法是介绍一个好的设计模式,并不是得到一个结论或者声明这是一个最好的N-Tier应用程序的设计模式。因为对于架构设计,每一个开发人员总是有自己的观点,所以任何合适的架构阐述都是有争议的。然而,如图1.1所示,分离不同的代码到不同的层总是一个好的实践。按这样组织代码,可以更方便地维护和扩展应用程序。
 
在图1.1中,你可以看到业务组件分割到不同的层。组织代码最好的方法是为每一个业务组件创建不同的类库(Class Library)。Visual Studio允许在同一个Solution中创建多个项目。因此,我们可以在同一个Solution中加入ASP.NET 应用程序和类库Class Library项目。当你在编译Solution时,每一个项目都会生成在bin目录下生成一个assembly程序集文件。方法1:我们可以手动复制.DLL文件到应用程序的bin目录。方法2:增加项目引用。当你编译Solution时,第二种方法可以自动更新应用程序bin目录的程序集文件。通过这种方式组织代码,可以更容易修改/更新项目的特定代码,也容易从不同的Server上迁移代码。我不想深入探讨架构,这里我通过截屏来解释如何实现。
 
假定你已经具备经典3层架构应用程序的设计经验,我告诉你如何建立层与层之间的引用关系,接着你可以自己建立项目引用。图1.1上的箭头符号说明了不同层之间的交互。说明如下:
(1) 数据访问层引用Data Linq 层(EntLib.com 开源小组注: 原文说还需要引用业务外观(Business Facade)层,原文有误)。
(2) 业务外观(Business Facade)层引用Data Linq 层和数据访问层,因为业务外观层使用Data Linq层的业务实体来创建表实体(后面进行详细讨论),同时调用数据访问层的方法。(3) 表现层引用Data Linq层和业务外观层。
 
EntLib.com 开源小组注:本文翻译《Building Multi-Tier Web Application in .NET 3.5 Framework Using LINQ to SQL》。后面内容待续。欢迎交流LINQ相关技术。