winform开发框架常见的分层模式

2023-11-01

winform开发框架,基础的分层模式,可以分为UI层User Interface、BLL层(Business Logic Layer 业务逻辑层)、DAL层( Data Access Layer 数据访问层)。

业务逻辑层(Business Logic Layer)无疑是系统架构中体现核心价值的部分。它的关注点主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计,也即是说它是与系统所应对的领域(Domain)逻辑有关,很多时候,也将业务逻辑层称为领域层。

在各层上可以采用工厂模式,把逻辑与实现相分离,所以还可以有:IDAL层(IDAL只是一个接口层,里面封状了要完成的一些业务逻辑,而具体的实现则交给DAL去实现)、Entity层(实体层,一般用于数据结构的映射,可以有外延属性和方法,方便具体编程中应用)、公用类库层等等。

IDAL是DAL层的类要实现的接口。DAL层的各类需要完成对数据库的访问,但是不同的数据库需要使用不同的DAL对象,这样对于BLL层来说无法实现数据库无关性。为了实现数据库无关性,可以将DAL对象转化为他所实现的接口类型,这样就和具体的数据库访问对象无关了。也就是说:DAL对象是实现IDAL接口的上层程序,在使用时不直接DAL对象,而是使用IDAL接口。


这个分层,在Web项目或者WInform项目(包括WPF项目)这些分层都是可以重用的,这样我们就不用重复处理界面一下的逻辑,针对性的开发我们需要的界面层即可。

DAL层根据不同的需要,扩展支持不同的数据库类型,每个数据库类型,对应一个数据库访问实现层即可,它们实现IDAL层的接口,称之为数据库访问接口实现层。

如果我们选择开发混合型开发应用,我们可能还会有一些WCF的服务逻辑层、WCF服务层、客户端调用层、界面层(后面再介绍)等方面,如下的项目结构所示。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

