国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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é)習的評論 (共 條)

分享到微博請遵守國家法律
娄底市| 辽阳市| 凯里市| 高州市| 门源| 南漳县| 南皮县| 竹山县| 新密市| 田阳县| 静海县| 通渭县| 建德市| 岳阳市| 钦州市| 通海县| 化州市| 屯门区| 霍城县| 阿鲁科尔沁旗| 阿克| 广灵县| 启东市| 澳门| 宜昌市| 蒲城县| 西城区| 扬中市| 万年县| 许昌县| 泾川县| 郧西县| 阜阳市| 观塘区| 丰原市| 贺州市| 个旧市| 瑞昌市| 延川县| 芜湖县| 贵定县|