最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

dotnetcore主機學(xué)習

2022-07-31 13:14 作者:限量版范兒  | 我要投稿

學(xué)習了解下netcore的"主機"

"主機"是一個程序環(huán)境,可以在其上運行一些功能.

例如,一臺計算機,在上面運行一個游戲軟件.可以叫計算機為"主機".

那為什么要做這樣一個"主機"呢?

游戲軟件的運行需要一些軟硬件資源還要設(shè)置和讀取環(huán)境配置,"主機"就能打包這些軟硬件資源,并且提供這些資源的信息.

這個就是計算機主機的概念,體現(xiàn)在軟件開發(fā)模式上.

練習示例

環(huán)境: vs2019 / net5

做一個定時顯示時間的程序,放在這個"主機"里運行.

1. 新建一個netcore的控制臺應(yīng)用程序,添加 Microsoft.Extensions.Hosting 的nuget包.

2.報時程序類(干活的程序)

? ? public class AlertTime

? ? {

? ? ? ? public readonly System.Timers.Timer time = new();

? ? ? ? public AlertTime()

? ? ? ? {

? ? ? ? ? ? time.Elapsed += Time_Elapsed;

? ? ? ? ? ? time.Interval = 1000;

? ? ? ? }

? ? ? ? private void Time_Elapsed(object sender, System.Timers.ElapsedEventArgs e)

? ? ? ? {

? ? ? ? ? ? // 在控制臺打印時間

? ? ? ? ? ? Console.WriteLine(DateTime.Now.ToString());

? ? ? ? }

? ? }

3.報時程序控制類


? ? public class AlertTimeCtrl : IHostedService

? ? {

? ? ? ? private AlertTime _work = new();

? ? ? ? public Task StartAsync(CancellationToken cancellationToken)

? ? ? ? {

? ? ? ? ? ? _work.time.Start();

? ? ? ? ? ? return Task.CompletedTask;

? ? ? ? }


? ? ? ? public Task StopAsync(CancellationToken cancellationToken)

? ? ? ? {

? ? ? ? ? ? _work.time.Stop();

? ? ? ? ? ? return Task.CompletedTask;

? ? ? ? }

? ? }

4.建立主機


? ? ? ? public static void Main(string[] args)

? ? ? ? {

? ? ? ? ? ? // host ConfigServices 主機服務(wù)配置

? ? ? ? ? ? static void servicesCfg(HostBuilderContext hostContent, IServiceCollection services)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? // 添加服務(wù)

? ? ? ? ? ? ? ? services.AddHostedService<AlertTimeCtrl>();

? ? ? ? ? ? }

? ? ? ? ? ? // 實例化主機(使用默認的主機),添加服務(wù)

? ? ? ? ? ? IHostBuilder hostbuild = Host.CreateDefaultBuilder();

? ? ? ? ? ? hostbuild.ConfigureServices(servicesCfg);

? ? ? ? ? ? // 生成并開啟主機

? ? ? ? ? ? IHost host = hostbuild.Build();

? ? ? ? ? ? host.Run();

? ? ? ? }

程序理解


AlertTime就是工作程序,和"主機"的關(guān)系.就如同游戲軟件和運行這游戲的計算機.


AlertTimeCtrl類是為了實現(xiàn) IHostedService 接口,這個接口的功能就是兩個方法,開始(StartAsync)和停止(StopAsync).


對于要在"主機"里運行的程序,規(guī)定要有這兩個方法.也就是要實現(xiàn) IHostedService 接口,這個類具體實現(xiàn)就是,在開始方法里打開定時器,結(jié)束方法里關(guān)閉定時器.


有了程序,也設(shè)好了在"主機"里運行的條件,最后來建立主機:


?


用這個方法建立"主機",沒有配置


IHostBuilder hostbuild = new HostBuilder();


可以用默認模板建立,比較省事,Host這個靜態(tài)類,提供這個"主機"模板


IHostBuilder hostbuild = Host.CreateDefaultBuilder();


?


把工作程序加入到"主機"里


hostbuild.ConfigureServices(servicesCfg);


servicesCfg參數(shù)是一個方法,方法定義是 void(HostBuilderContext hostContent, IServiceCollection services)


hostContent參數(shù)是"主機"上下文對象,services是"主機"里所有的服務(wù)程序集合.


調(diào)用services的add方法,把報時程序加到"主機"里


services.AddHostedService<AlertTimeCtrl>();


?


Build: 初始化"主機"配置,生成"主機"對象


IHost host = hostbuild.Build();


Run: 運行"主機"

host.Run();

感受

這個練習主要是學(xué)習編程模式了,程序代碼只有很少幾行,是編程模式的表示形式.如果不理解框架程序的設(shè)計思路,基本上用不好,用不習慣.

"主機"承載服務(wù),程序配置用的是依賴注入模式,如果不熟悉這個,會感覺程序配置比較費解,需要寫個方法做配置參數(shù),通過這個方法的參數(shù)進行配置.

參考文檔比較詳細的講解了依賴注入還有IOC這些.

經(jīng)常感覺用框架程序麻煩,不好用,不如直接用庫.主要是沒了解它的設(shè)計思路,感覺使用復(fù)雜,沒用的東西多.但學(xué)習程序框架的設(shè)計思路很有用,

一來可以比較容易的使用這個程序框架,再就是可以使用這思路定制符合自己要求的程序框架.

參考文檔:https://www.dianjilingqu.com/459467.html

dotnetcore主機學(xué)習的評論 (共 條)

分享到微博請遵守國家法律
遵化市| 修武县| 桑植县| 兴隆县| 凌源市| 张家港市| 师宗县| 大名县| 衢州市| 宜黄县| 扬州市| 杭锦后旗| 华蓥市| 双牌县| 日照市| 江西省| 柏乡县| 宣威市| 香格里拉县| 灵石县| 介休市| 太和县| 辉南县| 同心县| 伊川县| 涪陵区| 苍梧县| 沈阳市| 西吉县| 江山市| 天祝| 庆元县| 凤冈县| 同仁县| 集贤县| 壤塘县| 蓬溪县| 黄陵县| 平塘县| 西和县| 通州区|