用ASP.NET编写多层架构的系统

asp.net|架构

 
千万不要被标题吓倒,其实很简单。不然只能一辈子写面条式的程序了。特别是ASP程序员大多写都是3 IN 1 (超白金版:P)的程序,勉强能写成分层式的也是高手中的高手,这种大虾估计早就转型当系统分析员了。

一般来说系统大多分为三层(据说分三层很好):用户层、逻辑层、数据层。也可能不叫这几个名字,但是不管怎么说功能大体应该一样。说到功能请看下面

用户层:就是主要与用户打交道,也就是用户界面。什么输入框啊、提示信息啊的都在上面。因为用户对于系统而言都是foolish用户(不是用户都是fool,而是业务逻辑、数据关系不是每个用户都能了解的,如果都能了解就可以不用写程序,直接让用户操作数据库就好了),你不得不在这个层面上做出诸多限制和提示以便用户能正确的数据输入。这个层面一般都是原始数据采集以及数据最终的输出目标。这个就像一个商品的包装一样是给别人看的。跟业务逻辑数据处理没多大关系,不参与逻辑运算数据处理,说白了只能看啊!有人说了不是还有输入框吗?那不是只看啊?其实能输入框只是逻辑层的外延。因为逻辑层没有用户界面,只能依靠别人了。就像钓鱼,钩子就是用户层是用来看的,鱼杆、鱼线和绕线器还有钓鱼的人是逻辑层。鱼篓就是数据层了(不是很形象将就着用拉)。

逻辑层:是背地里进行的,用户毫无所知。系统要做的判断啊、截断原始数据啊、对原始数据进行算术运算啊、输出错误信息到用户层啊等等的。也就是说,用户输入“ABC”逻辑层要做的是,判断“ABC”是否符合业务逻辑需要,是则继续否则就是非法数据。逻辑层还要决定是提取“ABC”的“A”还是提取“B”传给数据层以保证数据层的正确运行。当然逻辑层还干很多事就不一一罗嗦了。当逻辑层完成了所有数据的处理判断,她就数据传递给数据层。

数据层:这里是跟数据库打交道,对于传入的数据,数据层决定写入还是添加到数据表中,添加到A表还是B表中。完成了返回成果或者错误信息或者数据集合给逻辑层。他就算完事了,其他什么都管。

好了介绍完了(一头汗啊:~)现在说好处,最典型的例子就是当业务逻辑发生变动的时候,只需要修改逻辑层就可以了其他各层不必改动。比如原来业务逻辑要求把用户输入的A加上B得数存入数据库。后来业务逻辑变了要求A减去B得数存入数据库。这时候就只需要修改业务逻辑层了。还有当数据库表字段类型变了,如果没有分层的话要把所有代码翻出来看那里用到这个字段,都要改(改完出错不出错那就不可知了)。有分层就简单了,对逻辑层传入的数据直接转类型就好了,一切照旧。真是居家旅游、杀人放火必备啊~~~:)

说了这么多到底怎么做才算是分层了?下面写个小例子

其实用.NET的就直接分了层了,用户界面和逻辑数据两层。
创建一个新项目,创建一个名为TEST.ASPX的文件。创建一个名为DBTEST.CS的类。打开TEST.ASPX成如下样子
<%@ Page language="c#" Codebehind="test.aspx.cs" AutoEventWireup="false" Inherits="MovieAdmin.test" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
 <HEAD>
  <title>test</title>
  <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
  <meta name="CODE_LANGUAGE" Content="C#">
  <meta name="vs_defaultClientScript" content="JavaScript">
  <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
 </HEAD>
 <body MS_POSITIONING="GridLayout">
  <form id="Form1" method="post" runat="server">
   <asp:TextBox id="TextBox1" style="Z-INDEX: 101; LEFT: 296px; POSITION: absolute; TOP: 104px"
    runat="server"></asp:TextBox>
   <asp:TextBox id="TextBox2" style="Z-INDEX: 102; LEFT: 296px; POSITION: absolute; TOP: 136px"
    runat="server"></asp:TextBox>
   <asp:Button id="Button1" style="Z-INDEX: 103; LEFT: 504px; POSITION: absolute; TOP: 120px" runat="server"
    Text="Button"></asp:Button>
  </form>
 </body>
</HTML>

就是两个文本框一个提交按纽

打开TEST.CS(就是查看TEST.ASPX的代码)
写如下

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace MovieAdmin
{
 /// <summary>
 /// test 的摘要说明。
 /// </summary>
 public class test : System.Web.UI.Page
 {
  protected System.Web.UI.WebControls.TextBox TextBox1;
  protected System.Web.UI.WebControls.TextBox TextBox2;
  protected System.Web.UI.WebControls.Button Button1;
 
  private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面
  }

  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {   
   this.Button1.Click += new System.EventHandler(this.Button1_Click);
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion

  private void Button1_Click(object sender, System.EventArgs e)
  {
   string text1 = TextBox1.Text.Trim();
   string text2 = TextBox2.Text.Trim();
   string text3 = text1 + test2;
   dbtext td = new dbtext();
   td.insert(text3);
  }
 }
}
再写DBTEST.CS类为如下
using System;
using System.Data.SqlClient;

namespace MovieAdmin
{
 /// <summary>
 /// dbtext 的摘要说明。
 /// </summary>
 public class dbtext
 {
  public dbtext()
  {
   //
   // TODO: 在此处添加构造函数逻辑
   //
  }
  public string insert(string tempstr)
  {
   SqlConnection Conn = DB.DBOpen() ;
   strSQL = "insert into [table](aaa) values('"+tempstr+"')" ;
   PubLib.DB.DBExecute(Conn, strSQL) ;
   Conn.Close();

   return "成功" ;
  }
 }
}

