フッターコンテンツにスキップ
.NETヘルプ

.NET Aspire (開発者向けの仕組み)

.NET Aspireは、観測可能で本番環境対応の分散アプリケーションを構築するために特化した、クラウド対応のスタックフレームワークとして際立っています。 NuGetパッケージのセットを通じて提供されるAspireは、さまざまなクラウドネイティブサービスの発見に関する考慮事項に効率的に対処し、一貫した設定パターンを提供することを目指しています。 .NETクラウドネイティブアプリの領域では、伝統的なモノリシックコード構造を離れ、分散アプリケーション内のより小さく相互に関連するコンポーネントやマイクロサービスが標準となっています。 これらのアプリケーションは通常、データベース、メッセージングシステム、クラウドリソース、キャッシングなどの多数のサービスに依存しています。

このコンテキストでは、分散アプリケーションは、複数のホストで動作するコンテナのような多くのノードにまたがる計算リソースを活用しています。 これらのノードが協力してエンドユーザーに応答を提供するには、ネットワーク境界を越えて効果的な通信が不可欠です。 特に、クラウドネイティブの分散アプリケーションは、クラウドネイティブアプリインフラストラクチャに内在するスケーラビリティ、堅牢性、管理容易性を活用する分散アプリケーション内の独自のカテゴリーです。

この記事では、ウェブアプリケーションを作成するための.NET Aspireコンポーネントについて説明します。 また、Aspire .NETプロジェクトコンポーネントでPDFファイルを作成およびダウンロードするために、IronPDFライブラリを使用します。

1. .NET Aspireの紹介

.NET Aspireアプリケーションは、.NETエコシステム内で.NETクラウドネイティブアプリの開発体験を向上させることを目的としたイニシアチブです。 分散アプリのシームレスな構築と運用を容易にするために設計された統一かつ独自のツールおよび設計パターンのスイートを導入します。.NET Aspireスターターアプリケーションの主要な目的には次のものが含まれます:

オーケストレーション: .NET Aspireオーケストレーションは、複数のプロジェクトアプリケーションとそれらの複雑な依存関係をオーケストレーションするための強力な機能を備えています。 この機能により、.NETプロジェクトのさまざまなコンポーネント間のスムーズな実行とシームレスな接続が保証されます。 コンポーネント: .NET Aspireオーケストレーションによって提供されるコンポーネントは、NuGetパッケージ内にカプセル化されており、ローカルRedisコンテナリソースやPostgresのような広く利用されるサービスを表しています。 これらのコンポーネントは標準化されたインターフェイスによって特徴付けられ、一貫したシームレスな統合がアプリケーションと保証されます。 これらの事前パッケージ化されたコンポーネントを活用することにより、開発者は開発プロセスを迅速化し、.NET Aspireプロジェクトテンプレートを使用して高レベルの相互運用性と構成可能なクラウドネイティブアプリケーションを維持できます。 ツーリング: .NET Aspireスターターテンプレートは、開発ワークフローを簡素化するために調整された包括的なツールセットを組み込んでいます。 プロジェクトテンプレートとツーリングの経験は、Visual Studioと.NET CLIに注意深く統合されており、開発者が.NET Aspireアプリを簡単に作成および操作できるようにします。 この包括的なツーリングフレームワークは生産性を向上させ、.NET Aspireアプリの設定およびプロジェクトテンプレートの開発と管理のための統一された環境を提供します。

本質的に、.NET Aspireは、オーケストレーション、コンポーネント統合、ツーリングのような特定のクラウドネイティブの懸念の主要な側面に対処する包括的なソリューションとして機能し、.NETクラウドネイティブアプリケーションの構築と展開の効率性と一貫性を向上させることを目的としています。

2. .NET Aspireの始め方

.NET Aspireに携わる前に、次のコンポーネントがローカルにインストールされていることを確認してください:

.NET 8.0: システムに.NET 8.0をインストールしておくことを確認してください。 .NET Aspire Workload: VSインストーラーを使用するか、dotnet workload install aspireコマンドを実行することで.NET Aspireワークロードを取得します。 統合開発環境(IDE)またはコードエディター: 事前にVisual Studio 2022をシステムにインストールする必要があります。

これらのすべての要件が満たされている場合は、アプリを処理するための最初の.NET Aspireコンポーネントの開発を開始する準備が整っています。

3. 新しい.NET Aspireプロジェクトの作成

