Fork me on GitHub
合集-C#
ASP.NET之Ajax系列(一)
摘要:我们在Web开发中经常会接触到Ajax技术,同时Ajax技术也有很多种实现方式,那么,我们今天从第一种方式说起:ASP.NET原生控件实现Ajax。 ASP.NET原生控件用于Ajax技术的主要是UpdatePanel和ScriptManager,前者顾名思义,是一个可以用于盛放内容的容器,用... 阅读全文
posted @ 2014-06-28 16:53 Wackysoft 阅读(1671) 评论(5) 推荐(3)
ADO.NET系列之操作XML
摘要:如题,我们保存数据的方式有很多种。在ASP.NET中,可以通过js赋值隐藏域的方式,也可以通过ViewState,Session这样的内置对象,还可以通过数据库的形式。现在经常用到的就是XML了,它的结构灵活,同时占用的空间很少,也比较容易操作,今天我们就来说说ADO.NET中,如何去操作XML... 阅读全文
posted @ 2014-07-02 22:43 Wackysoft 阅读(1302) 评论(4) 推荐(1)
浅谈.Net异步编程的前世今生----APM篇
摘要:前言 在.Net程序开发过程中,我们经常会遇到如下场景: 编写WinForm程序客户端,需要查询数据库获取数据,于是我们根据需求写好了代码后,点击查询,发现界面卡死,无法响应。经过调试,发现查询数据库这一步执行了很久,在此过程中,UI被阻塞,无法响应任何操作。 如何解决此问题?我们需要分析问题成因: 阅读全文
posted @ 2019-04-27 20:58 Wackysoft 阅读(1761) 评论(4) 推荐(3)
C# Hook原理及EasyHook简易教程
摘要:前言 在说C# Hook之前,我们先来说说什么是Hook技术。相信大家都接触过外挂,不管是修改游戏客户端的也好,盗取密码的也罢,它们都是如何实现的呢? 实际上,Windows平台是基于事件驱动机制的,整个系统都是通过消息的传递来实现的。当进程有响应时(包括响应鼠标和键盘事件),则Windows会向应 阅读全文
posted @ 2018-03-11 15:28 Wackysoft 阅读(33619) 评论(26) 推荐(39)
ASP.NET之Ajax系列(三)
摘要:我们通过前两篇文章的学习,已经大致掌握了Ajax的实现方法,同时也可以对比出两种方式的优劣。但是我们还是没有搞清楚真正的ajax的实现原理,以及最原始的,未经过封装的ajax是什么样的,今天我们一起来探索这些之前不了解的地方。 首先在上一篇也提到过,Ajax是异步的Javascript和XML... 阅读全文
posted @ 2014-07-15 21:26 Wackysoft 阅读(2318) 评论(25) 推荐(3)
ASP.NET之Ajax系列(二)
摘要:在上一次的Ajax操作中,我们使用了ASP.NET原生控件实现,但是弊端很多,效率低下,而且有个文件上传的BUG:http://blog.csdn.net/zhaoqiliang527/article/details/4457961。 于是我们寻求更好的实现方式,jQuery的Ajax方法配合... 阅读全文
posted @ 2014-07-14 21:47 Wackysoft 阅读(1533) 评论(11) 推荐(2)
C#性能优化-树形结构递归优化
摘要:前言 大家好,我是wacky,最近在工作中遇到一个有趣的问题,同事反馈说WPF中有一个树形结构的集合,在加载时会直接报堆栈溢出,一直没时间(懒得)看,导致很久了也没人解决掉。于是,组长就把这个"艰巨"的任务交给了我。作为新人中的"高手",必然要义不容辞地接受挑战喽,废话不多说,走起。 分析 由于同事 阅读全文
posted @ 2023-08-07 20:47 Wackysoft 阅读(1850) 评论(5) 推荐(6)
浅谈.Net异步编程的前世今生----EAP篇
摘要:前言 在上一篇博文中,我们提到了APM模型实现异步编程的模式,通过使用APM模型,可以简化.Net中编写异步程序的方式,但APM模型本身依然存在一些缺点,如无法得知操作进度,不能取消异步操作等。 针对这些缺点,微软在.Net 2.0中提出了基于事件的异步模式,简称为EAP模型。 第二个异步编程模型: 阅读全文
posted @ 2019-05-27 22:56 Wackysoft 阅读(1344) 评论(1) 推荐(3)
.NET工控开发:一个被低估的赛道
摘要:前言 大家好,我是wacky。最近在整理工控方向的技术资料时发现一个现象:提起.NET做工业控制,很多人的第一反应是"WinForm拖几个按钮、接个串口"。但实际接触下来,从PLC通信到数据可视化、从状态机引擎到机器视觉,整个.NET工控生态已经覆盖了从设备层到企业层的完整链路。这个系列的目标不是教 阅读全文
posted @ 2026-08-02 09:00 Wackysoft 阅读(2665) 评论(18) 推荐(13)
通信协议实战:Modbus与OPC UA怎么选
摘要:前言 大家好,我是wacky。上一篇我们聊了工控的基本概念——什么是PLC、通信协议是干什么的以及.NET在工控领域的生态位。今天我们往下挖一层,进入实战环节:通信协议到底怎么用、怎么选、怎么避坑。 上一篇留了个概览表,今天展开聊两个核心协议:Modbus和OPC UA。为什么是这两个?因为它们覆盖 阅读全文
posted @ 2026-08-04 08:06 Wackysoft 阅读(870) 评论(5) 推荐(7)
工控生态之数据与业务:采集到的数据怎么存、怎么管、怎么用
摘要:前言 大家好,我是wacky。上一篇我们聊了通信协议——Modbus和OPC UA怎么选、怎么用、怎么避坑。如果通信协议是"把数据搬过来",那今天这一篇解决的问题是:数据搬过来之后怎么办。 一个工控上位机系统,通信只是第一步。PLC每秒推送几百上千个数据点,你拿到了温度、压力、流量、位置……然后呢? 阅读全文
posted @ 2026-08-05 08:08 Wackysoft 阅读(918) 评论(0) 推荐(5)
工控生态之展示与交互:怎么让工业软件不再"丑"
摘要:前言 大家好,我是wacky。前两篇我们聊了通信协议和数据与业务层——怎么把数据从PLC搬过来、怎么存、怎么管。数据有了,业务逻辑有了,最后一公里是:怎么把这些东西呈现给用户。 这一篇是工控上位机技术栈的第三层——展示与交互层。说白了就是界面。工控软件的界面名声一直不太好,"土味工控"几乎成了行业标 阅读全文
posted @ 2026-08-06 08:11 Wackysoft 阅读(681) 评论(0) 推荐(2)
.NET工控概念科普——工控的"实时"和Web的"实时"不是一回事
摘要:前言 大家好,我是wacky。上四篇我们画完了.NET工控的生态地图——通信协议、数据存储、业务逻辑、界面展示,一条完整的技术栈链路。从这一篇开始,我们换个角度:不聊技术栈,聊聊一些工控的基本概念。这些概念看起来"虚",但它们直接决定你做架构决策时的判断力。 第一个要聊的概念是"实时"。如果你做过W 阅读全文
posted @ 2026-08-07 09:22 Wackysoft 阅读(703) 评论(4) 推荐(5)
.NET工控概念科普——PLC扫描周期:理解了它才算入了工控的门
摘要:前言 大家好,我是wacky。上一篇我们聊了工控的"实时"——为什么工控的实时不是"快"而是"确定"。那么理解实时性之后,下一步就是理解PLC的扫描周期,因为扫描周期是PLC实时性的具体实现机制。 很多做上位机的.NET开发者觉得扫描周期是PLC工程师的事,跟自己没关系。这是一个认知误区。你的上位机 阅读全文
posted @ 2026-08-10 09:25 Wackysoft 阅读(580) 评论(3) 推荐(4)
.NET工控概念科普——下位机和固件,上位机开发者必须搞懂的"另一半"
摘要:前言 大家好,我是wacky。上一篇我们聊了PLC扫描周期,PLC凭什么能做到确定性响应,答案藏在"读、算、写"的三步循环里。前两期概念篇聊的都是"时间维度"的东西——实时性和扫描周期。这一期换个角度,聊一个更基础但很多人模糊的概念:下位机和固件。 为什么聊这个?因为我发现很多从纯软件开发转过来的. 阅读全文
posted @ 2026-08-12 09:20 Wackysoft 阅读(387) 评论(0) 推荐(3)
.NET工控概念科普——SCADA、MES、ERP三种系统的边界
摘要:前言 大家好,我是wacky。上一篇我们聊了下位机和固件,前面几期概念篇聊的都比较"底层":实时性、扫描周期、下位机、固件。这一期我们往上走一层,聊一个工程里绕不开、但很多人一直没理清的概念:SCADA、MES、ERP 系统的边界。 为什么要聊这个?因为在日常交流时,我发现一个很普遍的现象:刚入行的 阅读全文
posted @ 2026-08-17 09:07 Wackysoft 阅读(809) 评论(2) 推荐(2)
.NET工控生态总览:带你厘清工控项目的典型架构
摘要:前言 大家好,我是 wacky。 前面几期概念篇,我们从实时性、扫描周期,聊到下位机、固件,再到上一期 SCADA、MES、ERP 的三层边界。一条从设备底层到企业顶层的认知链路,算是打通了。 但打通认知和能上手干活,中间还差一张全貌图。 我见过不少刚写上位机的人,案头贴的是"PLC 通信代码片段" 阅读全文
posted @ 2026-08-27 09:32 Wackysoft 阅读(774) 评论(5) 推荐(2)
.NET上位机踩坑:大小端和字节序
摘要:前言 大家好,我是 wacky。 今天聊个具体的坑——字节序和大小端。这坑我刚入行那会儿踩过,盯着采集上来的温度显示 1.347e-38,一度怀疑人生。 很多上位机新手有个错觉:从 PLC 把寄存器读上来,转换一下不就是个数了吗?实际上真没那么简单。一个 32 位浮点数跨两个寄存器,中间隔着"大小端 阅读全文
posted @ 2026-08-31 10:17 Wackysoft 阅读(949) 评论(6) 推荐(5)
.NET上位机踩坑:BOOL和BIT
摘要:前言 大家好,我是 wacky。 今天这篇文章,来源于一个真实的疑问,什么疑问呢?就是我一个BOOL类型的数据,它的值是TRUE或者FALSE;而一个Bit类型的数据,它的值,也是TRUE或者FALSE,那么它们二者是一样的吗?能否互相替换使用? 答案是不能的,今天我们这一篇就来聊一聊,BOOL和B 阅读全文
posted @ 2026-09-09 10:27 Wackysoft 阅读(401) 评论(0) 推荐(3)
.NET上位机踩坑:为什么有时读取数据需要Sleep?
摘要:前言 大家好,我是 wacky。 今天这篇文章,也是源自于一个真实的探讨。曾经有朋友说,做上位机开发对接PLC的时候,有时会出现玄学,读取不到完整的数据。这时就需要加一个Thread.Sleep(30),或者一个类似的时间间隔,就完全好了,至于为什么,完全搞不清楚。 我相信应该不少人都遇到过类似的情 阅读全文
posted @ 2026-09-14 09:21 Wackysoft 阅读(947) 评论(17) 推荐(5)
.NET上位机踩坑:用Pipelines替代环形缓冲区(番外篇)
摘要:前言 大家好,我是 wacky。 书接上回,我们上回探讨了如何解决TCP粘包和半包的问题,并在最后引入了环形缓冲区的概念。虽然环形缓冲区主要是通过固定数组+读写索引+模运算来实现循环,但是实际开发过程中,还存在手动管理 offset、count,数组扩容、数据移动,容易越界、内存拷贝多等一系列的问题 阅读全文
posted @ 2026-10-08 09:24 Wackysoft 阅读(727) 评论(5) 推荐(5)