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
{
//处理...
}