Blazor ServerのWebアプリケーションのデプロイの際、OSSの成果物を後で手動で配置するインストール方法は可能でしょうか。
Blazor ServerのWebアプリケーションをサーバにデプロイする際、開発した成果物のみをインストーラに組み込んでOSSの成果物は別途配置するというインストール方法は可能でしょうか。
インストールの運用として以下の流れになります。ポイントは2,4が可能かということになります。
1.Blazor ServerのWebアプリのプロジェクトをビルドする。
2.Webアプリのインストーラを作成時にOSSの成果物(DLLなど)を除外して作成する。
3.IISにインストーラを使って配置する。
4.IISに関連するOSSを別途ダウンロードしてきて、配置する。
5.Webアプリを起動する。(TOPページにアクセスする。)
.NET
-
SurferOnWww 2,906 評価のポイント
2024-06-04T22:50:35.94+00:00 「OSSの成果物」の具体例を示せませんか?
-
ノック 0 評価のポイント
2024-06-04T23:51:47.25+00:00 「OSSの成果物」の具体例は、以下になります。
(1)bootstrap関係のファイル
・bootstrap.min.css
・bootstrap.min.css.map
こちらは、2,4ともに可能ではと考えています。
(2)ASP.NET Core関係のDLL(Microsoft.AspNetCore.Components.dllなど)
こちらは Blazor Serverのテンプレートプロジェクトをビルド、発行してもpublishのフォルダに入り込んでいなかったため、インストーラにも抱き込まれないかもしれませんが、Blazor WebAssemblyのプロジェクトをビルド、発行した場合は、wasmファイルとして出力されていたため、Blazor Server側でもdllを除去できない形で発行物に出力されないか気になっております。きれいに開発した成果物のDLL等とOSSのDLL等を切り分けして、OSSのDLLは手動で配置できないかを知りたいです。 -
SurferOnWww 2,906 評価のポイント
2024-06-05T00:56:13.69+00:00 Bootstrap も Microsoft.AspNetCore.Components.dll もいわゆる OSS (Open Source Software) ではないと思いますけど、とりあえずそこはちょっと置いといて・・・
そもそもの目的は何なのですか? XY 問題のような気がします。
XY 問題とは、質問者に X という課題があって、質問者が Y という解決策を考えついて Y について質問したが(質問には X は書かないで)、Y は X の解決策とはなっておらず、回答者と質問者間で話がかみ合わず、一向に解決にならないということです。
X も書いていただけませんか。
きれいに開発した成果物のDLL等とOSSのDLL等を切り分けして、OSSのDLLは手動で配置できないかを知りたいです。
「きれいに開発」するには、Bootstrap や Microsoft.AspNetCore.Components.dll と組み合わせて「きれい」に動くことを十分に検証するはずですが、Bootstrap や Microsoft.AspNetCore.Components.dll を別にデプロイしてそれが保証できるはずはないと思うのですが。
そもそも Bootstrap や Microsoft.AspNetCore.Components.dll を本体デプロイ後に別にデプロイするということは、自分の想像力の範囲ではどう考えても意味が無いです。なぜそういうことを考えたのでしょう?
-
ノック 0 評価のポイント
2024-06-05T04:48:33.7+00:00 申し訳ありません。確かにXが記載されておりませんね。
目的は、製品のWebアプリを顧客に展開する際にOSSをアプリのインストーラに含まずにインストールし、OSS部分は顧客に配置してもらう運用ができないかを検討していました。OSSの利用に関しては顧客に同意のもと配置してもらうようにするため。(この運用に意味があるかはわかりませんが。一般的にはOSSも全て抱き込んでインストーラ展開するものですかね。)別にデプロイしても同じOSSのファイルであれば事前にその環境でテストしたものでインストーラをつくるので、動作は保証できると考えています。
余談ですが、.NET 8のASP.NET Core自体がMicrosoftのOSSだと思っています。Bootstrapも提供元が違うかもしれませんが同様です。
-
ノック 0 評価のポイント
2024-06-05T04:53:44.56+00:00 もう少し補足するとOSSを抱き込むと、OSS脆弱性チェック、そのバージョンで脆弱性が発生したときなどに対応が大変なため、インストーラに組み込みたくないのです。組み込まなくても脆弱性が発覚したら何らかの対応が必要になるとは思っていますが。
-
SurferOnWww 2,906 評価のポイント
2024-06-05T06:46:26.3166667+00:00 この運用に意味があるかはわかりませんが。
技術的に可能かどうかは別にして(Bootstrap はともかく Microsoft.AspNetCore.Components.dll は不可能だと思いますが)・・・
顧客の強い要求とかであれば話は違うかもしれませんが、そうだとしても、顧客任せの部分がトラブルのもとになるし、製品品質の担保ができないしで、避けるべきだと思います。
一般的にはOSSも全て抱き込んでインストーラ展開するものですかね。
そうです。
-
Raina Zhao - MSFT 2,855 評価のポイント • Microsoft ベンダー
2024-06-05T07:33:05.69+00:00 ノックさん、こんにちは。
Microsoft Q&A フォーラムにご投稿くださいましてありがとうございます。
OSSを抱き込むと、OSS脆弱性チェック、そのバージョンで脆弱性が発生したときなどに対応が大変なため、インストーラに組み込みたくないのです。
別のアプリケーションでOSSを開発したいと理解しました。これは開発、トラブルシューティング、および一部の脆弱性の防止のに便利だとされていますが、実際のOSSの利用シナリオがよくわからないです。OSSの利用について詳しく教えていただけませんか? また、2つのプロジェクト間の互換性についても考慮していますか?
OSSのDLLは、クラスライブラリやRazorクラスライブラリなどの別のアプリケーションでしょうか?それをIISでデプロイされたWebアプリケーションに更新したいとお考えですか?
OSSアプリケーションを開発・変更して公開した後、関連ファイル (.dllファイルや.pdbファイルなど) を IIS Web サイトのコンテンツ ディレクトリ パスにコピーし、Web サイトを再起動します。その後、Webサイトは最新のdllファイルを使用します。
注意:この方法を使用すると、次のような問題が発生する可能性があるため、WebアプリケーションとDLLを一緒にデプロイすることをお勧めします。
1.IISからWebサイトを停止してから再起動する必要があります。
2.Blazor サーバー アプリケーションの更新が必要になる場合があります。
3.互換性の問題。
どうぞよろしくお願いいたします。
-
ノック 0 評価のポイント
2024-06-05T08:57:49.7566667+00:00 技術的に可能かどうかは別にして(Bootstrap はともかく Microsoft.AspNetCore.Components.dll は不可能だと思いますが)・・・
アドバイスありがとうございます。
Microsoft.AspNetCore.Components.dll自体は、Nugetのサイトから個別にダウンロードすれば、誰でもダウンロードできると考えております。(バージョンに注意すれば) -
ノック 0 評価のポイント
2024-06-05T09:30:55.3333333+00:00 @Raina Zhao - MSFT さん
ご連絡ありがとうございます。
回答になっているかわかりませんが、以下回答します。別のアプリケーションでOSSを開発したいと理解しました。これは開発、トラブルシューティング、および一部の脆弱性の防止のに便利だとされていますが、実際のOSSの利用シナリオがよくわからないです。OSSの利用について詳しく教えていただけませんか? また、2つのプロジェクト間の互換性についても考慮していますか?
→まず、利用するOSSは一切変更しません。指定したバージョンで最終的なテストをしてリリースします。その後、OSSがアップデートされた場合は、影響を精査して必要に応じて、適用していく想定です。このため、通常の運用では、顧客環境上のOSSは決まったバージョンのまま変わることはない想定です。2つのプロジェクトの互換性とは、開発WebアプリのプロジェクトとOSSの互換性のことでしょうか?
OSSのDLLは、クラスライブラリやRazorクラスライブラリなどの別のアプリケーションでしょうか?それをIISでデプロイされたWebアプリケーションに更新したいとお考えですか?
→OSSのDLLは基本的には、Blazor Serverアプリの開発に必要なDLLやBootstrapなどのOSSになります。自前で開発したDLLを先にIISにデプロイして、必要なOSSのDLLをIISの所定の位置に手動で配置して動かせないかなと検討しています。
OSSアプリケーションを開発・変更して公開した後、関連ファイル (.dllファイルや.pdbファイルなど) を IIS Web サイトのコンテンツ ディレクトリ パスにコピーし、Web サイトを再起動します。その後、Webサイトは最新のdllファイルを使用します。
→ここはよく意味が分かっていませんが、OSSのバージョンが上がった場合に反映する方法と理解してよいでしょうか。新しいOSSのバージョンを適用する場合は、顧客環境に公開する前に必要に応じて、テストしてから公開する想定です。
-
Raina Zhao - MSFT 2,855 評価のポイント • Microsoft ベンダー
2024-06-06T02:41:35.27+00:00 ノックさん、ご返信いただきありがとうございます。
2つのプロジェクトの互換性とは、開発WebアプリのプロジェクトとOSSの互換性のことでしょうか?
はい、そうですね。
自前で開発したDLLを先にIISにデプロイして、必要なOSSのDLLをIISの所定の位置に手動で配置して動かせないかなと検討しています。
IISに初めてデプロイされる際に、OSSのDLLを含まないBlazor Server Appだけをデプロイしますか。その後、必要なOSSのDLLを指定された場所に手動で配置するということですか。そうであれば、OSSのDLLを配置する前に、Blazor Server Appだけを実行すれば必要なOSSのDLLがないためエラーを発生する可能性があります。
ここはよく意味が分かっていませんが、OSSのバージョンが上がった場合に反映する方法と理解してよいでしょうか。
こちらでそういう方法でテストした上で、動作していますが、OSSの名前は以前のと同じである必要があります。
どうぞよろしくお願いします。
-
ノック 0 評価のポイント
2024-06-06T05:32:14.48+00:00 @Raina Zhao - MSFT さん
ご返信ありがとうございます。IISに初めてデプロイされる際に、OSSのDLLを含まないBlazor Server Appだけをデプロイしますか。その後、必要なOSSのDLLを指定された場所に手動で配置するということですか。そうであれば、OSSのDLLを配置する前に、Blazor Server Appだけを実行すれば必要なOSSのDLLがないためエラーを発生する可能性があります。
上記の手順は、その通りです。ただし、OSSのDLLを配置した後に、Blazor Server Appを実行しますので、OSSのDLLは存在するためエラーにはならない認識です。
それから、私の勉強不足でしたが、以下のサイトのようにBlazor ServerのアプリをIISにデプロイする場合は、手動でDDLを配置しなくても、Window Server Hostingをインストールすれば、必要なASP.NET CoreのDLLは参照可能な位置に配置されるようですね。
この場合、Bootstrap等は別で手動で配置する必要がありますが、ASP.NET CoreのOSSのDLLは一つ一つ手動で配置しなくても済みそうですね。
https://qiita.com/programing_diy_kanrinin/items/aff1e73e9c686a62e0ec -
Raina Zhao - MSFT 2,855 評価のポイント • Microsoft ベンダー
2024-06-07T09:02:37.4866667+00:00 ノックさん、こんにちは。
例を挙げて説明していきましょう。
BlazorServerApp1 アプリケーションに、OSS(RazorClassLibrary1)DLLを使用します。まずOSSプロジェクト参照を追加し、それからRazorコンポーネント(TestPage.razor)に、OSS名前空間とそのコンポーネントを追加します。
Blazorアプリを発行すると、DLLはすでにBlazorServerApp1のpublishフォルダに追加されました。
OSS DLL参照を追加しない場合、ビルドエラーが発生するため発行することはできません。
bootstrapやMicrosoft.AspNetCore.******.dllなどについては、同じような問題があります。Blazorアプリにそれらを使用するには、関連するパッケージ/dllを追加する必要があります。
したがって、Blazorアプリを初めてデプロイする場合、関連するOSS dllを追加する必要があります。その後、カスタマイズのOSS/DLLを更新したい場合、それをIISフォルダにコピーして入れ替えれば大丈夫です。
何か勘違いがありましたら教えてください。
サインインしてコメントする