一文说通Dotnet的委托】的更多相关文章

简单的概念,也需要经常看看.   一.前言 先简单说说Delegate的由来.最早在C/C++中,有一个概念叫函数指针.其实就是一个内存指针,指向一个函数.调用函数时,只要调用函数指针就可以了,至于函数本身的实现,可以放在其它地方,也可以后实现.到了.Net,没有指针的概念了,但这种方式很实用,所以这个概念也保留了下来,形成了现在的委托Delegate. 另外,在.Net中,也把委托延伸了,与执行回调设计成了同一种机制,允许开发者定义回调的签名和类型. 当我们声明一个委托时,编译器会生成一个从M…
这是一文说通系列的第二篇,里面有些内容会用到第一篇中间件的部分概念.如果需要,可以参看第一篇:一文说通Dotnet Core的中间件   一.前言 后台任务在一些特殊的应用场合,有相当的需求. 比方,我们需要实现一个定时任务.或周期性的任务.或非API输出的业务响应.或不允许并发的业务处理,像提现.支付回调等,都需要用到后台任务.   通常,我们在实现后台任务时,有两种选择:WebAPI和Console. 下面,我们会用实际的代码,来理清这两种工程模式下,后台任务的开发方式.     为了防止不…
前几天,公众号后台有朋友在问Core的中间件,所以专门抽时间整理了这样一篇文章.   一.前言 中间件(Middleware)最初是一个机械上的概念,说的是两个不同的运动结构中间的连接件.后来这个概念延伸到软件行业,大家把应用操作系统和电脑硬件之间过渡的软件或系统称之为中间件,比方驱动程序,就是一个典型的中间件.再后来,这个概念就泛开了,任何用来连接两个不同系统的东西,都被叫做中间件. 所以,中间件只是一个名词,不用太在意,实际代码跟他这个词,也没太大关系.   中间件技术,早在.Net fra…
前文写了关于C#中的异步编程.后台有无数人在讨论,很多人把异步和多线程混了. 文章在这儿:一文说通C#中的异步编程 所以,本文从体系的角度,再写一下这个异步编程.   一.C#中的异步编程演变 1. 异步编程模型 这是C#中早期的异步模型,通过IAsyncResult接口来实现. 实现的代码大体是这个样子: class MyClass{    IAsyncResult BeginAction(para ..., AsyncCallback callback, object state);    …
用C#代替Javascript来做Web应用,是有多爽?   今天聊聊 Blazor. Blazor 是一个 Web UI 框架.这个框架允许开发者使用 C# 来创建可运行于浏览器的具有完全交互 UI 的 Web 应用. 可以理解为,这是一个 C# 语言的 Vue / Angular / React,可以和 HTML.CSS 一起实现可重用的 Web UI,可以和服务器共享代码和库. Blazor 拥有现代 Web 框架具备的所有功能,包括: 用于构建 composable UI 的组件模型 路…
Python并不仅仅是一个做Machine Learning的语言.   说到Python,一般都会感觉它关联着ML,如果不是做ML开发,就会觉得离自己很远.而实际上,作为一门语言,Python在应用中跟别的语言没什么区别,甚至在某些时间,它的方便会让人感觉很舒服. 试想一下,有个小需求,需要临时改一些数据库的数据.怎么搞?直接写数据库脚本?麻烦.开个IDE写段代码?更麻烦.这时候,有Python就很爽了 --- 随便开个Notepad或VIM,写段代码,就搞定了. 很方便,有没有? 所以,不管…
今天来写写C#中的异步迭代器 - 机制.概念和一些好用的特性   迭代器的概念 迭代器的概念在C#中出现的比较早,很多人可能已经比较熟悉了. 通常迭代器会用在一些特定的场景中. 举个例子:有一个foreach循环: foreach (var item in Sources){    Console.WriteLine(item);} 这个循环实现了一个简单的功能:把Sources中的每一项在控制台中打印出来. 有时候,Sources可能会是一组完全缓存的数据,例如:List<string>:…
天天写,不一定就明白. 又及,前两天看了一个关于同步方法中调用异步方法的文章,里面有些概念不太正确,所以整理了这个文章.   一.同步和异步. 先说同步. 同步概念大家都很熟悉.在异步概念出来之前,我们的代码都是按同步的方式写的.简单来说,就是程序严格按照代码的逻辑次序,一行一行执行. 看一段代码: public static void Main(string[] args){    Console.WriteLine("Syc proccess - start");     Cons…
JWT 全称是 JSON Web Token,是目前非常流行的跨域认证解决方案,在单点登录场景中经常使用到. 有些人觉得它非常好用,用了它之后就不用在服务端借助 redis 实现认证过程了,但是,还有一部分人认为它生来就有缺陷,根本不能用. 这是为什么呢? 传统的认证方式 从一个登录场景说起 你平时用过那么多网站和 APP,其中有很多都是需要登录的吧,那咱们就选一个场景出来说说. 以一个电商系统为例,如果你想要下单,首先需要注册一个账号,拥有了账号之后,需要输入用户名(比如手机号或邮箱).密码完…
前言 每个人都有自己习惯的项目结构,有人的喜欢在项目里面建解决方案文件夹:有的人喜欢传统的三层命名:有的人喜欢单一,简单的项目一个csproj就搞定.. 反正就是萝卜青菜,各有所爱. 可能不同的公司对这些会有特定的要求,也可能会随开发自己的想法去实践. 那么,问题就来了.如果有一个新项目,你会怎么去创建? 可能比较多的方式会是下面三种: 简单粗暴型,打开VS就是右键添加,然后引入一堆包,每个项目添加引用. 脚本型,基于dotnet cli,创建解决方案,创建项目,添加包,添加项目引用. 高大上型…