当前位置: 首页 > news >正文

ASP.NET Core 3.0项目开始“瘦身”

新的ASP.NET Core项目使用名为Microsoft.AspNetCore.App的综合包。该包也可以称为“ASP.NET Core 共享框架”,其背后的基本思想是,包括一个典型的应用程序所需要的所有东西。但是,如果看看该包的依赖项,对“需要”的定义看起来相当宽松。

目前,Microsoft.AspNetCore.App拥有150个明确列出的依赖项,7个月前则是144项。其中有9个不同的认证提供程序包。

  • Cookies

  • Facebook

  • Google

  • JwtBearer

  • Microsoft Account

  • OAuth

  • OpenIdConnect

  • Twitter

  • WsFederation

还可以发现8个用于支持实体框架核心(Entity Framework Core)的包,其拥有SQL Server、SQL Server缓存库、用于诊断的EF核心包、用于标识的EF核心包等等。

从这150个依赖项列表中,31个将从ASP.NET Core 3.0的共享框架中删去,因为它们违反了新的纳入标准:

(1) 依赖我们无法提供服务的第三方代码

(2) 组件本身在3.0中被弃用

(3) 它们实施的协议或身份验证机制极易发生变化(比如,脸书/谷歌/推特转天就可以决定改变授权的工作方式)

ASP.NET Core项目的高级软件工程师Nate McMaster接着说:

我们在2.0中添加了太多东西,我们正在重新调整以适应我们认为在可预见的道路上可维护的一套东西。大多数从Microsoft.AspNetCore.App中删除的组件仍将作为NuGet包提供给大家。如果我们将来发现90%的客户都引用同样的包,那么该包将成为共享框架一个很好的候选项。但是,正如在指导文档中所提到的,API的使用量是一个重要指标,但不是我们唯一考虑的因素。

对目前的项目有什么影响?

如果你决定升级到ASP.NET Core 3.0,再使用任何不在共享框架中的包的话应用程序将会崩溃。但是,要修复也很简单,只需要把被排除的包手动添加到你的工程中即可,就像添加任何其他Nuget样式的依赖项一样。

我实际需要什么包?

这个问题的答案取决于你的应用程序实际执行的操作。但是,如果我们只考虑一个简单的REST服务器,那么只需要直接引用这三个包:

  • Microsoft.AspNetCore

  • Microsoft.AspNetCore.Mvc

  • Microsoft.AspNetCore.HttpsPolicy

其中的第一个是Microsoft.AspNetCore,它有18个直接依赖项。Mvc添加了自己的13个依赖项,HttpsPolicy添加了另外5个。这个数字不包括重叠或间接的依赖项,但是,仍然反映了一组更小更易管理的依赖项。

阅读英文原文:ASP.NET Core 3.0 Projects Go on a Diet

相关文章:

  • JavaScript 判断 iPhone X Series 机型
  • 学习HTTP相关知识笔记
  • 报错 could not find php_pdo或者driver
  • 智慧出行加持广西春运 科技让回家变得简单从容
  • 计算性能提升100倍,Uber推出机器学习可视化调试工具
  • 用垃圾回收机制解释JavaScript中的闭包
  • 阿里云Kubernetes容器服务上体验Knative
  • 用编码器-解码器-重构器框架实现英语-日语的神经机器翻译
  • netty-客户端.channel()方法 源码分析.md
  • Java 多线程编程之:notify 和 wait 用法
  • django之配置静态文件
  • 区块链多币种测试网络钱包(开源)
  • 滴滴出行基于RocketMQ构建企业级消息队列服务的实践
  • TypeScript实现数据结构(一)栈,队列,链表
  • 阿里云移动端播放器高级功能介绍
  • [Vue CLI 3] 配置解析之 css.extract
  • Android单元测试 - 几个重要问题
  • Brief introduction of how to 'Call, Apply and Bind'
  • codis proxy处理流程
  • DataBase in Android
  • docker容器内的网络抓包
  • JS+CSS实现数字滚动
  • Laravel 中的一个后期静态绑定
  • Mysql5.6主从复制
  • mysql常用命令汇总
  • PAT A1017 优先队列
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • Yeoman_Bower_Grunt
  • 从tcpdump抓包看TCP/IP协议
  • 动态规划入门(以爬楼梯为例)
  • 给初学者:JavaScript 中数组操作注意点
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 想写好前端,先练好内功
  • puppet连载22:define用法
  • 阿里云ACE认证学习知识点梳理
  • ​Linux·i2c驱动架构​
  • ​ssh免密码登录设置及问题总结
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (31)对象的克隆
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (八十八)VFL语言初步 - 实现布局
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (一一四)第九章编程练习
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • (转)用.Net的File控件上传文件的解决方案
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .Net7 环境安装配置
  • .Net的C#语言取月份数值对应的MonthName值
  • .NET建议使用的大小写命名原则
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递