1. ホーム
  2. Web プログラミング
  3. ASP.NET
  4. 実用的なヒント

.netcoreプロジェクトでIStartupFilterを使用するためのチュートリアル

2022-01-13 10:36:35

背景

netcoreプロジェクトのサービスの中には、orleansコンポーネントのようなミドルウェアを介して通信を行うものがあります。その内部ではサービスとクライアントがゲートウェイとポートを指定するので、クライアントを外部に開放し、サーバー側でポートを閉じればいいだけです。これはホストを削除することと同じで、コネクションやポートの指定が不要になり、非常に便利に使えるようになります。

ホストをなくすには、以下のコードを実行します。

{{コード

net5でコメントアウトされているコードは、私たちがオフにしたサービスで、純粋なコンソールとして実行されます。

しかし、スタートアップはミドルウェアなどのコードで指定する必要があるので、スタートアップファイルを殺すのは都合が悪い。ドキュメントを探すと、Configureブロックの代わりに、IStartupFilterでこの機能の一部を実装できることがわかりました。

[email protected]:~/workbook/jz2440/system/linux-2.6.22.6$ make menuconfig
Makefile:416: *** mixed implicit and normal rules: deprecated syntax
Makefile:1449: *** mixed implicit and normal rules: deprecated syntax
make: *** No rule to make target 'menuconfig'. Stop.
File: Makefile
416 config %config: scripts_basic outputmakefile FORCE
417 $(Q)mkdir -p include/linux include/config
418 $(Q)$(MAKE) $(build)=scripts/kconfig $@
...
1448 # Modules
1449 / %/: prepare scripts FORCE
1450 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
1451 $(build)=$(build-dir)
1452 %.ko: prepare scripts FORCE
1453 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
1454 $(build)=$(build-dir) $(@:.ko=.o)
1455 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
...

IStartupFilter インターフェースには、1 つのメソッド "Action" しかありません。 {アプリケーションビルダー 構成(Action {アプリケーションビルダー 次)」を実装し、コンテナにインジェクトするだけです。

{コード
linux-2.6.22.6$make menuconfig
Makefile:416:*** mixed implicit and normal rules: deprecated syntax
Makefile:1449:*** mixed implicit and normal rules: deprecated syntax
make:*** No rule to make target 'menuconfig'. Stop.

しかし、新たな問題が出てきました。MyStartupFilterにプログラムが全く実行されないことがわかりました、なぜでしょうか?ソースコードを見てみると、IStartupFilterのインターフェースの実装は、webhostの

ということで、Hostしか指定できない。そして、メソッドはStartupファイルを指定する必要があります。これでは、せっかく効率化したいのに、マイクロソフトの設計で、堂々巡りになってしまいます。

画像

/p

net6のプログラムはかなり変わっていて、WebApplicationから始まります。ConfigureWebHostDefaultsの呼び出しはbootstrapHostBuilderで指定します.

net6はスタートアップファイルを効率化できますが、そのスタートアップはウェブホストに直接拘束され、net5と比較してホストさえも省略することができません。

原点に立ち返り、そのソースコードを勉強したわけではないので、理解できるのはこれだけです。最後の2つの質問です。1.net6はホストなしで実行できるのか、2.IStartupFilterとStartupはホストを分離して束縛しないようにできるのか、です。

netcoreプロジェクトにおけるIStartupFilterの使用については、この記事がすべてです。netcoreにおけるIStartupFilterの使い方については、BinaryDevelopの過去記事を検索するか、引き続き以下の関連記事を参照してください。