0

.NET 中依赖注入组件 Autofac 的性能漫聊

Autofac 是一款超赞的 .NET IoC 容器 ,在众多性能测评中,它也是表现最优秀的一个。它管理类之间的依赖关系, 从而使 应用在规模及复杂性增长的情况下依然可以轻易地修改。它的实现方式是将常规的.net类当做 组件 处理。简单的性能测试在 LINQPad 中,我们可以很容易的构建出一个测试环境(需要引入 Microsoft.Extensions.DependencyInjection 和 Autofac.Extensions.DependencyInjection 组件):写一些简单的性能进行测试代码:在 LINQPad 中对上述代码进行一万次、十万次、百万次三个量级的测试,得出以下...

阅读全文>>

0

Autofac一个优秀的.NET IoC框架

1 简介Autofac与C#语言的结合非常紧密,并学习它非常的简单,也是.NET领域最为流行的IoC框架之一。2 使用首先,将Autofac的NuGet软件包安装到您的应用程序中。Autofac 然后,我们通过创建ContainerBuilder来注册组件。var builder = new ContainerBuilder(); builder.RegisterType<Knife>(); builder.RegisterType<Actor>(); 接着,可以通过在一个已存在的生命周期上调用 BeginLifetimeScope() 方法来创建另一个生命周期作用域,...

阅读全文>>

0

什么是依赖注入

1 定义依赖注入(Dependency Injection),简称DI,类之间的依赖关系由容器来负责。简单来讲a依赖b,但a不创建(或销毁)b,仅使用b,b的创建(或销毁)交给容器。2 例子为了把DI讲清楚,我们需要举一个简单例子。例子足够小,希望让你能直观的了解DI而不会陷入真实示例的泥潭。例子:小明要杀怪,那小明拿什么武器杀怪呢?可以用刀、也可以用拳头、斧子等。首先,我们创建一个演员类,名字叫“小明”,具有杀怪功能。namespace NoInjection.ConsoleApp { public class Actor { private string n...

阅读全文>>

0

Ocelot一个优秀的.NET API网关框架

1 什么是Ocelot?Ocelot是一个用.NET Core实现并且开源的API网关,它功能强大,包括了:路由、请求聚合、服务发现、认证、鉴权、限流熔断、并内置了负载均衡器与Service Fabric、Butterfly Tracing集成。2 如何使用Ocelot?首先,创建2个WebApi项目,WebApi01和WebApi02,地址分别https://localhost:44313和https://localhost:44390,其中WebApi01当作网关,WebApi02当作具体的微服务Api。然后,将Ocelot的NuGet软件包安装到WebApi01项目中。Ocelot 注意...

阅读全文>>

0

ASP.NET+MVC+使用+Log4net+记录日志笔记

前言:记录系统中的日志,是一个好的项目产品必备的一个环节。每一个产品最终的目的都是要交予客户使用,因为程序员代码的开发水平参差不齐,Bug就成为了项目运维成本最大的因素之一。如何降低项目运维的成本呢,最重要的是要缩短开发人员在系统运维排查问题的时间成本。如果你的系统中很好的集成了日志框架。那么你可以更快更高效的定位问题、解决问题。从而降低系统运维的时间成本。今天小编给大家介绍Log4net日志框架如何在项目中 使用,希望能对大家有所帮助。Log4net 介绍1、Log4net 是什么?Log4net 是 Apache 旗下一个开源的日志框架的项目,它是Log4j 的一个复制版。Log4net中...

阅读全文>>

0

C#中多线程的那点事-死锁

我们讲述了多线程编程过程中,一种限制多个线程对资源的同时访问的技术——锁。小明同学,上周未和家人出去游玩去了。刚学了锁的用法,小明终于完善的模拟出了早餐店的流水线,所以他游玩很开心。但是回家的路上,却遇到了烦心事!由于天气很好,小明一家人游玩到了天黑才驱车回家。正值交通拥堵的时候,在他们即将行进到一个环岛的时候,交通完全堵死了。传说中的堵死小明在车上看着道路资源被无限的占用着,联想到多线程编程中的锁:要是限制一下进入环岛的车辆的数量,是不是就不会出现这种无限的堵死在状态呢!由于车辆太多,已经进入环岛的车辆,出环岛的路被堵死,无法出去,无法释放占用的道路资源。想要进入环岛的车辆,却又因为无法进入...

阅读全文>>

0

HttpClient的两种重试机制

本文基于 HttpClient 4.5.13使用 http 请求外部服务时,由于网络或者服务本身的不稳定性,经常需要重试。重试当然可以通过手撸代码实现,但更好的方式是通过现有的机制去实现。 HttpClient 中支持两种重试:异常重试。服务不可用重试。异常重试HttpClient 执行时会抛出两种异常:java.io.IOException ClientProtocolExceptionjava.io.IOException 被认为是非致命性且可恢复的,而 ClientProtocolException 被认为是致命性的,不可恢复。处理的时候要注意, ClientProtocolExcept...

阅读全文>>

0

将最新Chromium浏览器集成到.NET应用程序中

DotNetBrowser是一个.NET库,允许将基于Chromium的WPF和WinForms组件嵌入到.NET应用程序中,以显示使用HTML5,CSS3,JavaScript,Silverlight等构建的现代网页。DotNetBrowser更新至v2.3版本,Chromium更新至84版本,允许从JavaScript访问和修改属性的值,增加拖放事件拦截和IDataObject支持,以及更多改进和修复,还没有使用过可以点击文末“了解更多”获取该产品的特征如下:1、WPF或WinForms组件DotNetBrowser提供.NET WPF和WinForms,它们能够被嵌入到.NET应用中来显...

阅读全文>>

0

.NET 5.0 正式版发布:应用可在ARM64设备上原生运行

微软今天发布了 .NET 5.0 正式版。本次版本更新幅度很大,而且自首个预览版发布以来微软已经进行了广泛的内部部署,除了在 .NET 5.0 上运行 .NET 网站外,Bing 也在使用这个新平台。更令人惊讶的是,该版本的发布路线图是去年 5 月就已经敲定的,这意味着疫情并没有影响微软推进该软件的发布。下载地址|更新日志本次版本更新非常重视 .NET 的统一性,微软希望 .NET Framework 开发者能够迁移他们的代码和应用到 .NET 5.0 上,为明年发布的 .NET 6.0 将 Xamarin 开发者过渡到统一平台奠定了基础。目标是将所有的 .NET 组件整合到一个产品下,然后用...

阅读全文>>

0

C# 实现向指定邮箱发送信息功能

应用场景可以快速批量或者自动向指定用户发送模板邮件信息,比如重置密码时可以向指定邮箱发送验证码,公司发布公告、通知等,由于向邮箱发送验证码是免费的,因此可以节约成本。前提条件1、知晓邮箱服务器的类型,与邮箱服务器端口。我使用的是QQ邮箱,QQ邮箱的邮箱服务器类型是:smtp.qq.com。QQ邮箱服务器的端口是587。如果需要其余邮箱平台的的服务器端口与服务器类型,请百度,我就不列举了。2、需要开启发送信息邮箱的SMTP服务。代码实现:/// <summary>/// 向指定邮箱发送信息/// </summary>/// <param name="receivin...

阅读全文>>