自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (3)
  • 问答 (3)
  • 收藏
  • 关注

原创 AspNetCore路由:网络请求的交通指挥官

路由系统是现代Web应用的基石,优秀的API设计往往始于合理的路由规划。ASP.NET Core提供了灵活强大的路由系统,结合中间件管道,开发者可以构建出既高效又易于维护的Web应用。掌握路由机制,将使您的服务器端编程能力提升到一个新的维度。

2025-03-30 20:28:57 832

原创 C# 异步方法设计指南:何时使用 await 还是直接返回 Task?

场景选择示例需要处理异常、资源或后续逻辑必须使用awaittry-catch仅透传异步操作且无额外逻辑直接返回Task高频调用或性能敏感路径直接返回Task避免状态机开销需要清理同步上下文。

2025-03-28 17:19:47 807

原创 在 .NET 9 中使用 QUIC 实现高效通信:从基础到实战

NET 9 的 QUIC 实现为高性能网络应用提供了强大工具,结合多流并发和高效数据管道,可轻松构建低延迟通信系统。开发者需注意证书管理与平台适配,进一步优化可参考Microsoft 官方文档。

2025-03-25 17:35:54 819

原创 在 ASP.NET Core 中实现限流(Rate Limiting):保护服务免受滥用与攻击

内置方案:适合简单场景,无需额外依赖,支持主流限流算法。:适合复杂需求,支持动态配置、客户端级限流和分布式部署。通过合理配置限流策略,可以有效防止服务过载,提升系统稳定性。建议结合监控日志持续优化阈值,确保用户体验与系统安全的平衡。

2025-03-24 17:21:18 706

原创 把 ASP.NET Core 服务(BigDogServer)部署到 Linux 并作为服务运行

通过以上步骤,你可以顺利地将 BigDogServer 这样的 ASP.NET Core 服务项目发布到 Linux 服务器,并将其作为系统服务来运行。同时,通过多种方式验证服务的运行状态,确保服务能够正常工作。了解如何查看 .NET 运行时版本也有助于你对系统环境进行管理和维护。使用自动化脚本可以提高部署效率,减少人为错误。希望本文能对你的项目部署有所帮助。

2025-03-23 17:46:39 823

原创 创建WebSocket服务器:TouchSocket框架实践

WebSocket是一种基于HTTP协议的升级协议,允许客户端与服务器之间进行全双工通信。在TouchSocket框架中,WebSocket功能可以通过挂载实现,并支持多种插件化扩展。命名空间程序集。

2025-03-23 15:33:12 509

原创 在Ubuntu 22.04 中安装Docker的详细指南

二、安装步骤 更新系统 在安装Docker之前,首先需要更新系统的软件包列表,确保系统是最新的状态。使用curl命令获取密钥并添加到系统中: curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg 设置稳定版Docker软件源 设置Docker软件源,以便通过apt命令安装Docker。

2025-03-22 18:56:23 643

原创 ASP.NET Core部署Docker教程

【代码】ASP.NET Core部署Docker教程。

2025-03-21 09:34:21 563

原创 在ASP.NET Core中使用NLog:配置与性能优化指南

通过合理配置NLog,我们不仅实现了高效的日志记录,还将日志系统的性能开销降低了40%(根据实际压力测试数据)。建议根据具体场景组合使用异步处理、缓冲机制和日志采样等策略,在保证可观测性的同时最大化应用性能。NLog是一个灵活且高性能的日志记录库,在ASP.NET Core应用程序中广受欢迎。本文将介绍如何从零开始配置NLog,并通过优化配置提升日志记录性能。

2025-03-19 22:21:48 730

原创 TouchSocket TcpService:构建高性能Tcp服务的终极利器

/ 接收到的数据data");// 回复客户端await ((ITcpSessionClient)client).SendAsync("服务端已收到消息!");// 继续执行后续插件TouchSocket的TCPService以极简的API、强大的扩展性和卓越的性能,重新定义了.NET TCP服务的开发体验。无论是物联网平台还是金融级实时通信系统,TCPService均能提供可靠的基础设施支持。立即探索示例项目,开启你的高性能服务开发之旅!扩展阅读如何实现WebSocket服务?

2025-03-19 20:50:17 883

原创 TouchSocket包序列化模式:极致性能的序列化解决方案

