Winform三层架构教程,CS三层结构图及源码实例讲解
Winform三层架构教程,CS三层结构图及源码实例讲解
三层逻辑架构 (3-Tier Logic Architecture)
C/S系统快速开发平台采用三层逻辑架构(3-Tier Architecture),由界面层(UI-User Interface Layer)、业务逻辑层(BLL-Business Logic Layer),数据访问层(DAL-Data Access Layer)三层组成。在软件体系架构设计中,分层次是最常见也是最重要的一种设计思路,目的是实现“高内聚,低耦合”设计思想。
所谓三层逻辑架构,是在客户端与数据库之间加入一个“中间层”,介于界面层与数据层中间部分的逻辑处理。通常用于处理界面的数据,如数据采集、数据合法性检验、基本数据运算,或界面组件生成、组件状态管理等。基于处理过程封装而成的中间层称为业务逻辑层(BLL - Business Logic Layer),业务逻辑层没有严格定义和规范,采用三层结构设计符合高内聚,低耦合设计理念,也是研发软件产品最常见的设计方式一。
三层逻辑架构不是指物理上的三层,比如三台联网的机器不是三层逻辑结构或三层体系架构,或者支持B/S应用的才是三层体系结构,所以定义和概念要区分清楚。三层是指逻辑上的三层,即把这三个逻辑层封装在一个软件项目内,是一个整体,缺一不可。三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层处理,通常情况下,客户端不直接与数据库进行交互,而是通过中间层与数据库进行交互。

2)C/S三层结构图/三层架构图

3)Winform简介及Winform三层架构
WinForm是.Net开发平台中对Windows Form的一种称谓,Windows窗体可用于设计窗体和可视控件,以创建丰富的基于Windows的应用程序。
Winform三层架构是指基于Winform桌面应用程序采用逻辑分层设计的软件架构。
4)Winform三层架构教程之界面层设计(UI层)
开发人员务必根据用户需求以及系统整体风格对界面排版,坚持以用户体验优秀至上原则,界面不能太花俏,功能不能太复杂,特别是功能按钮不能太多!C/S系统快速开发框架采用DevExpress皮肤组件,拥有强大界面功能、顶级的外观表现以及专业的用户体验。
界面层与BLL层逻辑架构:

本文以【产品管理】界面作为例子讲解,产品管理窗体名称(类名):frmProduct,
下图是【产品管理】界面。

