用三层架构来做winform程序
来源:互联网 发布:客服数据分析表 编辑:程序博客网 时间:2024/04/29 04:35
1、各层之间的改动不会影响到其他层(比较大的变动除外,如果客户要求业务流程、数据库结构都变了,你还期望有什么不会变呢)
2、基本不用写SQL语句了,自动生成的代码是参数化查询,可以防止SQL注入
3、代码条理清楚,便于理解当然三层架构不是拯救一切的灵丹妙药,比如:
1、比较小的项目何必纠结用什么架构呢,在你琢磨架构的时候,用winform可能已经写完了
2、速度会有所降低,相对于直接访问数据库,三层架构增加了中间层,速度降低是肯定的
说到三层架构,可能第一时间想到的就是mvc,然而三层架构并不是web的专利,归根结底,三层架构只是一种代码分层思想,winform当然也可以用,只不过界面展示这块,mvc是网页的形式,winform是windows窗体,其他两层思路是一样的。下面就以一个非常简单常见的商铺展示程序来实际讲解winform中如何实现三层架构。
一、前期准备
1、动软代码生成器,国产神器,你值得拥有,全自动生成数据访问层代码,百度就能找到,最后一版是2.78,作者没有继续更新了。已经免费开源,喜欢研究源代码的可以继续扩展。
李天平的博客
http://blog.csdn.net/litp
http://www.cnblogs.com/ltp/category/44293.html
二、开发过程
1、下载动软代码生成器,安装完成之后运行,连接到附件示例程序的SQLite数据库,打开连接,右键点击数据库,选择“新建.net项目”,选择“简单三层结构”,下一步,选择“Shops”、“Users”两个表,点击“开始生成”。
2、来到生成目录,打开源代码,可以看到5个项目,下面分别说说他们的作用
BLL--业务逻辑层,所有的业务逻辑全部写在这里,动软已经为每个表自动生成了一个业务类,类名就是表名,BasicMethod区段是自动生成的一些基础方法,比如增删改查、分页查询这些,ExtensionMethod区段是空的,我们自己写的业务代码写在这个区段。
DAL--数据访问层,所有的数据库访问的基础方法写在这里,动软已经为每个表自动生成了一个数据访问类,类名就是表名,BasicMethod区段是自动生成的一些基础方法,比如增删改查、分页查询这些,ExtensionMethod区段是空的,如果我们觉得这些基础的数据库操作方法不够用,可以在这个区段添加自己的数据库操作方法,但是只有数据库的操作方法应该写在DAL类库。
DBUtility--数据库访问的基础类库,封装了MySql,Sql,OLE,SqlLite,Oracle等数据库访问的方法,与ADO.NET相关的connection,DataAdapter,Command等全部在这里,DAL是在DBUtility基础上的进一步封装的,这个类库基本不需要修改。
Model--数据库表结构的映射,每一个类名代表数据库中的一个相同名字的表,类的每一个字段、属性表示表中对应的字段,数据库的一条记录就对应类的一个对象,这个类库基本不需要修改。
Web-- 一些基础的网页,因为我们是做winform的,所以这个不需要了,但是先别急着删,等下我们还要来拷连接字符串。
最后在解决方案文件夹下有一个Lib文件夹,是一些动态链接库,看看上述每个项目缺什么就引用什么。
3、新建一个winform项目,在项目的属性里将目标框架设置为".net framework 4"(不是".net framework 4 profile"),这样就有一个app.config文件了,打开app.config,打开Web项目根目录下的Web.config文件,将appSettings整个一节拷贝到app.config文件configuration节点内,将连接字符串修改为SqlLite的格式,删除Web项目。
补充一点,我们的程序是怎么得到连接字符串的呢?在DBUtility类库里,有一个PubConstant类,里面有一个ConnectionString属性,通过ConfigurationManager.AppSettings["ConnectionString"]读取了app.config文件里保存的连接字符串。
接下来就是开始做界面,写代码了,winform相信大家都很熟悉了,具体过程我就不多说了,直接上源代码。
示例程序源代码:
http://pan.baidu.com/s/1jIRZkfO
总结:
1、动软自带的SQLite动态链接库比较老,用他原来的运行不起来,我换成了新版的,在Lib文件夹下的SQLite.Interop.dll和System.Data.SQLite.DLL,System.Data.SQLite.DLL需要在项目中引用,SQLite.Interop.dll要手动拷贝到生成目录
2、如果代码写完后数据库结构发生了变化(比如增加了一个字段),我能想到的办法就是重新用动软生成一次,将BLL,DAL,DBUtility,Model替换掉,所以最好这几个项目中不要写自己的代码了,要扩展的话重新建项目吧。为什么不推荐手动改呢,因为即便是增加一个字段,也可能涉及到几个类的修改,改动大就更不用说了,手动改代码的话很有可能漏掉,能用最简单的办法搞定的事就用最简单的办法。
- 用三层架构来做winform程序
- C# WINFORM程序的三层架构如何建立的
- Winform 三层架构小例子
- Winform 三层架构小例子
- Winform程序做一个界面来配置连接字符串。
- 程序三层架构
- 我也来谈谈三层架构
- 用Expect来做Linux程序测试
- 谈“开发Web和WinForm所采用的三层架构”
- winform学习日志(十九)----------真正三层架构之登录
- C# 使用三层架构实例演示-winForm 窗体登录功能
- 在winform中使用三层架构学习总结
- 用VB.NET做winform的在线更新程序
- winform程序不一定要用Main() 函数做入口
- [原创]java web三层架构程序实例
- 菜鸟来了:三层架构从哪里开始写
- 一个用C#做的HTTP SERVER(从WINFORM搬来的)
- 【三层】三层架构初识
- java多线程实现
- 循序渐进学习 Python 正则表达式(2)
- SVN 版本冲突
- 使用C3P0连接池提交中文变成?解决方案
- 神奇的数学——三次方程
- 用三层架构来做winform程序
- 函数声明与函数表达式
- 书目
- iOS 自动布局框架学习之Masonry
- SkyDNS2源码分析
- SSH 使用密钥登录并禁止口令登录
- Ubuntu下对PyCharm-2016.3.2的长期使用
- HTML框架
- 自己不要怪谁。是你自己努力的程度不够,努力吧!