ASP.NET Core 3.0预览版体验
目前.NET Core 3.0的版本为.NET Core 3.0 Preview 3,对应ASP.NET Core 3.0 Preview 3。
ASP.NET Core 3.0 之后将不再支持.NET Framework,只运行在.NET Core 上面。
ASP.NET Core 3.0 现在已经出到了第三个预览版,增加和改进了很多功能。
环境准备:
下载最新.NET Core 3.0 Preview 3 SDK, https://dotnet.microsoft.com/download/dotnet-core/3.0。
ASP.NET Core 3.0 需要VS 2019开发,或者使用VS Code,Visual Studio for Mac version 8.0 or later。
Visual Studio 2019 将会在4月2日推出正式版。
下面大致列举一些功能:
Json.NET 不在内置在框架内
如果要将Json.NET支持添加回ASP.NET Core 3.0项目:
- 首先将包引用添加到Microsoft.AspNetCore.Mvc.NewtonsoftJson
- 更新
ConfigureServices方法以添加AddNewtonsoftJson()。
services.AddMvc()
.AddNewtonsoftJson();
HostBuilder 替换掉WebHostBuilder
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
} public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
UseRouting 中间件的增加
示例代码:
app.UseRouting(routes =>
{
routes.MapGet("/hello", context =>
{
return context.Response.WriteAsync("Hi there! linezero");
});
});
同时还增加 MapHealthChecks及RequireHost 等功能,看示例:
app.UseRouting(routes =>
{
routes.MapGet("/", context => context.Response.WriteAsync("Hi linezero!"))
.RequireHost("linezero.com");
routes.MapGet(context => context.Response.WriteAsync("Hi zero!"))
.RequireHost("zero.com"); routes.MapHealthChecks("/healthz").RequireHost("*:8080");
});
Razor Components
razor 组件支持,下面实际看看这个功能点。
dotnet new razorcomponents -o myweb cd myweb dotnet run
运行起来如下图:

对应组件代码Counter.razor :
@page "/counter" <h1>Counter</h1>
<p>LineZero</p> <p>Current count: @currentCount</p> <button class="btn btn-primary" onclick="@IncrementCount">Click me</button> @functions {
int currentCount = ; void IncrementCount()
{
currentCount++;
}
}
你可以直接将组件添加到主页或其他页面,例如放到主页Index.razor:
@page "/" <h1>Hello, world!</h1> Welcome to your new app.LineZero <Counter />

还可以使用 [Parameter] int IncrementSize { get; set; } = 1; 来设置参数:
@functions {
int currentCount = ;
[Parameter] int IncrementSize { get; set; } = ;
void IncrementCount()
{
currentCount+=IncrementSize;
}
}
这样可以做到每个页面设置不同的大小,增加不同数量。
如:
@page "/" <h1>Hello, world!</h1> Welcome to your new app.LineZero <Counter IncrementSize=""/>
下图描述了Razor的一些原理。

另外,Blazor是一个实验性单页面应用程序框架,它使用基于WebAssembly的.NET运行时直接在浏览器中运行Razor Components。
在Blazor应用程序中,Razor组件的UI更新都直接应用于DOM。