winform开发框架常见的分层模式 的相关文章

  • ASP.NET Core 与现有的 IoC 容器和环境?

    我想运行ASP NET 核心网络堆栈以及MVC在已托管现有应用程序的 Windows 服务环境中 以便为其提供前端 该应用程序使用 Autofac 来处理 DI 问题 这很好 因为它已经有一个扩展Microsoft Extensions D
  • 列出运行时从开放泛型类型创建的封闭类型

    当我列出当前 AppDomain 中的所有类型时 我会看到带有通用占位符的通用类型 但是 如果我使用类型实例化泛型类型 然后列出 appDomain 中的所有类型 则我看不到新创建的封闭类型 在下面的示例中 输出仅为 Foo 1 T 我正在
  • 如何使用 .NET 4 运行时运行 PowerShell?

    我正在更新管理一些 NET 程序集的 PowerShell 脚本 该脚本是为针对 NET 2 与 PowerShell 运行的框架版本相同 构建的程序集编写的 但现在需要使用 NET 4 程序集以及 NET 2 程序集 由于 NET 4 支
  • Autofac 无法解析构造函数的参数“System.String applicationClientId”

    我有以下类 接口结构 class ProviderSetting public delegate ProviderSetting Factory string applicationClientId string appKey public
  • 使用 lambda 对多列进行分组

    如何使用 lambda 对多列进行分组 我看到了如何使用 linq toEntity 执行此操作的示例 但我正在寻找 lambda 形式 var query source GroupBy x gt new x Column1 x Colum
  • 从 SQL Server 读取十进制值时出现溢出异常

    我想知道这是一个错误还是我做错了什么 我正在加载值SqlDataReader来自 SQL Server 2008 数据库 但在某些情况下 它无法将 SQL 值转换为 net 值 NET 4 0 我已将其追溯到一个测试用例 它演示了实际问题
  • 读取 C# 中的默认应用程序设置

    我的自定义网格控件有许多应用程序设置 在用户范围内 其中大部分是颜色设置 我有一个表单 用户可以在其中自定义这些颜色 并且我想添加一个用于恢复默认颜色设置的按钮 如何读取默认设置 例如 我有一个名为的用户设置CellBackgroundCo
  • Azure CloudTable 线程安全吗?

    我正在使用 Storage SDK 2 0 从不同线程 ASP NET 应用程序 写入 Azure 表存储 Is 云表 object 线程安全 我是否可以仅初始化 CloudStorageAccount CloudTableClient 和
  • 终结器线程的范围是什么 - 每个应用程序域或每个进程?

    根据我的所有阅读 应该有一个 GC 线程来调用所有终结器 现在的问题是这个 一个 线程的范围是什么 每个进程或每个应用程序域 因为域的整体目的是在一个进程空间中分离并创建 独立 的不同应用程序 I read here http dn cod
  • DateTime.Parse("2012-09-30T23:00:00.0000000Z") 始终转换为 DateTimeKind.Local

    我想解析一个表示 UTC 格式的日期时间的字符串 我的字符串表示形式包括 Zulu 时间规范 该规范应指示该字符串表示 UTC 时间 var myDate DateTime Parse 2012 09 30T23 00 00 0000000
  • 如何完全禁用签名程序集?

    我有一个包含多个项目的 VS NET 2010 解决方案 我刚刚添加了一个新的库项目 the library assembly 启动项目是一个网站 当我运行该网站时 出现以下错误 无法加载文件或程序集 the library assembl
  • C# 如何使用 CallNtPowerInformation 和 Interop 来获取 SYSTEM_POWER_INFORMATION

    我正在尝试编写一个小程序 该程序作为服务运行并监视用户是否处于活动状态 如果用户空闲 没有鼠标 键盘 一个小时 则某些进程将被终止 如果用户使用 user32 dll 中的 LASTINPUTINFO 运行它 它就可以工作 但它不能作为服务
  • 在 Azure 上运行 .NET 应用程序

    我拥有在 Amazon EC2 上运行应用程序的丰富经验 它需要一台低端服务器 我目前为该服务器支付大约 90 美元 月 是的 我知道我并不真正需要可扩展性 但我仍然使用 EC2 我想知道将这个纯粹的 NET 应用程序迁移到 Microso
  • ASP.NET Core Identity 更改登录 URL

    我正在使用 ASP NET Core 2 1 并且使用脚手架来添加身份 工作正常 除了当我尝试转到需要登录的页面时 它需要我 Identity Account Login ReturnUrl 如何将其更改为仅转到 Account Login
  • KeyValuePair - 没有无参数构造函数?

    我有一个具有 KeyValuePair 类型属性的对象 我想从数据库读取一些数据并将结果存储在这个 KeyValuePair 类型字段中 myObject KeyValuePairs ctx ExecuteQuery
  • 在 Web 浏览器中禁用 F5 [重复]

    这个问题在这里已经有答案了 可能的重复 禁用浏览器的后退按钮 https stackoverflow com questions 961188 disable browsers back button 如何禁用浏览器上的 F5 刷新 htt
  • MSMQ接收和删除

    是否有任何选项可以在读取消息后将其从 MSMQ 中删除 比如 接收 删除可以作为原子操作运行吗 听起来您想查看下一条消息 然后在处理完成后接收它 Message message Queue Peek Queue ReceiveById me
  • PrivateObject 找不到属性

    我的结构基本上如下所示 abstract class A protected string Identificator get set private void DoSomething DoSomethingSpecific protect
  • MSChart 控件中的自定义 X/Y 网格线

    我有一个带有简单 2D 折线图的 C Windows 窗体 我想向其中添加自定义 X 或 Y 轴标记 并绘制自定义网格线 例如 以突出显示的颜色 虚线 我查看了 customLabels 属性 但这似乎覆盖了我仍然想显示的默认网格 这是为了
  • 将 dll 注册到 GAC 或从 ASP.NET 中的 bin 文件夹引用它们是否更好

    如果答案是 视情况而定 您能否提供一个简短的解释 GAC 旨在包含以下组件跨多个应用程序共享 如果是这种情况 您应该对程序集进行强命名并向 GAC 注册 如果不是 请将程序集保留为私有程序集并将其作为项目 dll 引用进行引用 PS 没有真

