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...

阅读全文>>

0

告别996 !.Net Core开源模块化快速开发解决方案——NetModular

介绍NetModular 是一个以模块化为核心的快速开发框架,能够让中小企业快速从零搭建自己的开发平台;开箱即用,让开发者专注于自己的业务开发,以模块化的方式,最大化的代码复用,避免重复开发,拒绝 996,让广大程序员有更多的时间放飞自我。仓库Giteehttps://gitee.com/laoli/NetModularhttps://gitee.com/laoli/NetModular.DemoGithub:https://github.com/iamoldli/NetModularhttps://github.com/iamoldli/NetModular.Demo框架介绍模块化以模块化为...

阅读全文>>

0

Visual Studio 2019 版本新增的一些实用的功能

本次新增的功能回顾:开发:通过提高性能、即时代码清理和更好的搜索结果,保持专注和高效。协作:通过 Git 优先工作流、实时编辑和调试以及 Visual Studio 中的代码评论,享受自然协作。调试:突出显示并导航到特定值,优化内存使用,并自动拍摄应用程序执行的快照。改进的搜索新搜索体验以前称为快速启动,更快、更高效。现在,搜索结果在键入时动态显示。而且,搜索结果通常可以包括命令的键盘快捷键,以便您可以更轻松地记住它们供将来使用。新的搜索功能、模糊搜索、拼写检查等新的模糊搜索逻辑将找到所需的任何内容,而不考虑拼写错误。因此,无论您是在寻找命令、设置、文档还是其他有用内容,新的搜索功能都更易于查...

阅读全文>>