现在大功告成,恭喜你终于写出了一个毫无用处的分层式程序。:P
这个只是一个粉简单的例子,结构的表示。真正应用还有很多套路,我也在摸索中....
有什么问题留言吧,不过别指望太多,我也是半桶水:P

时间: 2024-09-20 12:16:36

用ASP.NET编写多层架构的系统的相关文章

浅谈ASP.NET中多层架构

  Asp.net的多层架构主要是为了解决数据层,逻辑层,表示层等之间的关系.我的做法是这样的:首先建立一个DataCore的基类.基类里面封装了一些低层的数据库的基本操作,比如说数据库联接,调用存储过程等等. 很多人对开发多层应用程序感到一定的困难.来看一个例子:对于一个只有一两个人的小公司,一个人可能同时担当老板.出纳.会计.市场.销售.开发等多项工作.而对于一个大公司,就会进行比较严密的分工,每个人只完成一部分工作,需要彼此配合才能保证正常运转.以前的开发程序就类似于一个小公司,从用户界面

浅谈Asp.net多层架构中的变量引用与传递

asp.net|变量|架构 到公司已经快两个星期了,但是由于客户的需求分析没有下来,所有项目迟迟没有开始.正好利用这个时间仔细研究了一下Asp.net的多层架构,主要参考的是 Wrox 的一本<.Net WebSite Programming Problem-Design-Solution>,个人觉得这本书写的不错.面向有一定.net基础的开发人员,刚开始看起来可能觉得很难懂,但是仔细研究一下会发现,这本书是一本面向工程应用的优秀参考手册. Asp.net的多层架构主要是为了解决数据层,逻辑层

关于用ASP.NET 编写OA系统的问题

问题描述 我现在想用ASP.NET编写一个企业OA系统不知道有哪位高人能为我解答一下这方面的问题 解决方案 解决方案二:主要是前面的人用的是PHP开发的我对于PHP不是很了解看看能不能用ASP.NET开发

Asp.net多层架构中的变量引用与传递

Asp.net的多层架构主要是为了解决数据层,逻辑层,表示层等之间的关系.我的做法是这样的:首先建立一个DataCore的基类.基类里面封装了一些低层的数据库的基本操作,比如说数据库联接,调用存储过程等等.在这里面有一个地方值得注意,通过对一个函数的重载可以实现调用不同功能的存储过程.以下代码示例:       protected int RunProcedure(string storedProcName, IDataParameter[] parameters, out introwsAff

asp.net微信公众平台开发(二) 多层架构框架搭建和入口实现

上篇已经设计出比较完善的数据库了,这篇开始进入代码.  首先把上篇设计的数据库脚本在数据库中执行下,生成数据库,然后在VS中建立项目,为了方便理解和查看,我设计的都是很直白的类名和文件名,没有命名空间前缀. 采用接口方式,共8个项目:7个类库和一个MVC项目,  分别为: 显示层--MVC项目 业务逻辑层--访问接口IBLL.具体实现BLL 数据访问层--访问接口IDAL.具体实现DAL 数据(模型)--DataModel 通用方法--Common 仓储--Factory 这里的仓储并不为了生产

在.NET下多层架构企业管理系统的开发

架构 摘 要 随着.NET 2.0的发布,在.NET下用多层架构来构建企业管理系统也越来越方便.本文以某国外贸易公司的管理系统为背景,介绍在.NET平台下,采用多层架构构建企业管理系统. 关键词 .NET:单元测试:B/S架构 引言 .NET 框架是微软开发出的新一代开发平台.允许应用程序通过 Internet 进行通讯和共享数据,而不管所采用的是哪种操作系统.设备或编程语言.本文介绍的管理系统是在.NET平台下开发的,以极限编程的开发思想,采用了面向对象开发.B/S架构.ASP.NET.C#以

想开发BS架构的系统

问题描述 想开发BS架构的系统,需要准备哪些东西.在网上找了不少资料,都不很系统,我现在条件是:懂html语言,懂SQLserver,用vb+sqlserver开发过管理系统,我现在向做个BS架构的仓库管理系统,需要用到几个开发环境:IISweb服务器?SQLserver服务器?asp代码的编写用哪种工具?客户端网页编写用哪种工具?具体的开发过程,能否告知一下,看了不少资料,仍然是一头雾水.也就是,我向开发bs架构的系统,需要学习哪些东西,如何应用. 解决方案 解决方案二:vs2012开发就可以

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

在对NLayerApp实际项目进行讨论之前,让我们首先学习一下(或者应该说重温一下)分层/多层架构与应用系统设计原则.很多朋友会认为这些都是老掉牙的内容,只要是软件从业人员,都会对这些内容非常熟悉.然而,果真如此吗?我在这里整理这部分内容,一方面是为介绍NLayerApp打下基础,而另一方面,则是希望借此机会将这些理论性的东西做个归纳,也希望读者朋友能够认真阅读,毕竟温故知新嘛. 需要说明的是,从本章节开始,大多数理论性的东西都源自Microsoft Spain团队针对NLayerApp所编写的

Microsoft NLa“.NET研究”yerApp案例理论与实践 - 多层架构与应用系统设计原则

在对NLayerApp实际项目进行讨论之前,让我们首先学习一下(或者应该说重温一下)分层/多层架构与应用系统设计原则.很多朋友会认为这些都是老掉牙的内容,只要是软件从业人员,都会对这些内容非常熟悉.然而,果真如此吗?我在这里整理这部分内容,一方面是为介绍NLayerApp打下基础,而另一方面,则是希望借此机会将这些理论性的东西做个归纳,也希望读者朋友能够认真阅读,毕竟温故知新嘛. 需要说明的是,从本章节开始,大多数理论性的东西都源自Microsoft Spain团队针对NLayerApp所编写的