Winform 三层架构小例子
生活随笔
收集整理的這篇文章主要介紹了
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
??????????? {
??????????????? //處理...
??????????? }
結構:
-------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 三层架构小例子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# WinForm程序App.Conf
- 下一篇: 三层架构之登录