包序列化模式通过手动或自动生成代码,直接将对象属性按顺序写入二进制流,避免了传统反射和动态代码生成的开销。极致性能:实测比MemoryPack快30%,比JSON快20倍。轻量数据:理论最小数据占用,减少网络传输与存储开销。全类型支持:支持自定义类型、集合、字典等复杂数据结构。对于第三方类型(如),可通过} }} }TouchSocket的包序列化模式通过极简设计与源生成技术,为.NET开发者提供了高性能、低开销的序列化方案。无论是实时通信还是大数据处理,均可显著提升效率。

2025-03-19 20:40:11 548

原创 深入解析 TouchSocket 插件系统架构与实践

TouchSocket 的插件系统是一组能够实现多播订阅、可中断的触发器,其核心功能是提供类似事件或委托的通知机制。该系统的设计灵感来源于 AspNetCore 的中间件,不仅具备与中间件相似的使用体验,还提供了更高的灵活性和自由度。set;

2025-03-19 15:51:07 997

原创 TouchSocket 日志记录器(ILog)使用指南

通过实现ILog接口,可以创建自定义日志记录器。set;// 自由实现逻辑。

2025-03-19 13:24:43 994

原创 高性能二进制序列化:FastBinaryFormatter

是一个高性能的二进制序列化工具,隶属于命名空间,并包含在程序集中。它以二进制形式对数据进行序列化和反序列化,具有优秀的内存利用率和性能表现。除了基础类型外,还支持自定义实体类、结构体、元组以及由这些类型组成的数组、字典和列表等复杂数据结构。通过自定义转换器,甚至可以实现对任意类型的序列化和反序列化。GitHub仓库Gitee仓库通过自定义转换器,可以解决所有类型的序列化与反序列化问题,并对特定类型进行优化。例如,以下类中只有两个intset;set;首先声明一个继承自的转换器类,并实现Read和。

2025-03-19 10:17:01 524

原创 深入解析 TouchSocket 内存池:高效管理字节数组的核心技术

命名空间程序集核心目标:解决高频字节数组创建与销毁的性能问题,借鉴微软ArrayPool并优化。BytePool作为TouchSocket的核心组件,通过高效的内存管理显著提升了网络通信性能。掌握其使用方法(如梯度分配、多线程同步)是优化TouchSocket应用的关键。建议开发者结合实际场景调整内存池参数,并通过开源仓库获取最新更新与社区支持。

2025-03-19 09:42:42 598

原创 探索TouchSocket:轻松上手的高性能网络通信库

通过本文,您已掌握TouchSocket的入门步骤:从环境配置到依赖安装,再到项目集成。协议扩展:实现自定义协议(如Dmtp)。插件开发:扩展WebSocket、静态文件服务器等功能。性能优化:利用异步调用、AOT编译提升效率。TouchSocket的灵活性和高性能使其成为网络通信场景的理想选择。无论是开发服务器后端、游戏联机功能,还是物联网设备通信,TouchSocket都能助您快速构建健壮的解决方案。

2025-03-19 09:36:44 962

原创 TouchSocket|适配一个c++的Tcp自定义协议

然后再新建一个类,名为MyClientAdapter,继承CustomFixedHeaderDataHandlingAdapter,同时指定MyResponsePackage为泛型成员。该接口大概如下,其中Build方法,会指示成员应当如何构建数据。首先新建一个类,名为MyRequestPackage,同样继承MyBase,然后实现IFixedHeaderRequestInfo。此后,我们只需要发送MyRequestPackage对象,然后适配器内部会自动调用Build函数,然后执行发送。

2023-12-06 22:36:41 2837 3

原创 Vue入门学习笔记(1)

两者的区别就是前者可创建vue2项目,且可以自定义初始化组件,但编译启动较慢。后者作为vue3的专属工具,效率高,不需要设置很多不懂的参数。安装方法非常简单,使用cmd、powershell、或者win11的终端都可以。节点在国外,所以下载可能有问题,所以最好设置一下国内加速。下列安装类型均是全局安装,方便快捷,新手建议!首先,创建一个根目录,最好全英文。创建vue项目,可使用的工具有。然后在菜单->终端->新建终端。然后用vscode打开。,说明镜像配置成功。,说明镜像配置成功。

2023-05-18 11:09:23 769