.NET Aspireアプリを作成するには、次の手順に従います。

  1. Visual Studioを開き、[Create a new project]をクリックします。
  2. 新しいウィンドウが表示されます。 この新しいウィンドウで、検索バーにAspireと入力します。 下にリストが表示され、その中からAspire Starter apphostプロジェクトとパッケージ参照を選択して[Next]をクリックします。
  3. 新しいウィンドウが表示されます。 この新しいウィンドウにプロジェクト名を入力し、[次へ]をクリックします。 このウィンドウでターゲットフレームワークを選択し、[Create]ボタンをクリックします。

数秒で.NET Aspireアプリケーションが作成され、開発およびカスタマイズを始める準備が整います。

4. .NET Aspireアプリケーションの実行とテスト

プロジェクトが作成されたら、[Run]ボタンをクリックしてください。ビルドを作成するのに時間がかかり、その後、Aspire Webアプリケーションホームページが開かれます。

このホームページには、可視化可能な生産準備完了の.NET Aspireスタートアプリケーションを構築するための.NET Aspireクラウドネイティブアプリスタックが含まれます。

.NET Aspire(開発者向けの仕組み):図1 - Aspireホームページ

ここでは.NET Aspire Webフロントエンドプロジェクトとパッケージ参照をクリックしてください。 それは異なるポート名で新しいウェブページを開きます。 新しいポート名の異なるウェブページが開きます。

.NET Aspire(開発者向けの仕組み):図2 - 新しいウェブページ

5. IronPDF C♯の紹介

IronPDFのドキュメントは、開発者がアプリケーションに高度なPDF生成および操作機能を簡単に統合できるようにする、強力で多用途のC#ライブラリとして説明しています。 Iron Softwareが開発したこの機能豊富なライブラリは、C#アプリケーション内でPDF文書を作成、変更、レンダリングするための包括的なツールセットを提供します。

IronPDFを使用することで、開発者はHTML、画像、既存の文書など、さまざまなソースからPDFをシームレスに生成でき、フォーマットやレイアウトに対する正確な制御を保つことができます。 IronPDFをシームレスにインストールするには、Visual Studio内のNuGetパッケージマネージャーを活用してください。

インストールするために指定されたパッケージはIronPDFと名付けられています。

パッケージマネージャーコンソールに以下のコマンドをコピーして貼り付け、Enterを押してください。 インストール用に指定されたパッケージのタイトルはIronPDFです。 次のコマンドをパッケージマネージャーコンソールにコピー&ペーストして、Enterキーを押してください:

Install-Package IronPdf

5.2. IronPDFをAspireコンポーネントと統合する

IronPDFをAspireコンポーネントと統合することは、Blazor Webアプリケーションと統合するのと同じです。なぜなら、AspireコンポーネントはBlazorアプリケーションをコンポーネントとして利用できるからです。 このコード例では、カウンターページのコードを変更してPDFファイルを作成およびダウンロードします。

counter.razorファイルを開き、以下のコードに置き換えます。

@page "/PrintPDF"
@rendermode InteractiveServer
@using IronPdf
<PageTitle>Print PDF</PageTitle>
<h1>IronPDF</h1>
<p role="status">Click on the button below to create and download the PDF file </p>
<button class="btn btn-primary" @onclick="IncrementCount">Print</button>
@code {
    private int currentCount = 0;

    /// <summary>
    /// Handles the click event of the "Print" button.
    /// This function will generate a PDF from an HTML string and prompt the user to download it.
    /// </summary>
    private void IncrementCount()
    {
        var renderer = new ChromePdfRenderer();
        // Create a PDF from an HTML string using C#
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
        // Export to a file using JavaScript Interop to initiate download
        JSRuntime.InvokeVoidAsync("saveAsFile", "output.pdf", Convert.ToBase64String(pdf.Stream.ToArray()));
    }
}
@page "/PrintPDF"
@rendermode InteractiveServer
@using IronPdf
<PageTitle>Print PDF</PageTitle>
<h1>IronPDF</h1>
<p role="status">Click on the button below to create and download the PDF file </p>
<button class="btn btn-primary" @onclick="IncrementCount">Print</button>
@code {
    private int currentCount = 0;

    /// <summary>
    /// Handles the click event of the "Print" button.
    /// This function will generate a PDF from an HTML string and prompt the user to download it.
    /// </summary>
    private void IncrementCount()
    {
        var renderer = new ChromePdfRenderer();
        // Create a PDF from an HTML string using C#
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
        // Export to a file using JavaScript Interop to initiate download
        JSRuntime.InvokeVoidAsync("saveAsFile", "output.pdf", Convert.ToBase64String(pdf.Stream.ToArray()));
    }
}
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: @page "/PrintPDF" @rendermode InteractiveServer using IronPdf <PageTitle> Print PDF</PageTitle> <h1> IronPDF</h1> <p role="status"> Click on the button below to create and download the PDF file </p> <button class="btn btn-primary" onclick="IncrementCount"> Print</button> @code
"btn btn-primary" onclick="IncrementCount"> Print</button> code
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Friend @page "/PrintPDF" @rendermode InteractiveServer using IronPdf <PageTitle> Print PDF</PageTitle> <h1> IronPDF</h1> <p role="status"> Click on the button below to create and download the PDF file </p> <button Class="btn btn-primary" onclick
"status"> Click on the button below [to] create [and] download the PDF file </p> <button Class="btn btn-primary" onclick
Private Private Friend page "/PrintPDF" rendermode InteractiveServer [using] IronPdf (Of PageTitle) Print PDF</PageTitle> (Of h1) IronPDF</h1> <p role="status"> Click on the button below [to] create [and] download the PDF file </p> <button Class
	Private currentCount As Integer = 0

	''' <summary>
	''' Handles the click event of the "Print" button.
	''' This function will generate a PDF from an HTML string and prompt the user to download it.
	''' </summary>
	Private Sub IncrementCount()
		Dim renderer = New ChromePdfRenderer()
		' Create a PDF from an HTML string using C#
		Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")
		' Export to a file using JavaScript Interop to initiate download
		JSRuntime.InvokeVoidAsync("saveAsFile", "output.pdf", Convert.ToBase64String(pdf.Stream.ToArray()))
	End Sub