随机推荐

  • 在telnet下操作memcache详解(操作命令详解)

    在定位问题 测试等时候经常需要对memcache的数据进行一些操作 但是其本身没有自带的客户端 所以只能通过telnet来进行操作 通过telnet连接memcache 复制代码代码如下 telnet 127 0 0 1 11211 mem
  • 使用vim编写C/C++程序

    一 准备工作 1 安装vim 已安装则忽略 sudo apt get install vim 2 安装C的编译器gcc和C 的编译器g 已安装则忽略 sudo apt get install gcc sudo apt get install
  • 用pyhtml2pdf(python)包自动从html生成pdf

    用pyhtml2pdf python 包自动从html生成pdf 1 pyhtml2pdf的使用 代码示例 运行代码需要先安装拓展库 pip install pyhtml2pdf 更多详情 请参见官网 https www cnpython
  • 这些自动化测试框架知识你还不知道?

    这些自动化测试框架知识你还不知道 无论是在自动化测试实践 还是日常交流中 经常听到一个词 框架 之前学习自动化测试的过程中 一直对 框架 这个词知其然不知其所以然 最近看了很多自动化相关的资料 加上自己的一些实践 算是对 框架 有了一些理解
  • android动态刷新主页,Android手把手教大家制作APP首页(下拉刷新、自动加载)

    一 概述 作为一名三年Android开发经验的程序员 今天和大家一起实战一款APP的首页功能 这个首页在我们平时接触中还是很常见的 虽然页面简单 但是里面涉及的功能点还是挺多的 代码如有不足的还望各路同仁指点一二 页面中使用的开发库 整个首
  • 多元线性回归-最小二乘法 最大似然估计

    一 引言 设随机变量 y y y与一般变量 x 1 x 2
  • 【程序】【必须】PID位置环控制,代码+调参

    前面两篇博文已经实现了电机测速和PID速度环控制 在这篇博文中 我们主要说明位置环的代码怎么写以及PID参数怎么调 1 位置环代码实现 写完速度环后位置环就很简单了 在串级PID中 内环的控制量一般是外环控制量的微分 在我们这里 外环是控制
  • 简单图像处理——旋转、缩放、保存

    简单图片处理 一 实验要求 对任意一幅图片分别设计以下两个功能函数 1 任意放大或缩少多少倍 显示图片 存储图片 2 对图片实现任意的旋转 显示图片 存储图片 并调用上面两个函数 测试实现放大2倍和旋转45度 二 实验准备 opencv库
  • (Xcode) 編譯器小白筆記 - LLVM前端Clang

    转自 https juejin im post 6844903716709990414 做笔记之用 Xcode 編譯器小白筆記 LLVM前端Clang 本文为笔记型式呈现 并非全部原创 来源见文末 Compiler Clang LLVM A
  • vector容器与iterator迭代器

    vector容器 vector 是同一种类型的对象的集合 每个对象都有一个对应的整数索引值 和 string 对象一样 标准库负责管理存储元素的相关内存 我们把 vector 称为 容器 是因为它可以包含其他对象 一个容器中的所有对象都必须
  • 理解mnist识别特征(lenet)

    继上一篇做完lenet手写数字测试后 我们对lenet训练结果在mnist测试集上的结果进行粗浅的分析 lenet测试结构如下 我们看到ip1输出特征向量长度为500维 不便于分析 于是我们对该层稍作修改 将500改为2 这样2维的特征向量
  • docker快速安装、启动jenkins

    1 下载镜像 官方推荐下载Blue Ocean镜像 docker操作命令 docker pull jenkinsci blueocean 2 启动镜像 docker操作命令 docker run u root d p 8080 8080 p
  • H3C_ER3100不能添加虚拟服务器解决方案

    文章目录 1 问题 2 解决方法 1 问题 我用chrome工具在H3C ER3100添加虚拟服务器 但不能能添加 2 解决方法 用IE浏览器则可以
  • layer提示框添加多个按钮选择

    function jumpChoose argu 询问框 var index layer confirm 下载文件还是在线预览呢 btn 在线预览 下载 关闭 按钮 shade false 不显示遮罩 function 关闭提示框 laye
  • %3cli%3e连接html页面,www.dwsj.cn

    HTTP 1 1 200 OK Cache Control private Content Length 6336 Content Type text html Charset UTF 8 Server Microsoft IIS 7 0
  • 计算机基础win7桌面操作,计算机基础1实验报告win7基本操作.doc

    WORD格式 分享 PAGE 精品 资料 大学计算机基础 课程 实验报告 学院 年级 专业 姓名 学号 任课教师 上机地点 实验教师 以上由学生填写 西南大学计算机与信息科学学院 计算机基础教育系 2015年10 月18 日 实验成绩记载
  • 蓝桥杯——算法训练——最小距离

    问题描述 数轴上有n个数字 求最近的两个数 即min abs x y 输入格式 第一行包含一个整数n 接下来一行 表示n整数 输出格式 一个整数表示最小距离 样例输入 6 7 3 4 11 9 17 样例输出 1 样例说明 取3和4 数据规
  • 华为OD机试 - 分积木(Java)

    题目描述 Solo和koko是两兄弟 妈妈给了他们一大堆积木 每块积木上都有自己的重量 现在他们想要将这些积木分成两堆 哥哥Solo负责分配 弟弟koko要求两个人获得的积木总重量 相等 根据Koko的逻辑 个数可以不同 不然就会哭 但ko
  • HSQLDB简介

    HyperSQL数据库 HSQLDB 是现代的关系数据库系统 版本2 5 1是全新版本2代码的最新版本 HyperSQL 2 5版与Java 8或更高版本兼容 HyperSQL用于开发 测试和部署数据库应用程序 SQL标准合规性是Hyper
  • winform开发框架常见的分层模式

    winform开发框架 基础的分层模式 可以分为UI层 User Interface BLL层 Business Logic Layer 业务逻辑层 DAL层 Data Access Layer 数据访问层 业务逻辑层 Business L