





















先看2张图
最新的.NET 5的示意图

之前的(dotnet core3.x时代)的示意图

总结如下:
dotnet 组织包含了.NET Core的核心代码, 包括coreclr和corefx等.
Kestrel是asp.net core引入的跨平台的网络服务器,是默认配置。可以没有iis, apache和nginx就可以单独运行。
Kestrel基于libuv实现;(node.js 也是基于libuv)
Startup class是dot net core应用的入口。所有的dot net core应用必须有这个class。这个类用来配置应用。这个类的调用是在program main函数里面进行配置的。类的名字可以自己定义。
在这个方法里我们可以添加一些service进入依赖注入容器。
这个方法来定义整个应用如何响应HTTP请求。它有几个比较重要的参数,application builder,Hosting environment, logo factory, 在这里我们可以配置一些中间件用来处理路径,验证和session等等。
Meta packages是指包含所有ASP dot net code依赖的一个包。叫做Microsoft.AspNetCore.All
中间件在这里是指注入到应用中处理请求和响应的组件。asp.net core 的中间件模型也是洋葱模型(和node.js d Koa 一样)
这两个方法都在start up class的configure方法里面调用。都是用来向应用请求管道里面添加中间件的。Use方法可以调用下一个中间件的添加,而run不会。
可以针对不同的路径添加不同的中间件。
public void Configure(IApplicationBuilder app)
{
app.Map("/path1", Middleware1);
app.Map("/path2", Middleware2);
}
依赖注入的思想:
路径处理是用来为进入的请求寻找处理函数的机制。所有的路径在函数运行开始时进行注册。
主要有两种路径处理方式:
这两个方法都在start up class的configure方法里面调用。都是用来向应用请求管道里面添加中间件的。Use方法可以调用下一个中间件的添加,而run不会。
在dot net core中,我们不需要关心如何释放这些服务, 因为系统会帮我们释放掉。有三种服务的生命周期。
是dot net core中支持ASP网页表格的一种开发模型。@page 作为页面的起始标志。可以看做是asp.net core使用的模板引擎。
使用bindproperty属性。
单线程下的简单实现:
public MySingleton
{
private MySingleton(){} // 禁止被实例化
public readonly static MySingletonInstance = new MySingleton(); // 程序加载时就会初始化
}
线程安全的加锁双检查
public class MySingleton
{
private static MySingleton _instance = null;
private static readonly object SynObject = new object();
MySingleton() { }
public static MySingleton Instance
{
get
{
if (null == _instance)
{
lock (SynObject)
{
if (null == _instance)
{
_instance = new MySingleton();
}
}
}
return _instance;
}
}
}
相同点:都不能被直接实例化,都可以通过继承实现其抽象方法。
不同点:
String类是sealed类故不可以继承。
String 在进行运算时(如赋值、拼接等)会产生一个新的实例,而 StringBuilder 则不会。所以在大量字符串拼接或频繁对某一字符串进行操作时最好使用 StringBuilder,不要使用 String。
但是简单的字符拼接,String还是首选。(100?次以内用String,以上用StringBuilder)
String、Int32、Boolean等都属于.Net中定义的类,而string、int、bool相当于C#中对这些类定义的别名。CTS。
委托可以把一个方法作为参数代入另一个方法,可以理解为指向一个函数的指针。
换个说法来解释,委托就是函数指针,事件就是保存多个函数指针的数组。
事件和委托的区别如下:
装箱:从值类型接口转换到引用类型。
拆箱:从引用类型转换到值类型。
--------END--------
参考:
https://www.webtrainingroom.com/interview/asp-net-core-interview-questions-answers
https://www.talkingdotnet.com/asp-net-core-interview-questions/
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。