End Class
$vbLabelText   $csharpLabel

その後、PDFファイルをダウンロードするJavaScriptコードを書いてください。このコードはHTMLボディタグのスコープ内のスクリプトタグに記述します。 プロジェクトに追加するコードは以下の通りです。

<script type="text/javascript">
    function saveAsFile(filename, bytesBase64) {
        if (navigator.msSaveBlob) {
            //Download document in Edge browser
            var data = window.atob(bytesBase64);
            var bytes = new Uint8Array(data.length);
            for (var i = 0; i < data.length; i++) {
                bytes[i] = data.charCodeAt(i);
            }
            var blob = new Blob([bytes.buffer], { type: "application/octet-stream" });
            navigator.msSaveBlob(blob, filename);
            window.navigator.msSaveOrOpenBlob(blob);
        }
        else {
            var link = document.createElement('a');
            link.download = filename;
            link.href = "data:application/octet-stream;base64," + bytesBase64;
            document.body.appendChild(link); // Needed for Firefox
            link.click();
            document.body.removeChild(link);
        }
    }
</script>
<script type="text/javascript">
    function saveAsFile(filename, bytesBase64) {
        if (navigator.msSaveBlob) {
            //Download document in Edge browser
            var data = window.atob(bytesBase64);
            var bytes = new Uint8Array(data.length);
            for (var i = 0; i < data.length; i++) {
                bytes[i] = data.charCodeAt(i);
            }
            var blob = new Blob([bytes.buffer], { type: "application/octet-stream" });
            navigator.msSaveBlob(blob, filename);
            window.navigator.msSaveOrOpenBlob(blob);
        }
        else {
            var link = document.createElement('a');
            link.download = filename;
            link.href = "data:application/octet-stream;base64," + bytesBase64;
            document.body.appendChild(link); // Needed for Firefox
            link.click();
            document.body.removeChild(link);
        }
    }
</script>
JAVASCRIPT

その後、コードを実行すると、下の画像のようになります。

.NET Aspire(開発者向けの仕組み):図3 - Blazor

PDFファイルを作成してダウンロードするには、印刷ボタンをクリックしてください。 output.pdfという名前のPDFファイルが作成され、ダウンロードされます。

.NET Aspire(開発者向けの仕組み):図4 - PDFダウンロード

6. 結論

.NET Aspireは、クラウド環境で堅牢で可視化可能な分散アプリケーションを開発するために目的に応じて設計された重要なフレームワークとして浮上します。 一貫したツールセットとデザインパターンを提供することで、.NET Aspireはクラウドネイティブアプリケーションの構築に伴う複雑さを簡素化し、シームレスなオーケストレーション、コンポーネント統合、および使いやすいツールフレームワークを提供します。 スケーラビリティ、レジリエンス、管理可能性に重点を置いて、.NET Aspireはマイクロサービスと分散アーキテクチャへのパラダイムシフトに対応しています。

Blazor WebアプリケーションでIronPDFを使用する完全なチュートリアルについては、IronPDFのブログチュートリアルをご覧ください。 IronPDFの無料トライアルを入手するには、IronPDFライセンスページを訪問して無料トライアルライセンスを取得してください。

