38. What’s the Host?
ASP.NET Core apps configure and launch a Host.
The Host is responsible for app startup and lifetime
management.
The Host must config a Web Server / Middleware.
39. Main⽅方法:程式進入點
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
48. Services繼承並實作interface介⾯面
public class FubonBankService : IBankService
{
public string BankId { get; private set; }
public string BankName { get; private set; }
public FubonBankService()
{
BankId = "012";
BankName = "台北富邦銀行";
}
…
}
public class EsunBankService : IBankService
{
public string BankId { get; private set; }
public string BankName { get; private set; }
public EsunBankService()
{
BankId = "808";
BankName = "玉山銀行";
}
...
}
富邦銀⾏行行繼承介⾯面 ⽟玉⼭山銀⾏行行繼承介⾯面
49. 在IoC container註冊服務
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<IBankService, FubonBankService>();
}
...
}
介⾯面 實作Lifetime模式
50. 在Controller使⽤用DI注入服務
public class BankServicesController : Controller
{
private readonly IBankService _bankService;
public BankServicesController(IBankService bankService)
{
_bankService = bankService;
}
public IActionResult InjectAction([FromServices] IBankService myBankService)
{
var bankModel = myBankService;
return View(bankModel);
}
}
在建構式注入服務
在Action注入服務
Service看不⾒見見特定實作名稱
套⽤用Attribute
51. 註冊服務的三種Lifetime指令
AddScoped⽅方法—Scoped lifetime service
are created once per request
AddTransient⽅方法 — Transient lifetime service
are created each time they're requested
AddSingleton⽅方法 — Singleton lifetime service
are only created at the first request time
58. .NET Core 2 is Fast
“Using the same-size server, we were able to go from 1,000 requests per
second per node with Node.js to 20,000 requests per second with .NET Core.“
— Raygun
https://www.microsoft.com/net/customers
59. .NET Core 2.1 is Faster
Data source from tests on same hardware as TechEmpower