背景:
最近被师傅提问,你懂什么是框架不?我说MVVM?MVC?MVP,好像这是设计模式,问的鼠鼠一脸懵逼,从事开发这么久,我的确不知道什么是框架,变成了一个天天埋头改代码的机器,趁着周末和下班恶补了一下这方面的知识,感恩豆老师。
什么是框架?框架有哪些作用
在 C# 开发中,框架(Framework)是一套预先设计好的代码库、工具和规范的集合,用于简化应用程序开发。它提供了基础功能(如内存管理、异常处理、网络通信等)和通用组件,让开发者无需重复编写基础代码,专注于业务逻辑实现。
框架本质上是半成品的应用程序,具有以下特点:
- 定义了核心架构和执行流程(如ASP.NET的请求处理管道)。
- 提供开箱即用的功能模块(如数据库访问、UI 组件)。
- 强制或推荐特定的开发规范(如 MVC 模式)。
- 通常包含工具链(编译、调试、部署等)。
说白了,框架就是 “帮你把重复活儿干了的工具”。在工控领域里,如果想监视 PLC 的状态,每次都从零开始搞:找通讯库、连数据库、写界面、处理数据…… 这些都是绕不开的重复工作。
如果有个东西把这些基础活儿都做好了,你只需要填填 PLC 地址、拖拖控件,就能直接用,那它就是个框架 —— (如Wincc,威纶通)不用重复造轮子,省下的时间精力可以专注在具体的监控逻辑上。所以不管是专业的 WinCC,还是自己开发的工具,只要能帮大家少做重复工作,让核心工作(比如配置 PLC 标签)变得简单,都能叫框架,只不过是 “专用领域的框架” 而已。
为什么要使用框架
简单说,用框架就是为了少干活、干好活。在实际工作中,比如甲方要你做一个上位机监控程序,如果没有框架,没有统一的标准,每个人负责的部分又不一样,如果每一次做都是从头搞起,费时费力
具体到实际开发中,好处很直接:
-
不用重复造轮子
比如做 PLC 监控,通讯、数据库、界面这些基础功能,框架已经帮你写好了。你不用每次都从零开始写代码,省出时间专注于具体业务(比如配置哪个 PLC 地址、做什么逻辑判断)。 -
降低门槛
新手不用先学透底层原理(比如 PLC 通讯协议细节),照着框架的规则填配置、拖控件,就能快速做出能用的东西。团队协作时,大家按统一的框架规则来,沟通成本也低。 -
少出错、更稳定
框架里的基础功能(比如数据读写、异常处理)经过很多项目验证,比自己临时写的代码更靠谱,能减少低级错误。 -
好扩展、易维护
成熟的框架都有明确的规则,比如想加个新的监控画面,按框架的方式加就行,不用改到底层代码。后期维护时,也能顺着框架的结构快速找到问题。
总结来说:框架就像提前搭好的脚手架,你不用自己搬砖搭架子,直接在上面盖自己的房子(业务功能)就行,又快又稳。
有哪些框架
一、基础运行框架(核心平台)
-
.NET Framework
微软早期的 C# 基础框架,主要用于 Windows 平台开发,包含 WinForms(桌面 UI)、ASP.NET Web Forms 等技术,现在已逐渐被.NET 5 + 替代,仅维护安全更新。 -
.NET 5+(含.NET 6、7、8 等)
跨平台的统一框架(.NET Core 的升级整合版),支持 Windows、Linux、macOS,是目前 C# 开发的主流。可开发 Web、桌面、移动、云服务等几乎所有类型的应用,其中.NET 8 是 LTS(长期支持)版本,支持到 2026 年。
二、Web 开发框架
-
ASP.NET Core
跨平台的 Web 框架,基于.NET 5+,可开发网站、API 接口、微服务等。支持 MVC 模式、Razor Pages(简单页面开发)、Minimal API(极简接口),性能强,内置依赖注入和中间件机制。 -
Blazor
基于ASP.NET Core 的前端框架,允许用 C# 代替 JavaScript 写交互式网页,支持两种模式:- Blazor Server(逻辑在服务器,适合复杂交互)
- Blazor WebAssembly(逻辑在浏览器,适合客户端应用)
web开发没搞过,csdn有很多懂的鼠鼠,可以去看他们的教程
三、桌面应用框架
-
WinForms
经典 Windows 桌面 UI 框架,简单易用,基于事件驱动,适合快速开发中小型桌面工具(如数据采集客户端、配置工具)。 -
WPF
功能强大的 Windows 桌面框架,基于 XAML 设计 UI,支持数据绑定、动画、3D 效果等,适合开发复杂交互的桌面应用(如工业监控界面、图形化工具)。 -
MAUI
跨平台桌面 / 移动框架,一套代码可运行在 Windows、macOS、iOS、Android,适合开发需要多平台部署的应用(如移动端设备控制工具)。
现在基本上工控行业都是Winform和WPF,如何区分这两,简单粗暴的区分,长得比较丑的是winform,看起来优雅的是WPF, (开玩笑的)
两者的区别
winform | WPF | |
底层渲染技术 | 基于 Windows 原生控件(如按钮、文本框等都是系统自带的),渲染依赖古老的GDI+ 技术(2000 年代的图形接口)。 缺点:控件样式受系统主题限制(比如在 Win7 和 Win10 上长得不一样),复杂动画、3D 效果几乎做不了,缩放时容易模糊。 | 完全抛弃了系统原生控件,自己基于DirectX(游戏级图形引擎)绘制所有 UI。 优点:样式完全自定义(不受系统限制),支持高清缩放、3D 渲染、复杂动画(比如控件平滑过渡、数据可视化动效),这也是它 “好看” 的根本因 —— 底层图形能力根本不是一个量级。 |
设计理念 | 核心是 “事件驱动”。 比如按钮点击后,你需要写代码( Button1_Click )手动修改其他控件的状态(如Label1.Text = "点击了" )。UI 和逻辑代码往往混在一起,复杂界面容易写成 “面条代码”,维护起来头疼。 | 核心是 “数据驱动”。 你可以把数据(比如一个字符串、一个数字)和 UI 控件 “绑定” 起来,数据变了,UI 自动更新;UI 操作(如输入文本)也会自动同步到数据里。 这种模式配合MVVM 框架(把 UI、数据、逻辑拆分开),能轻松管理复杂界面(比如工业监控系统的多面板、数据仪表盘),后期改需求时不用到处改代码。 |
UI 设计方式 | UI 设计依赖可视化拖控件,控件的样式、位置直接写在代码里(或隐藏的.designer.cs 文件)。设计师很难参与,想改个样式可能需要改代码。 | 设计师可以直接改 XAML 调样式,开发者专注写逻辑代码,分工清晰。这对需要精致 UI 的场景(如设备控制面板、数据可视化界面)非常重要。 |
控件的扩展性 | 自定义控件很麻烦,比如想做一个带进度条的按钮,可能需要继承原生按钮类,重写绘制方法,稍复杂就容易出 bug。 | 支持 “控件模板” 和 “样式”,可以把一个按钮 “伪装” 成任何样子(比如圆形、带图标、悬停时变色),甚至完全自定义全新控件 |
这是过年回家路过桂林服务区 目测是用WPF做的
四、数据库操作框架(ORM)
-
Entity Framework Core(EF Core)
微软官方 ORM 框架,通过 “实体类” 映射数据库表,支持 LINQ 查询,不用手写 SQL,跨平台且性能优秀,适合快速开发数据库相关功能。 -
Sqlsugar
一款轻量级、高性能的 ORM(对象关系映射)框架,专注于数据库操作的简洁性和高效性,尤其在中小项目中非常受欢迎。它支持多种主流数据库(SQL Server、MySQL、Oracle、PostgreSQL 等),并且提供了丰富的 API 来简化 CRUD(增删改查)操作。我目前就在用这个,比较好用SqlSugar .Net ORM 5.X 官网 、文档、教程 - SqlSugar 5x - .NET果糖网
五、依赖注入与服务框架
-
Microsoft.Extensions.DependencyInjection
.NET 5 + 内置的轻量级依赖注入框架,管理对象创建和生命周期,是ASP.NET Core 的核心组件。 -
Autofac
功能丰富的第三方依赖注入框架,支持属性注入、动态代理等高级特性,适合复杂项目的服务管理。
他们的核心作用是 管理代码中的依赖关系,让程序更灵活、易维护。具体来说,它们解决的是 “如何创建对象、如何传递对象依赖” 的问题,
六、其他实用框架
-
NUnit / xUnit
单元测试框架,用于自动化测试 C# 代码,保证程序稳定性。 -
Newtonsoft.Json(Json.NET)
处理 JSON 数据的主流框架,支持序列化、反序列化,功能全面且易用。 -
FluentValidation
数据验证框架,用简洁的代码定义验证规则(如表单输入校验、参数合法性检查)。