原创 C# Task.Factory.StartNew和Task.Run的坑点

初学Task时,几乎所有的资料都说Task.Factory.StartNew和Task.Run是一样的,只不过Task.Run是简版,Task.Factory.StartNew可以设置更多参数。我找了微软的文档,并没有说明这种情况。如果有懂的人,可以交流一下。可以发现,Task.Factory.StartNew并没有等待Task完成,而是直接向下执行了。可万万没想到,我在实际使用时,却发现了一个运行不一致的小“bug”。上述代码在实际运行中,就发生的结果不一致。ok,一篇水文完成。

2023-03-06 10:01:46 2394 5

原创 C# 如何实现对“属性”的扩展

例如:一个Person类,他在项目初期,只有一个属性Age,可随着项目升级,可能需要Name,Address,甚至Price。继承,会让显式的Person类无法使用声明到子类的属性,到时候必须进行强制转换,而一旦继承分支多起来的话,将非常糟糕。属性是一个类的特征,随着开发的不断升级,这种特征可能在一直变化,有时候为了向下兼容,一般属性的数量都是直接递增的。而重新编译,带来的问题就更大了,总不能把属性都声明在父类吧。那么常规做法就是继承,然后在子类添加属性。当后续你需要什么属性的时候,自己声明扩展即可。

2023-02-16 13:54:34 4952 3

原创 C# 压缩或解压

代码来源网上,经过了我的稍微改造,方便后面我的使用,如果能帮到你,当然更好。首先,你需要安装SharpZipLib。

2023-02-12 15:23:33 779

原创 Docusaurus 2.0 自定义组件

如果以后更新,或者不要了,只需要删除theme或者theme下面对应的组件目录即可。它的逻辑非常简单,如果你自定义了 theme/组件,就用你的,否则用它默认的。然后他就对我开始了手把手教学,此处我只做记录。theme表示默认主题,theme-主题名称表示特定主题。eject的意思就是我copy你的出来改,这样保险一点~~-doc 表示是文档,还有 -blog 表示博客页面。首先,找到要自定义的组件板块。没了,前面都是铺垫~~,用来发现组件。

2023-02-08 13:29:32 584

原创 C# Tcp服务器实现多端口、多协议解析

当同一个端口解析不同协议时,就需要协议侦测,举个例子说,你想用一个吸管去知道四个杯子里都是什么的时候,你只有一个一个去尝,所以这样的设计性能低下,且并不可靠,甚至会导致严重的偶发性bug。所以最好最好不要这样设计。有时候物联网设备管理平台需要接收不同厂家的物联网设备,每家的设备通讯协议各不相同。平台需要为每个厂商提供一个通讯端口。所以需要实现一个端口,对应一个数据解析器。用接口实现的好处是,实例可以自由实现,比如使用数据库实现,能够实现持久化限制访问名单。即可,具体步骤详看链接博客。

2023-01-11 12:11:25 2958 2

原创 C# 实现为Tcp服务器设计访问黑名单、白名单

黑名单的含义就是不允许黑名单上的ip地址对当前服务器进行访问。白名单的含义就是只允许白名单上的ip地址访问当前服务器。

2023-01-11 10:56:58 3140 3

原创 WPF实现超简约的MVVM事件绑定(不依赖任何东西)

你的前端,首先需要引入touchMvvm的命名空间,然后DataGridActionsCommand能够连接你的VM即可。嘶,,我这引入了一个dll,还得自己再写个类,为的就仅仅是绑定一个事件?使用非常简单,下列,我就以DataGrid的双击事件和选择项改变事件为例。一般情况下,如果想实现事件绑定,网上的教程一般都是依赖。如果想要更多的事件,前端不用动,只需要增加对应事件的。其三,则是最最难受的,如果想获得事件参数,就得重写。但是我本人很不喜欢这东西。其一,需要引入一个dll。那有没有更简单的方法呢?

2022-11-02 15:25:21 2808

原创 C# 优雅的为Tcp客户端设计心跳数据包

