随笔分类 -  C# / .NET

摘要:C# 实用第三方库 Autofac 依赖注入IOC框架 NuGet安装:Autofac、Autofac.Extras.DynamicProxy AutoMapper 对象映射 Mapster 对象映射 Castle.Core 动态代理AOP框架 Quartz 定时任务框架 NLog 日志框架 NuG 阅读全文
posted @ 2022-05-26 14:40 0611163 阅读(504) 评论(0) 推荐(0)
摘要:WEB端播放华为海康大华视频方案 类似标题:谷歌浏览器播放华为海康大华视频方案 方案 以下方案相当于给需要播放视频的WEB系统做了一个专用的浏览器,通过专用浏览器的CS客户端组件播放视频,当然,这个专用浏览器是需要安装的 使用WPF编写一个客户端程序,嵌入CefSharp浏览器控件,除了浏览器之外无 阅读全文
posted @ 2022-03-12 20:53 0611163 阅读(1372) 评论(0) 推荐(0)
摘要:## 源码 [https://gitee.com/s0611163/AsyncAwaitDemo](https://gitee.com/s0611163/AsyncAwaitDemo) ## 为什么会研究这个? 我们项目的客户端和服务端通信用的是WCF,我就想,能不能用异步的方式调用WCF服务呢?或 阅读全文
posted @ 2022-01-22 20:56 0611163 阅读(3834) 评论(4) 推荐(8)
摘要:关键词:WCF动态调用、动态调用WCF、WCF使用动态代理精简代码架构、使用反射执行WCF接口 代码地址: https://gitee.com/s0611163/DynamicWCF https://github.com/0611163/DynamicWCF DynamicWCF 介绍 动态WCF: 阅读全文
posted @ 2021-10-26 08:37 0611163 阅读(487) 评论(8) 推荐(1)
摘要:源码:https://gitee.com/s0611163/LogUtil 昨天打算把我以前写的一个C#写日志工具类放到GitHub上,却发现了一个BUG,当然,已经修复了。 然后写Demo对比了NLog和log4net,发现我这个LogUtil比它们性能低了不止一个数量级(后来发现是通过共用Mut 阅读全文
posted @ 2021-10-06 19:24 0611163 阅读(1768) 评论(2) 推荐(5)
摘要:首先用NuGet安装NLog依赖DLL NLog NLog.Config NLog.Schema NLog配置文件NLog.config: <?xml version="1.0" encoding="utf-8" ?> <nlog xmlns="http://www.nlog-project.org 阅读全文
posted @ 2021-10-05 20:34 0611163 阅读(802) 评论(0) 推荐(0)
摘要:log4net.config配置文件: <?xml version="1.0" encoding="utf-8"?> <log4net> <!-- 日志文件配置--> <root> <level value="ALL"/> <!--按文件存储日志--> <appender-ref ref="Debu 阅读全文
posted @ 2021-10-05 20:25 0611163 阅读(166) 评论(0) 推荐(0)
摘要:这是一个SuperSocket 简单示例,包括服务端和客户端。 一、首先使用NuGet安装SuperSocket和SuperSocket.Engine 二、实现IRequestInfo(数据包): 数据包格式: 包头4个字节,前2个字节是请求命令,后2个字节是正文长度 using SuperSock 阅读全文
posted @ 2021-08-27 13:40 0611163 阅读(816) 评论(0) 推荐(1)
摘要:IService接口,以实现服务的启动、停止功能: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespac 阅读全文
posted @ 2021-08-20 16:16 0611163 阅读(759) 评论(0) 推荐(0)
摘要:C# 内存缓存工具类 MemoryCacheUtil using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Securi 阅读全文
posted @ 2021-08-06 10:08 0611163 阅读(505) 评论(0) 推荐(0)
摘要:项目中用到了Quartz,也算是Quartz的一个示例。 源库创建数据同步表SYNC_DATA: CREATE TABLE SYNC_DATA( ID VARCHAR2(36) NOT NULL, TABLE_NAME VARCHAR2(50) NOT NULL, COMMAND VARCHAR2( 阅读全文
posted @ 2021-08-04 14:16 0611163 阅读(347) 评论(0) 推荐(0)
摘要:代码: RSAHelper.cs(RSA加密工具类): using System; using System.Security.Cryptography; using System.Text; namespace Utils { /// <summary> /// RSA加密工具类 /// </su 阅读全文
posted @ 2021-07-12 15:11 0611163 阅读(227) 评论(0) 推荐(0)
摘要:使用Castle.Core.dll实现,核心代码是使用Castle.DynamicProxy.ProxyGenerator类的CreateInterfaceProxyWithoutTarget方法动态创建代理对象 NuGet上面Castle.Core的下载量1.78亿之多 一、重构前的项目代码 重构 阅读全文
posted @ 2020-12-18 13:37 0611163 阅读(610) 评论(7) 推荐(1)
摘要:代码: public static Action<T, object> EmitSetter<T>(string propertyName) { var type = typeof(T); var dynamicMethod = new DynamicMethod("EmitCall", null, 阅读全文
posted @ 2020-11-04 00:10 0611163 阅读(360) 评论(0) 推荐(0)
摘要:同事写了这样一段代码: FactoryStartNew类: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace SunCreate.Common.ComLib 阅读全文
posted @ 2020-10-31 14:39 0611163 阅读(2097) 评论(0) 推荐(0)
摘要:async await 异步下载 异步代码加锁 lock 异步缓存 FTP异步下载代码: /// <summary> /// 异步下载文件 /// </summary> /// <param name="ftpPath">ftp路径</param> /// <param name="ftpUserI 阅读全文
posted @ 2020-08-12 10:20 0611163 阅读(758) 评论(0) 推荐(0)
摘要:不知道用什么词形容,就叫它假异步吧。 写异步方法,async 和 await 要一路写到底,否则就是假异步,并不能提高请求线程池的吞吐量。 真正的异步,我的理解是这样的:比如调用一个查询接口,在当前线程,把SQL扔给数据库,当前线程释放,去干别的事情,数据库查询完了,通知我,我再在另一个线程里(也可 阅读全文
posted @ 2020-08-01 16:50 0611163 阅读(1298) 评论(6) 推荐(1)
摘要:新建Web API工程 选Empty,勾选Web API,不要选择Web API,那样会把MVC勾上,这里不需要MVC Web API工程属性 XML文件用于生成在线文档 新建Windows服务作为Web API的宿主 WebApiHost工程属性 控制台应用程序方便调试 Windows服务安装Mi 阅读全文
posted @ 2020-06-23 19:20 0611163 阅读(1406) 评论(5) 推荐(2)
摘要:如果死循环独占线程,500个死循环要占用500个线程,如果死循环不独占线程,500个死循环,用200个线程也行,用20个线程也行,无非是执行的慢点 这样可以把同步操作改写为异步,并且节省线程占用 问个问题:写个Socket服务端,接收数据不准用BeginReceive和ReceiveAsync,只能 阅读全文
posted @ 2020-06-17 19:27 0611163 阅读(1576) 评论(0) 推荐(1)
摘要:先上源码: https://gitee.com/s0611163/TaskSchedulerEx 为什么编写TaskSchedulerEx类? 因为.NET默认线程池只有一个线程池,如果某个批量任务一直占着大量线程,甚至耗尽默认线程池,则会严重影响应用程序域中其它任务或批量任务的性能。 特点: 1、 阅读全文
posted @ 2020-06-03 15:15 0611163 阅读(3894) 评论(28) 推荐(3)