Winform 三层架构小例子
生活随笔
收集整理的這篇文章主要介紹了
Winform 三层架构小例子
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
在web開(kāi)發(fā)中常常用到工廠模式三層架構(gòu),現(xiàn)在也在Winform中應(yīng)用這種架構(gòu)方式,嘗試了很多,也模仿了經(jīng)典例子PetShop,但是還是不行,也參考了網(wǎng)上的一些例子。現(xiàn)在把我這個(gè)例子的整個(gè)制作過(guò)程簡(jiǎn)單的介紹一下。(由于本例子是介紹三層結(jié)構(gòu),所以只是簡(jiǎn)單的應(yīng)用,如果你覺(jué)得這種方式好,請(qǐng)自己實(shí)現(xiàn)其他模塊)
結(jié)構(gòu):
-------PMIS--------主程序代碼
表示層,負(fù)責(zé)應(yīng)用程序的表現(xiàn)形式、用戶(hù)體驗(yàn)等。
-------DALFactory-----抽象工廠
抽象工廠,用于創(chuàng)建各種數(shù)據(jù)對(duì)象的方法,這里有配置文件和反射的運(yùn)用。
-------IDAL--------數(shù)據(jù)接口層(控制是選擇什么類(lèi)型的數(shù)據(jù)庫(kù))
數(shù)據(jù)操作接口,數(shù)據(jù)訪問(wèn)層實(shí)現(xiàn)其接口并重寫(xiě)它(體現(xiàn)了面向接口的編程思想)。
-------BLL------
處理應(yīng)用程序的業(yè)務(wù)邏輯,被表示層調(diào)用。
-------Model-------構(gòu)造模型(對(duì)應(yīng)數(shù)據(jù)庫(kù)字段)
Model程序集,存放實(shí)體類(lèi),用于數(shù)據(jù)訪問(wèn)層和邏輯層調(diào)用
-------SQLServerDAL----SQLServer數(shù)據(jù)訪問(wèn)層
數(shù)據(jù)訪問(wèn)層,實(shí)現(xiàn)具體的select、update、delete....操作,重寫(xiě)IDAL接口。
-------DBUtility----公共數(shù)據(jù)訪問(wèn)層
數(shù)據(jù)處理層,實(shí)現(xiàn)具體的ExecuteReader,ExecuteDataTable,ExecuteNonQuery等。
-------Utility----公共層
實(shí)現(xiàn)從配置文件中讀取數(shù)據(jù)庫(kù)聯(lián)接字符串。
1、數(shù)據(jù)庫(kù)結(jié)構(gòu)
數(shù)據(jù)庫(kù)名PMIS
表Admin
??? [ID] [bigint] 編號(hào)
??? [Name] [varchar](10) 名稱(chēng)
??? [PassWord] [varchar](100) 密碼
??? 略......
建表語(yǔ)句
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、接著建立數(shù)據(jù)庫(kù)模型
Model
?#region 內(nèi)部成員字段
??????? 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--------數(shù)據(jù)接口層
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----公共數(shù)據(jù)訪問(wèn)層和SQLServer數(shù)據(jù)訪問(wèn)層
DBUtility中建立SQLHelper類(lèi)
SQLServerDAL的Admin類(lèi)需要繼承IAdmin
public class Admin:IAdmin
??? {}
Admin類(lèi)主要實(shí)現(xiàn)用戶(hù)登陸功能
7、建立業(yè)務(wù)邏輯曾B(niǎo)LL
方法public static AdminInfo Login(string userName, string password){}
8、為PMIS主程序添加應(yīng)用程序配置文件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(參數(shù)) == null)
??????????? {
?????????????? //處理...
??????????? }
??????????? else
??????????? {
??????????????? //處理...
??????????? }
結(jié)構(gòu):
-------PMIS--------主程序代碼
表示層,負(fù)責(zé)應(yīng)用程序的表現(xiàn)形式、用戶(hù)體驗(yàn)等。
-------DALFactory-----抽象工廠
抽象工廠,用于創(chuàng)建各種數(shù)據(jù)對(duì)象的方法,這里有配置文件和反射的運(yùn)用。
-------IDAL--------數(shù)據(jù)接口層(控制是選擇什么類(lèi)型的數(shù)據(jù)庫(kù))
數(shù)據(jù)操作接口,數(shù)據(jù)訪問(wèn)層實(shí)現(xiàn)其接口并重寫(xiě)它(體現(xiàn)了面向接口的編程思想)。
-------BLL------
處理應(yīng)用程序的業(yè)務(wù)邏輯,被表示層調(diào)用。
-------Model-------構(gòu)造模型(對(duì)應(yīng)數(shù)據(jù)庫(kù)字段)
Model程序集,存放實(shí)體類(lèi),用于數(shù)據(jù)訪問(wèn)層和邏輯層調(diào)用
-------SQLServerDAL----SQLServer數(shù)據(jù)訪問(wèn)層
數(shù)據(jù)訪問(wèn)層,實(shí)現(xiàn)具體的select、update、delete....操作,重寫(xiě)IDAL接口。
-------DBUtility----公共數(shù)據(jù)訪問(wèn)層
數(shù)據(jù)處理層,實(shí)現(xiàn)具體的ExecuteReader,ExecuteDataTable,ExecuteNonQuery等。
-------Utility----公共層
實(shí)現(xiàn)從配置文件中讀取數(shù)據(jù)庫(kù)聯(lián)接字符串。
1、數(shù)據(jù)庫(kù)結(jié)構(gòu)
數(shù)據(jù)庫(kù)名PMIS
表Admin
??? [ID] [bigint] 編號(hào)
??? [Name] [varchar](10) 名稱(chēng)
??? [PassWord] [varchar](100) 密碼
??? 略......
建表語(yǔ)句
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、接著建立數(shù)據(jù)庫(kù)模型
Model
?#region 內(nèi)部成員字段
??????? 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--------數(shù)據(jù)接口層
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----公共數(shù)據(jù)訪問(wèn)層和SQLServer數(shù)據(jù)訪問(wèn)層
DBUtility中建立SQLHelper類(lèi)
SQLServerDAL的Admin類(lèi)需要繼承IAdmin
public class Admin:IAdmin
??? {}
Admin類(lèi)主要實(shí)現(xiàn)用戶(hù)登陸功能
7、建立業(yè)務(wù)邏輯曾B(niǎo)LL
方法public static AdminInfo Login(string userName, string password){}
8、為PMIS主程序添加應(yīng)用程序配置文件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(參數(shù)) == null)
??????????? {
?????????????? //處理...
??????????? }
??????????? else
??????????? {
??????????????? //處理...
??????????? }
總結(jié)
以上是生活随笔為你收集整理的Winform 三层架构小例子的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C# WinForm程序App.Conf
- 下一篇: 三层架构之登录