心跳机制是定时发送一个自定义的 结构体 (心跳包),让对方知道自己还活着,以确保连接的有效性的机制。 网络中的接收和发送数据都是使用操作系统中的 SOCKET 进行实现。 但是如果此 套接字 已经断开,那发送数据和接收数据的时候就一定会有问题。 可是如何判断这个套接字是否还可以使用呢? 这个就需要在系统中创建心跳机制。 其实TCP中已经为我们实现了一个叫做心跳的机制。但是该机制受限于操作系统,而且很容易误报。所以很少被大家使用。大家使用最多的,就是自己设计数据包,然后预留心跳格式,当对方收到心跳包时,直接返

2022-07-04 16:40:24 7260 4

原创 C# TCP如何限制单个客户端的访问流量

创建服务器后,想实现一个限流功能,应该如何实现呢?即可,具体步骤详看链接博客。实际上,该插件也能用于。

2022-06-28 10:05:42 2642

原创 C# 创建轻量级Http服务器,用于传输文件、响应webApi,展示静态文件等

有小伙伴提问,c#有没有轻量级的Http服务器,因为直接部署Asp.net Core的话,有点太大了。而且,学习成本也高。我说,微软不是有HttpListener吗?他说不好用。好吧。。。。在这里推荐RRQMSocket.Http,这是一个开源的,轻量级,高性能的Http组件。支持Ssl和多通道的文件传输。文档首页Nuget安装即可,具体步骤详看链接博客。VS、Unity安装和使用Nuget包服务器的创建非常简单,设置好需要监听的地址即可。【处理请求】HttpService处理请求的方式,主要是通过插件实

2022-06-23 17:20:40 9236

原创 C# Tcp服务器如何限制同一个IP的连接数量?

创建服务器后,想实现一个功能,就是“限制同一个IP的连接数量”。我和他说,自定义一个插件即可,结果。那ok,我给大家示例一下吧。即可,具体步骤详看链接博客。今天有小伙伴提问,他在使用。创建插件和连接计数器。

2022-06-21 15:13:43 3754

原创 .NET C# RPC产品性能测试、性能对比报告(包含Grpc、BeetleXRPC、NewLifeRPC、TouchRpc)

在10w次极简调用中,Grpc用时29.47s,也是用时最久的。BeetleXRPC用时19.34s,NewLifeRPC用时26.88s,TouchSocket用时6.06秒。基本上,TouchSocket是Grpc的五倍,是BeetleXRPC的三倍,是NewLifeRPC的四倍有余。但是值得注意的是,Grpc使用的是在ssl加密模式下HTTP数据格式,且数据参数也经过了message封装类,所以本次测试对于Grpc不是很公平,但是基本上也能给大家一些参考性意见。

2022-01-16 16:17:58 2663 2

原创 .NET C# Socket产品性能测试、性能对比报告(包含SuperSocket、HPSocket.Net、TouchSocket)

因为我是TouchSocket 的作者,所以难免会对自家产品有诸多赞扬,但是实际上我知道,TouchSocket 还有很长的路要走,好的产品只有经过时间和更多人的考验,才能淘沙出金。所以希望本篇测评,能该您一个建议,也能给TouchSocket 一个机会。下次选择Socket的时候,可以考虑一下TouchSocket 哦。

2022-01-15 21:35:29 11008 17

原创 C#搭建高效、便捷的WebSocket服务器和客户端

WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范。WebSocket API也被W3C定为标准。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

2021-12-27 13:47:22 30190 16

原创 C# 高性能RPC,TouchRpc,支持ref和out关键字、流数据、大数据传输

文章目录一、序言本节须知二、程序集源码、Demo下载2.1 源码位置2.2 Demo位置三、安装四、创建RPC4.1 创建服务五、发现、调用RPC服务六、调用痛点七、代理代码生成7.1 获取代理代码一、序言本节须知在学习本节之前,您必须熟悉RRQM中的Protocol服务器与客户端(或其派生类,例如文件传输和RPC)的创建,如果您不熟悉,请在下列链接中了解。【RRQMSocket】C# 搭建TCP自定义协议、Protocol服务器和客户端二、程序集源码、Demo下载2.1 源码位置RR

2021-11-24 14:51:15 4811 3

原创 VS、Unity安装和使用Nuget包

Nuget是一个包(package)管理平台,确切的说是.net平台的包管理工具,它提供了一系列客户端用于生成,上传和使用包(package),以及一个用于存储所有包的中心库即NuGet。Unity项目中,屏蔽了Nuget包管理器(可视化),但是Nuget包控制台依然可以使用,但是在Unity中,一切皆资源,所以为规范不建议这么做最好的方式则是资源加载dll。一般的,包都有依赖,在引入时,需要将依赖包全部下载、解压、导入(直接把dll拖入,如果包含xml文件,最好一起拖入,这样注释也有)。