さらに、IronPDFをAspireコンポーネントに統合することで、フレームワークの拡張性と汎用性を示し、開発者が高度なPDF生成と操作機能をクラウドネイティブなアプリケーションにシームレスに組み込むことを可能にします。 全体として、.NET Aspireは、明確に定義された目的とユーザーフレンドリーなアプローチにより、.NETエコシステム内でクラウドネイティブなアプリケーションを構築しデプロイするための効率的で一貫したソリューションを求める開発者にとって、貴重な資産となる。

IronPDF with Blazor ウェブアプリケーションの完全なチュートリアルについては、IronPDFのブログチュートリアルをご覧ください。 IronPDFの無料トライアルライセンスを取得するには、 IronPDFライセンスページをご覧ください。

よくある質問

C# で HTML を PDF に変換するにはどうすればいいですか?

IronPDF の RenderHtmlAsPdf メソッドを使用して、HTML 文字列を PDF に変換できます。RenderHtmlFileAsPdf を使用して HTML ファイルを PDF に変換することもできます。

.NET Aspireのクラウドネイティブアプリケーション開発における目的は何ですか?

.NET Aspireは、開発者が観測可能でプロダクションレディの分散アプリケーションを構築するために設計されています。これは、クラウドネイティブアプリケーションにおけるマイクロサービスアーキテクチャの管理のためのオーケストレーションツール、コンポーネントの統合、および包括的なツールセットを提供します。

IronPDFは.NET Aspireプロジェクトとどのように統合されていますか?

IronPDFは.NET Aspireプロジェクトに統合され、高度なPDF生成および操作機能を提供します。このことにより、開発者はクラウドネイティブアプリケーション内でPDFをシームレスに作成および管理することができます。

WebアプリケーションでのIronPDFの一般的な用途は何ですか?

IronPDFは、PDFレポートの生成、HTMLコンテンツをPDFに変換、文書ワークフローの管理にWebアプリケーションでよく使用されます。これは.NETアプリケーション内でPDFタスクを処理するための強力なツールセットを開発者に提供します。

.NETプロジェクトでIronPDFを使用する際のトラブルシューティング方法は?

IronPDFの問題をトラブルシューティングするには、NuGetパッケージが正しくインストールされていること、すべての依存関係が適切に参照されていることを確認してください。コンソールでエラーメッセージをチェックし、さらなるガイダンスを得るためにIronPDFのドキュメントまたはサポートを参照してください。

.NET Aspireフレームワークの主なコンポーネントは何ですか?

.NET Aspireにはオーケストレーション機能、開発を高速化するための事前パッケージ化されたコンポーネント、Visual Studioおよび.NET CLIに統合されたツールが含まれており、クラウドネイティブアプリケーションの開発と管理を合理化するよう設計されています。

.NET Aspireがマイクロサービスアーキテクチャに提供する利点は何ですか?

.NET Aspireは一貫したセットアップパターン、堅牢なオーケストレーション、シームレスなコンポーネント統合を提供し、クラウドネイティブ環境でのマイクロサービスアーキテクチャの管理および展開を容易にします。

IronPDFと.NETアプリケーションを使用する方法についてもっと知るにはどうすればいいですか?

IronPDFと.NETアプリケーションを使用する方法についてもっと知るためには、IronPDFのブログおよびドキュメントを訪れ、チュートリアルやサンプルを参照してください。これらのリソースは、IronPDFを効果的に統合および使用するための詳細なガイドを提供します。

Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

Jacob Mellorは、Iron Softwareの最高技術責任者であり、C# PDF技術の開拓者としてその先進的な役割を担っています。Iron Softwareのコアコードベースのオリジナルデベロッパーである彼は、創業時から製品のアーキテクチャを形作り、CEOのCameron Rimingtonと協力してNASA、Tesla、全世界の政府機関を含む50人以上の会社に成長させました。

Jacobは、1998年から2001年にかけてマンチェスター大学で土木工学の第一級優等学士号(BEng)を取得しました。1999年にロンドンで最初のソフトウェアビジネスを立ち上げ、2005年には最初の.NETコンポーネントを作成し、Microsoftエコシステムにおける複雑な問題の解決を専門にしました。

彼の旗艦製品であるIronPDFとIronSuite .NETライブラリは、全世界で3000万以上のNuGetインストールを達成しており、彼の基本コードが世界中で使用されている開発者ツールを支えています。商業的な経験を25年間積み、コードを書くことを41年間続けるJacobは、企業向けのC#、Java、およびPython PDF技術の革新を推進し続け、次世代の技術リーダーを指導しています。