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

posted on 2009-09-01 15:13  欣路历程  阅读(9950)  评论(0编辑  收藏  举报

导航