Winform 三层架构小例子
在web开发中常常用到工厂模式三层架构,现在也在Winform中应用这种架构方式,尝试了很多,也模仿了经典例子PetShop,但是还是不行,也参考了网上的一些例子。现在把我这个例子的整个制作过程简单的介绍一下。(由于本例子是介绍三层结构,所以只是简单的应用,如果你觉得这种方式好,请自己实现其他模块)
结构:
-------PMIS--------主程序代码
表示层,负责应用程序的表现形式、用户体验等。
-------DALFactory-----抽象工厂
抽象工厂,用于创建各种数据对象的方法,这里有配置文件和反射的运用。
-------IDAL--------数据接口层(控制是选择什么类型的数据库)
数据操作接口,数据访问层实现其接口并重写它(体现了面向接口的编程思想)。
-------BLL------
处理应用程序的业务逻辑,被表示层调用。
-------Model-------构造模型(对应数据库字段)
Model程序集,存放实体类,用于数据访问层和逻辑层调用
-------SQLServerDAL----SQLServer数据访问层
数据访问层,实现具体的select、update、delete....操作,重写IDAL接口。
-------DBUtility----公共数据访问层
数据处理层,实现具体的ExecuteReader,ExecuteDataTable,ExecuteNonQuery等。
-------Utility----公共层
实现从配置文件中读取数据库联接字符串。
1、数据库结构
数据库名PMIS
表Admin
[ID] [bigint] 编号
[Name] [varchar](10) 名称
[PassWord] [varchar](100) 密码
略......
建表语句
CREATE TABLE [dbo].[Admin](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[Name] [varchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
[PassWord] [varchar](100) COLLATE Chinese_PRC_CI_AS NOT NULL,
[PurviewID] [int] NOT NULL,
[Remember] [int] NULL,
[AutoRun] [int] NULL,
[DepartmentsID] [bigint] NULL,
CONSTRAINT [PK_管理员_1] PRIMARY KEY CLUSTERED
(
[ID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
2、接着建立数据库模型
Model
#region 内部成员字段
private int _id;
private string _Name;
private string _Password;
略...
#endregion
#region 方法
public AdminInfo() { }
public AdminInfo(string userName, string password)
{
this._Name = userName;
this._Password = password;
}
#endregion
3、建立DALFactory-----抽象工厂
public static IDAL.IAdmin Create()
{
string path=System.Configuration.ConfigurationSettings.AppSettings["DAL"];
string className="SQLServerDAL.Admin";
IDAL.IAdmin acount=(IDAL.IAdmin)Assembly.Load(path).CreateInstance(className);
return acount;
}
4、建立IDAL--------数据接口层
public interface IAdmin
{
AdminInfo Login(string userName, string password);
int Insert(AdminInfo account);
int Update(AdminInfo account);
}
5、建立Utility----公共层
public static string ConnectionString()
{
return (ConfigurationSettings.AppSettings["ConnectionString"]);
}
6、建立DBUtility----公共数据访问层和SQLServer数据访问层
DBUtility中建立SQLHelper类
SQLServerDAL的Admin类需要继承IAdmin
public class Admin:IAdmin
{}
Admin类主要实现用户登陆功能
7、建立业务逻辑曾BLL
方法public static AdminInfo Login(string userName, string password){}
8、为PMIS主程序添加应用程序配置文件app.config
添加<appSettings>
<add key="ConnectionString" value="server=.;uid=sa;pwd=;database=PMIS"></add>
<add key="DAL" value="SQLServerDAL"></add>
</appSettings>
在主程序的窗体中添加控件,为按钮添加事件
if (BLL.Admin.Login(参数) == null)
{
//处理...
}
else
{
//处理...
}
Winform 三层架构小例子相关推荐
- [.NET 三层架构(ADO.NET)+Web Service+多语言]WinForm三层架构重新实现TaskVision,外加WebService提供数据和多语言...
前言: 关于不同框架实现同一个TaskVision: 前面DebugLZQ先是用WPF(没有使用MVVM,因为前面使用MVVM实现过过点餐系统),因而这个关键点就放在了WPF的Binding上面: 然 ...
- asp.net简单的注册或者登陆三层架构的例子
模型层private int userId; public int UserId { get { return userId; } set { userId = value; } } private ...
- 在winform中使用三层架构学习总结
Winform 三层架构小例子 http://www.cnblogs.com/jacky73/archive/2009/09/01/1558083.html 在web开发中常常用到工厂模式三层架构,现 ...
- 三层架构-----实践篇-登录小实例
上一篇博客小编简单介绍了一下我们在软件开发过程中应用到的三层架构基本理论.光有理论还是远远不够的,只有真正的 在项目中实践过,才能更好地理解它的精髓所在.接下来小编以一个实现登录功能的小例子来展现三层 ...
- 一个简单的三层架构例子(.NET入门)
最近开始学习.NET 用的是c# 目前要用三层架构的模式开发一个简单的图书管理系统,不过以为刚接触这门技术.做起来分外吃力,甚至连究竟要写些什么都不清楚. 于是乎上网到处找寻三层架构的基础入门知识,终 ...
- Tensorflow神经网络框架 小例子 三层神经网络 卷积神经网络 循环神经网络 神经网络可视化
Tensorflow神经网络框架 以前我们讲了神经网络基础,但是如果从头开始实现,那将是一个庞大且费时的工作,所以我们选择一条捷径---神经网络框架.我理解的神经网络框架就相当于一个工具包.就比如我们 ...
- C# WinForm项目三层架构简述
基于C#.NET的WinForm项目,我们经常使用基于三层架构,来构建项目框架,这里简单的梳理一下三层架构的相关知识 哪三层? 我们通常所说的三层框架指的是DAL.BIL和UIL三层,分别是数据层.业 ...
- JavaWeb小项目(二)- 完成品牌数据的增删改查(JSP/MVC/三层架构综合应用)
JavaWeb小项目(二)- 完成品牌数据的增删改查(JSP/MVC/三层架构综合应用) 文章目录 JavaWeb小项目(二)- 完成品牌数据的增删改查(JSP/MVC/三层架构综合应用) 环境搭建 ...
- 从三层架构说起,谈谈对历史项目的小改造
项目背景说明 最近接手一个 "老" 项目的需求修改,项目整体基于 .net core 3.1 平台,以传统的三层架构为基础构建.了解需求后,逐步对原有项目框架进行大概的了解,主要是 ...
最新文章
- ListView 滑动的时候 变系统默认黑色,或是设置不变色
- SQL语句对于NUll的筛选
- 求职过程记录(5)——黎明到来
- 太空将成为数据中心冷却新前沿
- java 抽象工厂 类图_spring学习中常用到的工厂,抽象工厂学习 | 学步园
- js截取url问号前面_js截取url问号后参数并转化为对象
- 计算机科学与python编程导论_计算机科学入门和使用Python编程
- 踏实学习前端,学技术,必有高薪,好的人生,学习量大能力要求高就对了
- 高阶篇:4.1.2)QFDII(设计要求逐层分配给各零件)
- 计算机组成原理基本试题,计算机组成原理试卷2及答案
- 百度网盘 自定义分享密码 提取码
- OpManager网络性能监控
- 技术选型Rust——事后分析
- spssfisher判别分析步骤_spss进行判别分析步骤_spss判别分析结果解释_spss判别分析案例详解...
- 调制与变频、基带信号与射频信号中的IQ调制(又称矢量调制)
- (笔记)yolov5自适应anchors
- 抖音企业号seo排名优化账号矩阵系统
- 临时链接转为永久链接的三种方法
- “东数西算”开启中国联通算力新时代
- java struts2 漏洞_struts2漏洞原理及解决办法
热门文章
- 【Android 逆向】逆向修改游戏应用 ( 分析应用结构 | 定位动态库位置 | 定位动态库中的修改点 | 修改动态库 | 重打包 )
- 【错误记录】Android Studio 编译报错 ( Error:Connection timed out: connect | 更新配置依赖仓库方式 )
- 【Android 逆向】x86 CPU 架构体系 ( 堆内存 | 栈内存 | 函数调用 )
- 【MATLAB】基本绘图 ( 线条设定 | 线条设定组合 )
- 【运筹学】线性规划 人工变量法 ( 人工变量法案例 | 第二次迭代 | 中心元变换 | 检验数计算 | 最优解判定 | 选择入基变量 | 选择出基变量 )
- 【设计模式】装饰者模式 ( 概念 | 适用场景 | 优缺点 | 与继承对比 | 定义流程 | 运行机制 | 案例分析 )
- 【C++ 语言】pthread_mutex_t 互斥锁
- BZOJ 2752: [HAOI2012]高速公路(road)
- 使用C#调用Python脚本,带参数列表
- Adobe与Facebook联手推出Flash开发工具