一个简单的三层架构例子(.NET入门)
最近开始学习.NET 用的是c# 目前要用三层架构的模式开发一个简单的图书管理系统,不过以为刚接触这门技术。做起来分外吃力,甚至连究竟要写些什么都不清楚。
于是乎上网到处找寻三层架构的基础入门知识,终于找到了一篇:
原文来自:http://hi.baidu.com/tgszsh/blog/item/9f30bc1f6cc1def0e1fe0ba8.html
不过经过自己的试用,发现里面还是会出现一些毛病。而且对于像我这种新手来说,本来是想看个简单的例子,结果还要自己上网到处搜索解决方案,郁闷。
于是决定自己再重写一下,虽说有盗版的嫌疑。不过还是借我碰到的一些问题,给大家点帮助。
首先还是简单的提一下 三层架构吧:
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" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<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,Model
3)DAL引用Model (以及解决错误时 引用的System.Configuration )
4)Model无引用
好了既然有一个简单的实例了,就让我们进一步的深入其中吧,加油~~!
转载于:https://www.cnblogs.com/xgcblog/archive/2011/05/10/2042345.html
一个简单的三层架构例子(.NET入门)相关推荐
- WPF MVVM 架构 Step By Step(2)(简单的三层架构示例及粘合代码GLUE code)
WPF MVVM 架构 Step By Step(2)(简单的三层架构示例及粘合代码GLUE code) 原文:WPF MVVM 架构 Step By Step(2)(简单的三层架构示例及粘合代码GL ...
- python cs开发框架_用Python编写一个简单的CS架构后门的方法
用Python编写一个简单的CS架构后门的方法 来源:中文源码网 浏览: 次 日期:2019年11月5日 [下载文档: 用Python编写一个简单的CS架构后门的方法.txt ] (友情 ...
- 一个简单的epoll测试例子
一个简单的epoll测试例子 一段简单的epoll测试例子,编译运行后可以直接用浏览器访问localhost来测试. 1 #include <unistd.h> 2 #include &l ...
- Makefile编写及一个简单的Makefile架构实现
Makefile编写及一个简单的Makefile架构实现 Makefile常用命令 GCC/G++常用编译参数 简单Makefile框架实现 使用CMake构建项目 Makefile常用命令 make ...
- linux下glew例子,一个简单的GLSL Shader例子
本例子选自OpenGL Shading Language中的第一个Shader例子,使用颜色平滑地表示一个表面的温度.温度及其颜色的范围在应用程序中进行设置. //先看顶点着色器temp.vert: ...
- 一个简单的规则引擎例子
本例使用的规则引擎包是RulesEngine,关于RulesEngine的介绍,请自行补充,这里只是一个极简单使用场景. 例子大体就是用户有一些优惠券,系统会根据用户订单情况,筛选可以使用的优惠券供用 ...
- 一个简单的马尔可夫过程例子
什么是马尔可夫过程(Markov Process) 要说什么是马尔可夫过程,首先必须讲讲什么是随机过程(Stochastic Process). 設 (Ω,,P) (\Omega, \mathcal ...
- 如何写一个简单java接口的例子(内容详细,适合初学者)
这里说一个简单的java接口的小例子(一个接口类,两个实现类) 先新建一个动态web工程: 我的项目目录是这样子的(接口写完之后目录) 先在test0609_test1包下new 一个interfac ...
- matlab 马尔可夫过程 实例,一个简单的马尔可夫过程例子
什么是马尔可夫过程(Markov Process) 要说什么是马尔可夫过程,首先必须讲讲什么是随机过程(Stochastic Process). 設(Ω,,P)為一概率空間,另設集合T為一指標集合. ...
最新文章
- 《智能数据时代:企业大数据战略与实战》一3.5 步步为营
- 学习jvm(一)--java内存区域
- 【C++】const讲解
- Linux基础之bash脚本进阶篇-循环语句(for,while,until)
- sql server cdc 清理_基于CDC技术的ElasticSearch索引同步机制
- nodejs和Vue和Idea
- Android之获取指定目录下的所有特殊文件名字
- Nokia Imaging SDK滤镜使用入门
- java学习网络编程遇到异常java.net.SocketException:Software caused connection abort: socket write error
- MySQL微专业_网易微专业Java开发工程师
- 浙江大学计算机学院博士论文格式,浙江大学外语学院英文版博士学位论文格式.pdf...
- js 占位符 正则_带占位符的正则表达式
- 灰关联分析与语音/音乐信号识别
- Java中用Apache POI生成excel和word文档
- 传智播客_急先锋_html、css、js_郝强勇老师
- dnf mysql_CentOS7使用dnf安装mysql的方法
- 加油站涉税数据管理云平台
- 华为开源的深度学习框架 MindSpore
- 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(6)动态内存分配
- R语言GD包基于栅格图像实现地理探测器与连续参数的自动离散化
热门文章
- VTK:InfoVis之ArrayToTable
- Qt平台和编译器说明-Android
- C++ternary search三元搜索的实现算法(附完整源码)
- C语言实现了一个具有头结点的单链表(附完整源码)
- QT的QAccessibleEvent类的使用
- C++继承的基本语法
- python作者 es6_ES6 全套教程 ECMAScript6 (原著:阮一峰)(1)
- linux中怎样获得进程描述符,linux进程学习-进程描述符,控制块
- 04_机器学习概述,什么是机器学习,应用场景,数据来源与类型,网上可用的数据集、常用数据集数据的结构组成、特征工程是什么、意义、特征抽取、sklearn特征抽取API、文本特征抽取(学习笔记)
- solr 自定义 dismax查询方式