最近开始学习.NET 用的是c# 目前要用三层架构的模式开发一个简单的图书管理系统,不过以为刚接触这门技术。做起来分外吃力,甚至连究竟要写些什么都不清楚。
于是乎上网到处找寻三层架构的基础入门知识,终于找到了一篇:
原文来自:
不过经过自己的试用,发现里面还是会出现一些毛病。而且对于像我这种新手来说,本来是想看个简单的例子,结果还要自己上网到处搜索解决方案,郁闷。
于是决定自己再重写一下,虽说有盗版的嫌疑。不过还是借我碰到的一些问题,给大家点帮助。
首先还是简单的提一下 三层架构吧:
1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。
下面就介绍一下 范例的 步骤:
1.打开VS2008后,文件-->新建-->项目-->其他项目类型-->Visual Studio 解决方案-->空白解决方案 就起名为:MvcTest 吧
2.建立如图的项目,并在WEB-->App_Data建一个数据文件 DabaBase.mdf 里面建表:qzzm_user 表内:字段Name,类型:nvarchar(50) 非空
3.在WEB中引用BLL,Model层新建Post.aspx
Post.aspx 代码如下:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Post.aspx.cs" Inherits="Post" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
<html xmlns=""><head runat="server"> <title>无标题页</title></head><body> <form id="form1" runat="server"> <div> <asp:TextBox ID="tb_name" runat="server"></asp:TextBox> <asp:Button ID="btn_post" runat="server" OnClick="btn_post_Click" Text="提交" /> </div> </form></body></html>Post.aspx.cs 先搁下等写好类库再写
4.在Model 实体类中新建一个user.cs的类 (如果你已经按照上面的图 将类都建好了 就只用看下面的代码就好了)user.cs代码如下:
using System;
using System.Collections.Generic;using System.Linq;using System.Text;namespace Model
{ public class user { public user() { } private string _Name; public string Name { set { _Name = value; } get { return _Name; } } } }5.在DAL新建userdb.cs,并引用Model层 (鼠标右键——添加引用——项目 选择所需的引用)
userdb.cs代码如下:
using System;
using System.Collections.Generic;using System.Linq;using System.Text;using System.Data.SqlClient;using System.Configuration;namespace DAL
{ public class userdb { public bool adduser(Model.user model) { SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlconn"].ConnectionString);//此行@ con.Open(); using (SqlCommand cmd = new SqlCommand("INSERT INTO qzzm_user(Name) VALUES(@Name)", con)) { cmd.Parameters.AddWithValue("@Name", model.Name); if (cmd.ExecuteNonQuery() > 0) return true; else return false; } } }}代码写好了还不行,因为到时候调试的时候可能会出现 “当前上下文中不存在名称“ConfigurationManager” ”(注释 所在行),出现这种错误的原因是没有引用System.Configuration 这项,注意这边可不是代码中的 using System.Configuration; 哦。此时就要添加System.Configuration的引用,方法同上面的引用Model层类似,在DAL层下 右键——添加引用——.NET 然后找到对应的 System.Configuration 确定即可。
(如果没出现上面所说的问题当然是最好咯 O(∩_∩)O~)
6.在BLL中新建userbll.cs并引用DAL,Model层
userbll.cs代码如下:
using System;
using System.Collections.Generic;using System.Linq;using System.Text;namespace BLL
{ public class userbll { DAL.userdb db = new DAL.userdb(); public bool adduser(Model .user model) { return db.adduser(model); } }}7.开始写Post.aspx.cs
代码如下:
using System;
using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;public partial class Post : System.Web.UI.Page
{ protected void Page_Load(object sender, EventArgs e) {}
protected void btn_post_Click(object sender, EventArgs e) { Model.user us = new Model.user(); us.Name = tb_name.Text; BLL.userbll ub = new BLL.userbll(); ub.adduser(us ); }}8.在Web.config文件中添加 缺少的数据链接字符串
找到<connectionStrings /> 这一行,将其修改如下:
<connectionStrings> <add name="sqlconn" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" /></connectionStrings>9. 调试 执行
此时会提示 “无法直接启动带有……”的信息
此时我们只要找到 Post.aspx 右键——在浏览器中查看 即可 。 输入数据——提交 ,即可到所建的数据库中找到所输入的数据。
一个简单的三层架构例子 到此完成。
各层引用关系如下:
1) WEB引用 DAL,Model
2)BLL引用 DAL,Model3)DAL引用Model (以及解决错误时 引用的System.Configuration )4)Model无引用好了既然有一个简单的实例了,就让我们进一步的深入其中吧,加油~~!