一个ASP.NET Core应用的核心就是由一个服务器和一组有序中间件组成的请求处理管道,服务器只负责监听、接收和分发请求,以及最终完成对请求的响应,所以一个ASP.NET Core应用针对请求的处理能力和处理方式由注册的中间件来决定。一个ASP.NET Core在启动过程中的核心工作就是注册中间件,本节主要介绍应用启动过程中以中间件注册为核心的初始化工作。
https://github.com/icsharpcode/ILSpy#ilspy-------
最近一两个星期,加班,然后回去后弄自己的博客,把自己的电脑从 Windows 10 改到 Ubuntu 18.10 又弄回 Windows 10,原本计划的学习 Vue 中生命周期的相关知识目前也没有任何的进展,嗯,罪过罪过。看了眼时间,11月也快要结束了,准备补上一篇如何将我们的 .NET Core 2.0 版本的程序升级到 .NET Core 2.1 版本,好歹也算多学了一点。
Mono,作为.NET运行库的开源实现,正在将微软的技术带到未曾预料到的地方,包括iPhone,Android和Wii。 根据Novell公司的首席Mono开发者Miguel de Icaza称,Apple的App Store中有多个应用程序是基于Mono。 这可能会让那些熟悉苹果应用程序限制政策的人感到意外,因为苹果公司严格禁止开发者使用解释语言和第三方运行环境——在很大程度上就将.NET和Java之类技术排除在外。 静态编译(Static compilation)是一道特别的沙司,正是它使
在项目开发中,日志系统是系统的一个重要组成模块,通过在程序中记录运行日志、错误日志,可以让我们对于系统的运行情况做到很好的掌控。同时,收集日志不仅仅可以用于诊断排查错误,由于日志同样也是大量的数据,通过对这些数据进行集中分析,可以产生极大的价值。 在微服务的系统架构中,由于一个系统会被拆成很多个功能模块,每个模块负责不同的功能,对于日志系统的要求也会更高,比较常见的有 EFLK(ElasticSearch + Filebeat + LogStash + Kibana) 方案,而对于我们这种单体应用来说,由于程序的代码比较集中,所以我们主要采用手写日志帮助类或是使用第三方组件的形式进行日志信息的记录。
想让库支持多平台吗? 想要了解使 .NET Framework 应用程序在 .NET Core 上运行需要花费多大的精力? .NET 可移植性分析器是一种工具,可分析程序集并为应用程序或库提供有关缺失的 .NET API 的详细报告,以便在指定的目标 .NET 平台上实现可移植性。 可移植性分析器作为 Visual Studio Extension 提供,用于分析每个项目的一个程序集;也可以作为 ApiPort 控制台应用提供,用于按指定文件或目录分析程序集。
在ASP.NET Core中,有两种常见的依赖注入方式:原生依赖注入和三方依赖注入。
在 asp.net core 中,存在着中间件这一概念,在中间件中,我们可以比过滤器更早的介入到 http 请求管道,从而实现对每一次的 http 请求、响应做切面处理,从而实现一些特殊的功能
本词汇表的主要目标是阐明 .NET 文档中经常出现的选定术语和首字母缩略词的含义。 奥特 提前编译器。 与JIT类似,此编译器还将IL转换为机器代码。与 JIT 编译相反,AOT 编译发生在应用程序执行之前,并且通常在不同的机器上执行。因为 AOT 工具链不在运行时编译,所以它们不必最小化编译时间。这意味着他们可以花更多时间进行优化。由于 AOT 的上下文是整个应用程序,因此 AOT 编译器还进行跨模块链接和全程序分析,这意味着遵循所有引用并生成单个可执行文件。 请参阅CoreRT和.NET Native。 应用模型 一个工作量特异性API。这里有些例子: ASP.NET ASP.NET Web API 实体框架 (EF) Windows 演示基础 (WPF) Windows 通信基础 (WCF) Windows 工作流基础 (WF) Windows 窗体 (WinForms) ASP.NET .NET Framework 附带的原始 ASP.NET 实现,也称为 ASP.NET 4.x。 有时 ASP.NET 是一个总称,既指原始 ASP.NET 又指 ASP.NET Core。该术语在任何给定实例中的含义由上下文决定。当您想明确表示您没有使用 ASP.NET 来表示这两种实现时,请参阅 ASP.NET 4.x。 请参阅ASP.NET 文档。 ASP.NET 核心 ASP.NET 的跨平台、高性能、开源实现。 请参阅ASP.NET Core 文档。 部件 一个.dll或.exe文件,其中可以包含可由应用程序或其他程序集调用的 API 集合。 程序集可能包括接口、类、结构、枚举和委托等类型。项目的bin文件夹中的程序集有时称为二进制文件。另见库。 BCL 基类库。 一组包含 System.*(以及在有限范围内的 Microsoft.*)命名空间的库。BCL 是一种通用的低级框架,高级应用程序框架(例如 ASP.NET Core)在其上构建。 .NET 5(和 .NET Core)及更高版本的 BCL 源代码包含在.NET 运行时存储库中。大多数 BCL API 在 .NET Framework 中也可用,因此您可以将此源代码视为 .NET Framework BCL 源代码的分支。 以下术语通常指的是 BCL 所指的同一 API 集合: 核心 .NET 库 框架库 运行时库 共享框架 CLR 公共语言运行时。 确切的含义取决于上下文。公共语言运行时通常是指.NET Framework的运行时或.NET 5(和 .NET Core)及更高版本的运行时。 CLR 处理内存分配和管理。CLR 也是一个虚拟机,它不仅可以执行应用程序,还可以使用JIT编译器即时生成和编译代码。 .NET Framework 的 CLR 实现仅适用于 Windows。 .NET 5 和更高版本的 CLR 实现(也称为 Core CLR)是从与 .NET Framework CLR 相同的代码库构建的。最初,Core CLR 是 Silverlight 的运行时,旨在运行在多个平台上,特别是 Windows 和 OS X。它仍然是一个跨平台的运行时,现在包括对许多 Linux 发行版的支持。 另请参见运行时。 核心CLR .NET 5(和 .NET Core)及更高版本的公共语言运行时。 请参阅CLR。 核心RT 与CLR 相比,CoreRT 不是虚拟机,这意味着它不包括即时生成和运行代码的设施,因为它不包括JIT。但是,它确实包括GC以及运行时类型识别 (RTTI) 和反射的能力。然而,它的类型系统被设计成不需要用于反射的元数据。不需要元数据可以让AOT工具链链接掉多余的元数据和(更重要的是)识别应用程序不使用的代码。CoreRT 正在开发中。 请参阅CoreRT和.NET 运行时实验室介绍。 跨平台 能够开发和执行可在多种不同操作系统(例如 Linux、Windows 和 iOS)上使用的应用程序,而无需专门为每个操作系统重写。这实现了不同平台上的应用程序之间的代码重用和一致性。 见平台。 生态系统 用于为给定技术构建和运行应用程序的所有运行时软件、开发工具和社区资源。 术语“.NET 生态系统”与“.NET 堆栈”等类似术语的不同之处在于它包含第三方应用程序和库。这是一个句子中的示例: “ .NET Standard背后的动机是在 .NET 生态系统中建立更大的统一性。” 框架 一般而言,一个全面的 API 集合,可促进基于特定技术的应用程序的开发和部署。从一般意义上讲,ASP.NET Core 和 Windows 窗体是应用程序框架的示例。框架和库这两个词经常作为同义词使用。 “框架”一词在以下术语中具有不同的含义: 框架库 .NET 框架 共享框架 目标框架 TFM(目标框架名
大多数开发人员更喜欢一次性编写好业务逻辑代码,以后再重用这些代码。与构建不同的应用以面向多个平台相比,这种方法更加容易。如果您创建与 .NET Core 兼容的.NET 标准库,那么现在比以往任何时候都更接近于这一现实。 但是,现有的 .NET Framework 库怎么办呢?要使这些跨平台兼容并将它们转换成 .NET 标准库,需要做多少工作呢? 使用工具 .NET Portability Analyzer进行分析。利用几个简单的技术并进行一些项目文件修改,这有助于简化这一流程。 .NET Portabil
Abp是一个基于模块化开发的应用程序框架,提供了模块化基础的架构和模块化加载的引擎。
正如上篇文章所述那样,OWIN在Web Server与Web Application之间定义了一套规范(Specs),意在解耦Web Server与Web Application, 从而推进跨平台的实现。若要真正使用OWIN规范,那么必须要对他们进行实现。目前有两个产品实现了OWIN规范——由微软主导的 Katana和第三方的Nowin。这篇文章,我主要关注还是Katana,由微软团队主导,开源到CodePlex上。 可以在Visual Studio中输入命令:git clone https://git01
框架依赖的部署:顾名思义,依赖框架的部署 (FDD) 依赖目标系统上存在共享系统级版本的 .NET Core。 由于已存在 .NET Core,因此应用在 .NET Core 安装程序间也是可移植的。 应用仅包含其自己的代码和任何位于 .NET Core 库外的第三方依赖项。 FDD 包含可通过在命令行中使用 dotnet 实用程序启动的 .dll 文件。 例如,dotnet app.dll 就可以运行一个名为 app 的应用程序。 对于 FDD,仅部署应用程序和第三方依赖项。 不需要部署 .NET Core,因为应用将使用目标系统上存在的 .NET Core 版本。 这是定目标到 .NET Core 的 .NET Core 和 ASP.NET Core 应用程序的默认部署模型。
今天,我们宣布 .NET Core 3.0 Preview 6。它的更新包括编译程序集以改进启动、使用链接器和 EventPipe 改进优化应用程序的大小。我们还在 ARM64 上发布了针对 Alpine 的新 Docker 镜像。
Razor Page Library 是ASP.NET Core 2.1引入的新类库项目,属于新特性之一,用于创建通用页面公用类库。也就意味着可以将多个Web项目中通用的Web页面提取出来,封装成RPL,以进行代码重用。 官方文档Create reusable UI using the Razor Class Library project in ASP.NET Core中,仅简单介绍了如何创建RPL,但要想开发出一个独立通用的RPL远远没有那么简单,容我娓娓道来。
ASP.NET Dropdownlist 错误 “Cannot have multiple items selected in a DropDownList.”
这是一篇发布在dotnet 团队博客上由微软Graph首席软件工程师 Joao Paiva 写的文章,原文地址: https://devblogs.microsoft.com/dotnet/microsoft-graph-dotnet-6-journey/。
作为后端开发的我来说,前端表示真心玩不转,你如果让我微调一个位置的样式的话还行,但是让我写一个很漂亮的后台的话,真心做不到,所以我一般会选择套用一些开源UI模板来进行系统UI的设计。那如何套用呢?今天就以我们系列实战教程中的CMS系统为例来应用第三方的后台模板LayuiCMS2.0为例来进行实战演练吧!
作为后端开发来说,前端表示玩不转,我们一般会选择套用一些开源的Bootstrap 模板主题来进行前端设计。那如何套用呢?今天就简单创建一个ASP.NET Core Web MVC 模板项目为例,来应用第三方Bootstrap Template——Admin LTE。
C#开发者在开发WinForm程序、Asp.Net Web(MVC)程序等,不可避免的在项目中引用许多第三方的DLL程序集,
前文介绍了.NET Core 在整个.NET 平台所处的地位,以及与.NET Framework的关系(原文链接),本文将详细介绍.NET Core 框架的构成和各模块主要功能,以及如何实现跨平台。
2014年11月12日的Connect ();开发者活动上宣布将.NET堆栈基于MIT协议开源,并且提供开源保证,托管在Github上。当时的版本与最终目标相距甚远,然而有一点可以肯定的是,这是一个与.NET Framework 4.x完全不同的框架。 这在社区引发了诸多疑惑和争论。进行剧烈变更的原因显而易见:.NET Framework 4.x已经无法充分发挥最新的技术的威力,而且无法完全满足开发跨平台,云化的大规模应用需求,而一个全新的框架可以让.NET开发者以更简单、更直接的方式来开发Web服务与应用
上图描述了 .NET Core的系统构成,最上层是应用层,是开发基于UI应用的框架集,包括了ASP.NET Core(用于创建web app),和 UWP(用于创建Windows10 app)。
.NET Core具有一个承载(Hosting)系统,承载需要在后台长时间运行的服务,一个ASP.NET Core应用仅仅是该系统承载的一种服务而已。承载系统总是采用依赖注入的方式来消费它在服务承载过程所需的服务。对于承载系统来说,原始的服务注册总是体现为一个IServiceCollection集合,最终的依赖注入容器则体现为一个IServiceProvider对象,如果要将第三方依赖注入框架整合进来,就需要利用它们解决从IServiceCollection集合到IServiceProvider对象之间的适配问题。
本文有配套视频:https://www.bilibili.com/video/av58096866/?p=5 前言 1、重要:如果你实现了解耦,也就是 api 层只引用了 IService 和
很多.net项目在开发的时候,.net core还没有出现或者还么有成熟,如今.netcore3.1已经出现,其技术风险已经比较低,今天对项目如何迁移到.net core做一个简单的梳理,瑾做参考。
我们都知道.NET Core是一个可以用来构建现代、可伸缩和高性能的跨平台软件应用程序的通用开发框架。可用于为Windows、Linux和MacOS构建软件应用程序。与其他软件框架不同,.NET Core是最通用的框架,可用于构建各种软件,包括Web应用程序、移动应用程序、桌面应用程序、云服务、微服务、API、游戏和物联网应用程序。与其他框架不同,.NET Core并不局限于单一的编程语言,它支持C#、VB.NET、F#、XAML和TypeScript。这些编程语言都是开源的,由独立的社区管理。
本章我们一起来对比着ASP.NET Framework版本看一下ASP.NET Core 2.0的项目结构.(此后的文章也尽量这样对比着, 方便学习理解.) 关注差异, 也为项目迁移做准备. 新建项目
使用“添加可部署的依赖项”对话框,您可以将程序集(DLL 文件)添加到网站项目或 Web 应用程序项目。 在部署网站或应用程序时,将文件包含在部署项目中。 如果项目所依赖的应用程序或技术尚未安装在将承载 Web 项目的服务器上,这是非常有用的。 例如,您可以使用此功能将 ASP.NET MVC 3 Web 应用程序部署到没有安装 ASP.NET MVC 3 的服务器。 我们来看下NopCommerce项目中如何使用的这一功能,NopCommerce 最新版本是2.30,基于ASP.NET MVC 3.0构建
为了支持"首届dnc开源峰会"(dncNew.com)顺利举办,本人《.net core系列课程》进行一波优惠,每个课程优惠在立即购买上方,领取现金券即可。课程地址为腾讯课堂:https://gsw.
ScriptManager 控件管理用于 Microsoft ASP.NET AJAX 页面的客户端脚本。默认情况下,ScriptManager 控件将 Microsoft AJAX 库的脚本与页面注册到一起,这使脚本可以使用类型系统扩展并支持局部页面输出和 Web 服务调用。 在页面中,必须使用 ScriptManager 控件来使下列 Microsoft ASP.NET AJAX 的特性可用:
一.前言 最近一直在研究和实践ASP.NET Core、Docker、持续集成。在ASP.NET Core 和 Dcoker结合下遇到了一些坑,在此记录和分享,希望对大家有一些帮助。 二.中间镜像 我前面写过一个 《ASP.NET Core & Docker 零基础持续集成 》的教程。里面我们通过持续集成工具Jenkins构建Docker镜像并运行容器,采用的是Docker Compose来进行编排构建运行的(Visual Studio 2017添加Docker支持是采用的Docker Compose)。细
本节课,我们通过创建一个自定义 Dockerfile 文件,将示例YoYoMooc.Exampleapp应用程序制作为 Docker 镜像。
对于 FDD,仅部署应用程序和第三方依赖项。 应用将使用目标系统上存在的 .NET Core 版本。 这是定目标到 .NET Core 的 .NET Core 和 ASP.NET Core 应用程序的默认部署模型。
我们都知道,在 ASP.NET CORE 中通过依赖注入的方式来使用服务十分的简单,而在 Console 中,其实也只是稍微绕了个小弯子而已。不管是内置 DI 组件或者第三方的 DI 组件(如Autofac),通过 IServiceCollection 接口我们都可以做到和应用程序的无缝连接。本文将在别给出内置组件和第三方组件(主要是Autofac)在 Console 应用程序中的依赖注入实现方式。 1. 在 Console 中使用内置 DI 组件 网上已经有几篇相关的博客讲解 Console 中的依赖注入
.NET开源时间还不长,因为一直在做YOYOFx的关系,所似我常常有更深入的了解.NET Core和ASP.NET Core内容的需求,并且.NET Core平台与之前版本的变化太大,这也导致我经常要去查看源代码中,来了解ASP.NET Core和.NET Core代码实现。
Stimulsoft Ultimate是用于创建报表和仪表板的通用工具集。该产品包括用于WinForms、ASP.NET、.NET Core、JavaScript、WPF、PHP、Java和其他环境的完整工具集。
显著提升了在运行包含多个测试项目的大型解决方案期间的性能。 在我们的实验室中,超过 10,000 个 MSTest 的解决方案执行单个测试的速度提高了 82%!
说接上文,上回说到了《八 || API项目整体搭建 6.3 异步泛型+依赖注入初探》,后来的标题中,我把仓储两个字给去掉了,因为好像大家对这个模式很有不同的看法,嗯~可能还是我学艺不精,没有说到其中的好处,现在在学DDD领域驱动设计相关资料,有了好的灵感再给大家分享吧。
关于Identity和IdentityServer初学的时候可能会有一些疑惑(虽然我也不是很精深吧),但是,这里说一下自己关于这两者的一些理解,如有错误,欢迎指正
趁着假期的时间所以想重新学习下微软的官方文档来巩固下基础知识。我们都知道微软目前已经发布了.NET Core3.0的第三个预览版,同时我家里的电脑也安装了vs2019。So,就用vs2019+.NET Core3.0来跟着做一下Contoso University这个WEB应用,但是在基于3.0进行操作的时候遇到了一些问题,所以我就查看了微软的《从 ASP.NET Core 迁移 2.2 到 3.0 预览版 2》这篇文档,就着今天遇到的问题,所以我整理下,希望对大伙有所帮助,当然大伙也可以直接阅读微软的官方文档进行查看。但是我在阅读官方说明的时候,总感觉翻译的不是很准确,读起来很拗口,所以这里我是自己的理解对官方文档的一个补充。
英文原文地址:http://weblogs.asp.net/scottgu/archive/2007/12/09/asp-net-mvc-framework-part-4-handling-form-edit-and-post-scenarios.aspx 翻译原文地址:http://blog.joycode.com/scottgu/archive/2007/12/10/112465.aspx 过去的几个星期内,我一直在写着讨论我们正在开发的新ASP.NET MVC框架的系列贴子。ASP.NET MVC框
在编程的世界里看见数学的身影,会让我充满好奇和兴奋。这不,在一年一度介绍.NET新版本的官方开发博客《Performance Improvements in .NET 8》中,我看到了这样一个有趣的算法:可扩展近似计数(Scalable Approximate Counting)。
在之前的文章中,我为大家介绍了OWIN和Katana,有了对它们的基本了解后,才能更好的去学习ASP.NET Identity,因为它已经对OWIN 有了良好的集成。 在这篇文章中,我主要关注ASP.NET Identity的建立和使用,包括基础类的搭建和用户管理功能的实现—— 点此进行预览 点此下载示例代码 在后续文章中,我将探索它更高级的用法,比如身份验证并联合ASP.NET MVC 进行授权、使用第三方登录、声明式认证等。 ASP.NET Identity 前世今生 ASP.NET Me
上个月的微软Build大会上宣布了.NET 4.5.1的推出,Heydarian的这个演讲题为“.NET开发中的新内容”,涵盖了.NET Framework中一些重要的新特性。 Heydarian的演讲主要围绕着三个方面展开:开发者生产力、应用程序的性能及持续创新。首先是开发者生产力,他在提到了32位机器上的该功能在2005年就已发布,随后高兴地宣布64位机器上的相同功能将成为.NET 4.5.1的一部分。这一功能和32位版本是完全相同的。随后,Heydarian宣布了检测方法返回值的新功能,它可以在Vis
前一阵子写了不少关于代码生成相关的文章,介绍了一些如何通过VS自动生成代码的解决方案,比如CodeDOM、T4以及ASP.NET的BuildProvider等。现在将它们作一个汇总,给广大读者作一个参考。 [第1篇] 通过CodeDOM定义生成代码的结构 我不知道大家对CodeDOM的代码生成机制是否熟悉,但是有一点可以确定:如果你使用过Visual Studio,你就应该体验过它带给我们在编程上的便利。随便列举三种典型的代码生成的场景:在创建强类型DataSet的时候,VS会自动根据Schema生成相应的
一、需求背景 人生苦短,我用.NET Core!作为一枚后端.NET开发人员,项目实践常遇到定时Job任务的工作,在Windows平台最容易想到的的思路Windows Service服务应用程序,而在Linux系统中一般会采用Crontab程序,PM2、Supervior等进程管理工具来解决宿主托管问题。今天给阿笨大家分享一种Docker容器化快速部署的方式来实现.NET Core后台定时任务托管在Linux操作系统中。 目前在.NET Core开发后台定时任务有两种实现方式: 1、采用AspNetC
最近,我获得了一份 DevOps 工作,工作内容主要涉及用 Go 完全从头开始编写一个新的后端系统。此前,我从未在生产环境使用过 Go,从个人项目中有过了解。
领取专属 10元无门槛券
手把手带您无忧上云