运行时编译
从.NET Core 3.0中的ASP.NET Core共享框架中删除了对运行时编译的支持,现在可以通过向应用程序添加软件包来启用它。
要启用运行时编译:
添加对Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation的包引用
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="3.0.0-preview3-19153-02" />在
Startup.ConfigureServices加入方法AddRazorRuntimeCompilationservices.AddMvc().AddRazorRuntimeCompilation();
Worker Service模板
此模板旨在作为运行长时间运行的后台进程的起点,例如您可以作为Windows服务或Linux守护程序运行。
单页面应用程序模板的身份验证
由IdentityServer在后台提供支持
dotnet new angular -au Individual dotnet run
最终运行起来,可以进行登录注册,及对API 的保护。
更多可以查看官方文档:https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity-api-authorization?view=aspnetcore-3.0
gRPC服务模板
dotnet new grpc
会生成两个项目,一个在ASP.NET Core中托管的gRPC服务,以及一个用它来测试它的控制台应用程序。
这是gRPC for ASP.NET Core的第一次公开预览,并没有实现gRPC的所有功能。对应开源项目: https://github.com/grpc/grpc-dotnet
gRPC 简单介绍可以参照之前文章:http://www.cnblogs.com/linezero/p/grpc.html 及 https://www.cnblogs.com/linezero/p/grpcnetcore.html
ASP.NET Core 3.0预览版体验的更多相关文章
- 微软.NET CORE 3.0 预览版 7 发布:大幅减少 SDK 空间大小
据悉,这个预览版是 .Net Core 3 中重要的版本,可以视为原计划在 7 月发布的 RC 版本 (引自微软 .NET Core 首席 Program Manager Richard 先生原话), ...
- .NET Core 3.0预览版7中的ASP.NET Core和Blazor更新
.NET Core 3.0 Preview 7现已推出,它包含一系列ASP.NET Core和Blazor的新更新. 以下是此预览中的新功能列表: 最新的Visual Studio预览包括.NET C ...
- 安装.NET Core 3.0预览版后VS项目目标框架中不显示的解决方法
下载了微软在GitHub上的cSharpSamples项目后发现其中一些项目使用框架为.NET Core3.0,就下载了.NET Core3.0,但发现项目依然不可用,编译时提示如下 当前 .net ...
- Apache Spark 3.0 预览版正式发布,多项重大功能发布
2019年11月08日 数砖的 Xingbo Jiang 大佬给社区发了一封邮件,宣布 Apache Spark 3.0 预览版正式发布,这个版本主要是为了对即将发布的 Apache Spark 3. ...
- Dubbo 3.0 预览版解读,6到飞起~
, false).start(); ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new St ...
- .NET 5.0预览版6发布:支持Windows ARM64设备
2020年6月25日,微软dotnet团队在博客宣布了第六个 .NET 5.0 的预览版:https://devblogs.microsoft.com/dotnet/announcing-net-5- ...
- VS2015预览版体验
.NET开源了,JAVA颤抖吧... 据说VS2015可以开发android,ios,wp应用程序了,还可以开发能运行在mac,linux上的ASP.NET网站,如果真是这样就太爽啦,上微软官网下载了 ...
- WSL2(预览版)体验笔记
WSL2安装 WSL2在今年5月份Microsoft Build大会上发布了,但至今Windows10一直没收到更新推送,我想这么久过去就算没进入正式,至少也到了RC版了吧,于是开始折腾准备体验一把. ...
- TMS WEB Core v1.2预览版:新的Electron应用程序支持
2019年2月20日,星期三 几个月前,我们已经开始与Electron进行实验.在工作概念验证之后,我们的目标是为Delphi开发人员尽可能多地包装Electron API.但当然不仅仅是可以使用的E ...
随机推荐
- Sequence II HDU - 5919(主席树)
Mr. Frog has an integer sequence of length n, which can be denoted as a1,a2,⋯,ana1,a2,⋯,anThere are ...
- 彻底理解cookie,session,token
发展史 1.很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议, 就是请求加响应, 尤其是我不用 ...
- KNN算法的实现
K近邻(KNN)算法简介 KNN是通过测量不同特征值之间的距离进行分类.它的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别,其 ...
- Linux性能优化实战:到底应该怎样理解平均负载(02)
一.平均负载与CPU使用率并没有直接关系 1.平均负载 单位时间内,系统处于可运行状态和不可终端状态的平均进程数也就是平均活跃进程数,它和cpu使用率并没有直接关系, 可运行状态: 正在使用的cpu或 ...
- VMware 虚拟机运行卡慢的解决办法
虚拟机的运行速度有一部分原因决定于你的物理机的配置,如果你的物理机配置不高,建议不要运行虚拟机,那样反而会更卡! 切记!!!在操作之前,先给虚拟机拍摄一个快照,然后所有操作都在虚拟机关机的情况下执行! ...
- 五十一、进程间通信——System V IPC 之进程信号量
51.1 进程信号量 51.1.1 信号量 本质上就是共享资源的数目,用来控制对共享资源的访问 用于进程间的互斥和同步 每种共享资源对应一个信号量,为了便于大量共享资源的操作引入了信号量集,可对所有信 ...
- 【js课设】电子画板01
这学期web开发课的课设选了电子画板课题.(人家本来想做富文本编辑器的嘛然鹅老师在第二版里把这题删掉了。゚ヽ(゚´Д`)ノ゚。) 主要考虑的有[界面美观][画笔类型][画布分层]这三个点了. [界面美 ...
- react-router v4中 HashRouter 和 BrowserRouter的使用
遇到的问题 项目中控制路由跳转使用的是BrowserRouter,代码如下: ReactDOM.render(( <BrowserRouter> <div className=&qu ...
- opensuse 使用xx-net
提示安装 [launcher][WARNING] import pynotify fail, please install python-notify if possible. gae_proxy][ ...
- 通过IDEA搭建scala开发环境开发spark应用程序
一.idea社区版安装scala插件 因为idea默认不支持scala开发环境,所以当需要使用idea搭建scala开发环境时,首先需要安装scala插件,具体安装办法如下. 1.打开idea,点击c ...