2021-11-22 10:28:24 13525 2

原创 C# 创建基于TCP、HTTP协议的JsonRpc 2.0(可跨平台、跨语言)

前言JSON-RPC是一个无状态且轻量级的远程过程调用(RPC)协议。 其使用JSON(RFC 4627)作为数据格式。本文中对于JSON-RPC服务框架的选取使用RRQMSocket.RPC.JsonRpc,该框架可以免费用于个人学习、商业使用等。RRQM简介RRQMSocketRRQMSocket是一个轻量级网络通信框架,其特点是多兼容、广适配、高并发。其中主要内容包括:TCP、UDP服务通信框架、大文件传输、RPC、WebApi、XmlRpc、JsonRpc等内容。RRQMSocket.RP

2021-07-05 14:55:25 3844 4

原创 C# 通过反射获取async方法返回值

大家好!今天在开发RRQMSocket.RPC时,突然发现一个问题,如何在反射调用异步方法后获得返回值?首先,先看看非异步方法如何获得。class Program{ static void Main(string[] args) { MethodInfo methodInfo = typeof(Program).GetMethod("SayHello"); object result = methodInfo.Invoke(new Program()

2021-05-08 10:03:33 3701 5

原创 C# Socket客户端固定端口连接

在使用Socket时,我们都知道创建的服务器是需要绑定端口的,这样才能被客户端正确连接。而客户端在连接后使用的端口号是由操作系统动态分配的,但是有时候我们为了方便记录,或者安全设置,希望客户端得到的端口号也是固定的,那应该怎么做呢?其实非常简单,只需要在客户端Connect之前先绑定就可以。如下代码,这样做的话,客户端在连接到服务器时使用的端口号就是8848。Socket socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,P

2021-04-26 13:20:05 9395

原创 C# 使用内存池,Stream池防止内存碎片化

目录前言前言为什么要引入内存池?引入内存池的好处是什么?引入内存池能解决哪些问题?

2021-03-17 14:29:58 2646 1

原创 写一个简约的WPF登录窗体

Hello,大家好,我是若汝棋茗,今天让我来给大家水一篇WPF窗口的博客。先看效果图还比较满意吧,那就让我们开始吧!!首先引入RRQMSkin包,因为窗体有圆角,并且需要改变尺寸,所以使用RRQMEffectWindow来实现。然后修改window继承类为RRQMEffectWindow,后台代码一致。然后,重写RRQMEffectWindow模板。 <Style x:Key="MainWindowStyle" TargetType="{x:Type Custom:RRQM

2021-03-17 10:35:03 1217

原创 WPF 自定义控件如何设置个性化命名空间

Hello 各猿友,本猿想在这里采访一下各猿友,大家开发桌面软件是用什么语言,什么框架呢? C++之QT C++之MFC Java之swing C#之winform C#之WPF 老子从CUP指令集开始自己写好的,经过大家的对吊唁(是的你么有看错),看来大家对WPF使用较多啊!!!WPF是个优秀的UI框架!!!水了这么多,还没说到重点,搞什么飞机!!!相信大家在使用过程中都见过这种东西,xmlns:开头的,其实这就是xaml的命名空间,类似于C#的using,但是让人疑惑的是,谁会

2021-03-16 12:29:32 929

TouchSocket解析自定义协议.7z

TouchSocket解析自定义协议.7z

2023-12-06

IOCP与Select测试.7z

这是一个测试IOCP疑似内存泄漏的Demo

2021-11-29

JsonRpcDemo.zip

这是在C#开发的JsonRpc服务器, 特点是: 异常反馈 、支持自定义类型、 支持类型嵌套、支持js、Android等调用。

2021-07-05

高仿微信即时通讯.zip

这是一款类似微信的即时通信软件,可以实现的基本内容是收发消息和收发文件,当然可以对文件进行断点续传等操作。通讯基础是tcp Socket,但是已经解决了粘包的问题,不仅如此,对于文件传输的操作更加方便,所以二次开发将会更加简单。

2020-06-23

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除