在frmProduct窗体的私有域定义BLL层变量:
C# Code:
/// <summary>
/// 产品资料管理
/// </summary>
public partial class frmProduct : frmBaseDataDictionary
{
private bllProduct _BllInstance; //业务逻辑层对象引用
public frmProduct()
{
InitializeComponent();
}
//省略代码....
}
/// 产品资料管理
/// </summary>
public partial class frmProduct : frmBaseDataDictionary
{
private bllProduct _BllInstance; //业务逻辑层对象引用
public frmProduct()
{
InitializeComponent();
}
//省略代码....
}
【查询】按钮事件调用业务逻辑层的方法:
C# Code:
//查询按钮Click事件
private void btnQuery_Click(object sender, EventArgs e)
{
//调用BLL层的Search方法搜索数据
DataTable dt = _BllInstance.Search(
txt_ProductCode.Text,
txt_ProductName.Text,
ConvertEx.ToString(txt_CategoryCode.EditValue),
txt_Barcode.Text);
this.DoBindingSummaryGrid(dt); //绑定主表的Grid
this.ShowSummaryPage(true); //显示Summary页面.
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
private void btnQuery_Click(object sender, EventArgs e)
{
//调用BLL层的Search方法搜索数据
DataTable dt = _BllInstance.Search(
txt_ProductCode.Text,
txt_ProductName.Text,
ConvertEx.ToString(txt_CategoryCode.EditValue),
txt_Barcode.Text);
this.DoBindingSummaryGrid(dt); //绑定主表的Grid
this.ShowSummaryPage(true); //显示Summary页面.
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
5)Winform三层架构教程之业务逻辑层设计(BLL层)
C# Code:
/// <summary>
/// 业务层查询方法
/// </summary>
/// <param name="productCode"></param>
/// <param name="productName"></param>
/// <param name="category"></param>
/// <param name="barcode"></param>
/// <returns></returns>
public DataTable Search(string productCode, string productName, string category, string barcode)
{
//策略模式(ADO直连,或WCF)
//return _MyBridge.Search(productCode, productName, category, barcode);
//ADO直连:调用数据访问层的Search方法
return new dalProduct(Loginer.CurrentUser).Search(productCode, productName, category, barcode);
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
/// 业务层查询方法
/// </summary>
/// <param name="productCode"></param>
/// <param name="productName"></param>
/// <param name="category"></param>
/// <param name="barcode"></param>
/// <returns></returns>
public DataTable Search(string productCode, string productName, string category, string barcode)
{
//策略模式(ADO直连,或WCF)
//return _MyBridge.Search(productCode, productName, category, barcode);
//ADO直连:调用数据访问层的Search方法
return new dalProduct(Loginer.CurrentUser).Search(productCode, productName, category, barcode);
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
6)Winform三层架构教程之数据访问层(DAL层)
C# Code:
/// <summary>
/// 数据访问层查询方法
/// </summary>
/// <param name="productCode"></param>
/// <param name="productName"></param>
/// <param name="category"></param>
/// <param name="barcode"></param>
/// <returns></returns>
public System.Data.DataTable Search(string productCode, string productName, string category, string barcode)
{
//
//SQL拼接查询
//
//string sql = "SELECT isid,ProductCodeAuto,ProductCode,ProductName,Barcode,UnitID,CategoryId,SellPrice,UnitID,Spec,Model,Remark,Supplier,dbo.fn_GetCustomerName(Supplier) AS SupplierName,MinQtyWarning FROM tb_Product WHERE 1=1 ";
//if (productCode != "") sql += " AND ProductCode LIKE '%" + productCode + "' ";
//if (productName != "") sql += " AND ProductName LIKE '%" + productName + "' ";
//if (barcode != "") sql += " AND Barcode LIKE '%" + barcode + "%' ";
//if (category != "") sql += " AND CategoryId IN (SELECT CategoryCode FROM dbo.ufn_GetProductCategory('" + category + "'))";
//return _Database.GetTable(sql, tb_Product.__TableName);
//
//调用存储过程
//
CommandHelper sp = _Database.CreateCommand("usp_SearchProduct");
sp.AddParam("@ProductCode", productCode);
sp.AddParam("@ProductName", productName);
sp.AddParam("@Category", category);
sp.AddParam("@Barcode", barcode);
return _Database.GetTable(sp.Command, tb_Product.__TableName);
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
/// <summary>
/// 数据访问层查询方法
/// </summary>
/// <param name="productCode"></param>
/// <param name="productName"></param>
/// <param name="category"></param>
/// <param name="barcode"></param>
/// <returns></returns>
public System.Data.DataTable Search(string productCode, string productName, string category, string barcode)
{
//
//SQL拼接查询
//
//string sql = "SELECT isid,ProductCodeAuto,ProductCode,ProductName,Barcode,UnitID,CategoryId,SellPrice,UnitID,Spec,Model,Remark,Supplier,dbo.fn_GetCustomerName(Supplier) AS SupplierName,MinQtyWarning FROM tb_Product WHERE 1=1 ";
//if (productCode != "") sql += " AND ProductCode LIKE '%" + productCode + "' ";
//if (productName != "") sql += " AND ProductName LIKE '%" + productName + "' ";
//if (barcode != "") sql += " AND Barcode LIKE '%" + barcode + "%' ";
//if (category != "") sql += " AND CategoryId IN (SELECT CategoryCode FROM dbo.ufn_GetProductCategory('" + category + "'))";
//return _Database.GetTable(sql, tb_Product.__TableName);
//
//调用存储过程
//
CommandHelper sp = _Database.CreateCommand("usp_SearchProduct");
sp.AddParam("@ProductCode", productCode);
sp.AddParam("@ProductName", productName);
sp.AddParam("@Category", category);
sp.AddParam("@Barcode", barcode);
return _Database.GetTable(sp.Command, tb_Product.__TableName);
}
//来源:C/S框架网(www.csframework.com) QQ:23404761

C#三层架构快速开发框架:
C/S系统快速开发框架旗舰版V5.0(Ultimate Edition)
适用开发:制造、服务、零售、商贸等行业的ERP、MRP、MES、CRM、MIS、HIS、POS数据管理应用系统
运行平台:Windows + .NET Framework 4.5
开发工具:Visual Studio 2015+,C#语言
数据库:Microsoft SQLServer 2008R2+(支持多数据库:Oracle/MySql)
产品介绍 C/S系统快速开发框架(软件快速开发平台)为软件研发团队提供强大的底层开发架构及快速开发能力,开发框架集成多个应用于大型管理应用系统的功能模块、通用开发包、实用类工具以及标准权限管理系统。提供丰富的实例模板、开发文档、线上技术指导服务,让您快速开发软件项目。
自2007年首发产品,我们成功积累了500多家企业、4000多位软件用户,其中包括国内知名软件公司、国企、研发机构及上市集团公司(优秀企业选择了我们的产品-成功案例)。经过十年迭代升级,最新研发的旗舰版V5.1技术更成熟、应用更广泛、性能更稳定、开发效率更高!
开发框架配套的核心工具 - 三层架构代码生成器能快速生成界面(FORM)、业务层(BLL)、数据层(DAL)、模型(Model)、报表(Report)以及VS工程项目(Project)的源代码,快速提高开发效率,节约开发时间,降低项目成本。根据多个项目进度统计,开发框架能为您减少60%以上的工作量。
自2007年首发产品,我们成功积累了500多家企业、4000多位软件用户,其中包括国内知名软件公司、国企、研发机构及上市集团公司(优秀企业选择了我们的产品-成功案例)。经过十年迭代升级,最新研发的旗舰版V5.1技术更成熟、应用更广泛、性能更稳定、开发效率更高!
开发框架配套的核心工具 - 三层架构代码生成器能快速生成界面(FORM)、业务层(BLL)、数据层(DAL)、模型(Model)、报表(Report)以及VS工程项目(Project)的源代码,快速提高开发效率,节约开发时间,降低项目成本。根据多个项目进度统计,开发框架能为您减少60%以上的工作量。
更多成功案例,请移步CSFramework文库:
.png)
CSFramework文库 - C/S框架客户成功案例:

:


参考文档:
C# Winform等待窗体WaitingForm组件下载(CSFramework提供)|C/S开发框架
C# Winform等待窗体WaitingForm组件下载(CSFramework提供)
C# Winform等待窗体WaitingForm组件下载(CSFramework提供)
CSFrameworkV6 - Winform开发框架 - Delete方法使用
CSFrameworkV6 - Winform开发框架 - GetLookupData方法使用
CSFramework_Mini 数据库结构 | Winform 蝇量框架|C/S开发框架
C#源码-医疗管理系统CS(winform)版本-源码下载
物流运输管理系统TMS成功案例-CSFramework快速开发框架(Winform+C/S+SQLServer)
CSFramework框架Winform项目实战案例, Winform开发的软件
CSFrameworkV2.x标准版成功案例 - C# Winform C/S架构MES系统
Winform+SQL开发CS架构大型ERP系统源码|C/S框架网
C# Winform CS结构快速开发框架高级版V3.0 - 视频介绍
C/S软件授权注册系统V3.0(Winform+WebApi+.NET8+EFCore版本)|C/S开发框架
CSFrameworkV6.1前端+WebApiV3后端测试报告(前后端分离)|C/S开发框架
企业级C/S系统快速开发框架(Winform+.NET8+EFCore)|C/S开发框架
最新MES系统快速开发平台(Winform+NET8+EFCore)|C/S开发框架
C# Winform等待窗体WaitingForm组件下载(CSFramework提供)|C/S开发框架
C# Winform等待窗体WaitingForm组件下载(CSFramework提供)
C# Winform等待窗体WaitingForm组件下载(CSFramework提供)
CSFrameworkV6 - Winform开发框架 - Delete方法使用
CSFrameworkV6 - Winform开发框架 - GetLookupData方法使用
CSFramework_Mini 数据库结构 | Winform 蝇量框架|C/S开发框架
C#源码-医疗管理系统CS(winform)版本-源码下载
物流运输管理系统TMS成功案例-CSFramework快速开发框架(Winform+C/S+SQLServer)
CSFramework框架Winform项目实战案例, Winform开发的软件
CSFrameworkV2.x标准版成功案例 - C# Winform C/S架构MES系统
Winform+SQL开发CS架构大型ERP系统源码|C/S框架网
C# Winform CS结构快速开发框架高级版V3.0 - 视频介绍
C/S软件授权注册系统V3.0(Winform+WebApi+.NET8+EFCore版本)|C/S开发框架
CSFrameworkV6.1前端+WebApiV3后端测试报告(前后端分离)|C/S开发框架
企业级C/S系统快速开发框架(Winform+.NET8+EFCore)|C/S开发框架
最新MES系统快速开发平台(Winform+NET8+EFCore)|C/S开发框架
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服

