Winform三层架构教程,CS三层结构图及源码实例讲解
Winform三层架构教程,CS三层结构图及源码实例讲解
1)三层体系结构是哪三层?
<本文完>
产品介绍
三层逻辑架构 (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/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)
运行平台: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%以上的工作量。
扫一扫加微信:
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网