はい、数分で任意の ASP.NET Core、MVC、または WebForms アプリケーションに安全なプラグイン不要オンラインファイルビューアを埋め込むことができます。Doconut App がすべての重い処理を担います。
契約書、図面、デザイン資産を提供する企業は、企業のセキュリティポリシーを遵守し、すべてのブラウザで動作し、サードパーティプラグインのインストールを強制しないビューアを必要とします。Doconut App はまさにそれを実現します。PDF、Office、CAD、その他 50 以上のフォーマットに対応したブラウザベースのビューアで、AES‑256 暗号化、SSL のみのアップロード、完全にカスタマイズ可能な UI を備えています。本稿では、ファイルアップロードの保護からビューアの描画までの全工程を解説し、レンダリングエンジンを一から実装せずにエンタープライズ向けの洗練されたソリューションを提供できるようにします。
1. .NET Web アプリでセキュリティとプラグイン不要レンダリングが重要な理由
現代の企業はすべての文書を潜在的な情報漏洩リスクとみなします。ActiveX、Flash、ネイティブクライアントに依存するビューアを埋め込むと、次の 3 つのリスクが生じます:
| リスク | .NET アプリへの影響 | Doconut App が解決する方法 |
|---|---|---|
| プラグイン依存 | ユーザーはブラウザプラグインをインストールまたは有効化する必要があり、サポートチケットやコンプライアンス上の課題が増加します。 | Doconut は HTML5/Canvas のみで動作し、プラグインなしで実現します。 |
| 暗号化されていない転送 | ファイルが HTTP 経由で送信されたり、平文で保存されたりして、GDPR、HIPAA、社内ポリシーに違反します。 | すべてのアップロードは SSL 経由で行われ、AES‑256 暗号化で保存されます。 |
| ライフサイクル管理の欠如 | ファイルがサーバー上に残存し、侵害リスクが高まります。 | Doconut は閲覧後に 自動でファイルを削除 し、保持期間を最小限に抑えます。 |
ビューアは JavaScript コンポーネントとして提供され、Doconut の安全なレンダリングサービスと通信するため、.NET スタックはクリーンに保たれます。追加のネイティブライブラリやサードパーティバイナリ、追加のコンプライアンス監査は不要です。
2. .NET プロジェクトの準備 – ASP.NET Core、MVC、WebForms 共通の最小構成
ASP.NET Core、MVC 5、WebForms のいずれを使用していても、準備手順は同一です:
-
Doconut スクリプトバンドルを追加
Doconut は CDN 上に軽量ビューアスクリプトをホストしています。レイアウトページ(例:_Layout.cshtmlやSite.Master)に次の行を追加してください:<script src="https://doconut.app/viewer.min.js"></script> -
プレースホルダー要素を作成
ビューアは指定した<div>内にキャンバスを注入します。Razor の例:<div id="docViewer" style="width:100%; height:800px;"></div>WebForms では
runat="server"を付与した<asp:Panel ID="docViewer" runat="server">を配置します。 -
Doconut CSS を参照(任意)
デフォルトのツールバーとテーマを使用したい場合は、次の CSS を追加してください:<link rel="stylesheet" href="https://doconut.app/viewer.min.css" />
以上で静的アセットは完了です。残りはサーバー側コード(アップロード、暗号化、トークン生成)と、クライアント側の小さな初期化スクリプトで行います。
3. 安全なアップロードエンドポイントの構築 – AES‑256、SSL、そして自動削除
ビューアはファイルシステム上のファイルに直接アクセスしません。代わりに、一時的な暗号化ストレージ にドキュメントをアップロードし、Doconut がオンデマンドで読み取ります。以下は ASP.NET Core 向けのハイレベルな手順です。MVC と WebForms でも同様の考え方が適用できます。
サーバー側ワークフロー
- アップロードされたファイルを受け取る – 標準の
IFormFile(WebForms ではHttpPostedFile)を使用してクライアントからドキュメントを取得します。 - AES‑256 で暗号化 – ストリームを永続化する前に、
System.Security.Cryptography.Aesなどの実績あるライブラリで暗号化します。暗号化ブロブは Azure Blob Storage(サーバー側暗号化有効)や SSE‑AES256 対応の S3 バケットに保存します。 - 短時間有効な署名付き URL を生成 – 数分(例: 5 分)だけ有効な HTTPS URL を作成し、暗号化ブロブへのアクセスを許可するトークンを含めます。多くのクラウドストレージが「プリサインド URL」機能を提供しています。
- 署名付き URL をクライアントに返す – JSON 応答に URL を格納して送信します。クライアントはこの URL を Doconut ビューアに渡します。
- 自動削除をスケジュール – 署名付き URL の有効期限が切れた後、バックグラウンドジョブ(Hangfire、Azure Functions など)で暗号化ブロブを削除し、ファイルがサーバーに残らないようにします。
MVC / WebForms の同等実装
- MVC – 同様のロジックをコントローラアクションに配置し、
JsonResultを返します。 - WebForms –
.ashxハンドラまたはページメソッドで同様の手順を実装し、Request.Files[0]を受け取り、暗号化・署名付き URL 生成・JSON 応答を書き出します。
ルーティング構文の違いだけで、セキュリティフローは全く同じです。
4. Doconut ビューアの描画 – URL からブラウザ内キャンバスへ
クライアントが署名付き URL を受け取ったら、次の JavaScript 呼び出しでビューアを起動できます。Doconut の SDK がストリーミング、描画、UI 操作を自動的に処理します。
<script>
// `response.viewerUrl` にアップロードエンドポイントから返された署名付き URL が入っていると仮定
function launchViewer(viewerUrl) {
// Doconut ビューアを初期化。スクリプトが提供するグローバルオブジェクトは `DoconutViewer` です。
DoconutViewer.init({
containerId: "docViewer", // 先ほど配置した <div>
fileUrl: viewerUrl, // 暗号化ファイルへの署名付き HTTPS URL
toolbar: true, // 標準ツールバーを表示
theme: "light" // 任意のビジュアルテーマ
});
}
// アップロード成功後の例
fetch("/api/document/upload", {
method: "POST",
body: myFormData,
credentials: "include"
})
.then(r => r.json())
.then(data => launchViewer(data.viewerUrl));
</script>
なぜすべての .NET バリエーションで動くのか
- ASP.NET Core Razor – ビューに同じスクリプトを埋め込めばシームレスに動作します。
- MVC –
@section Scriptsに同様のスニペットを挿入し、$.ajaxで取得した JSON をlaunchViewerに渡します。 - WebForms – アップロード完了後に
ClientScript.RegisterStartupScriptでスクリプトを登録し、同様にlaunchViewerを呼び出します。
署名付き URL から直接ストリーミングするため、アップロード以降サーバーはファイルに触れません。PDF、Word、CAD など 50 以上のフォーマットが 追加のサーバー側変換なし で描画されます。
5. ブランドに合わせたビューアのカスタマイズ – オンラインファイルビューアの微調整
企業はビューアを自社ポータルの一部として自然に見せたいことが多いです。Doconut App の 完全カスタマイズ可能 な UI では次のような調整が可能です:
| カスタマイズ項目 | .NET での適用方法 |
|---|---|
| ツールバーのレイアウト | toolbar: false を指定し、zoomIn()、print() などのビューア API を呼び出す独自ボタンを実装します。 |
| カラースキーム | theme: "dark" を設定するか、デフォルトクラスを上書きするカスタム CSS を提供します。 |
| 言語とアクセシビリティ | コンテナの lang 属性を設定すれば Doconut が自動的に言語を切り替えます。accessibility オプションで ARIA ラベルを注入可能です。 |
| イベントフック | onPageChange、onError、onDownload などのコールバックで使用状況を既存のテレメトリパイプラインに送れます。 |
これらのフックは前節の JavaScript オブジェクト内で同様に設定します。ビューアはクライアント側だけで完結するため、サーバー負荷は増加しません。.NET バックエンドは認証・暗号化・ビジネスロジックに集中できます。
6. パフォーマンスとスケーラビリティ – 体感をスムーズに保つ
高トラフィックポータルにビューアを埋め込むと、ロード時間 と 同時レンダリング の 2 つの実務的課題が浮上します。Doconut App はこれらを標準で解決しますが、.NET 固有の工夫でさらに性能を引き上げられます。
| 課題 | Doconut の組み込み利点 | 追加の .NET ヒント |
|---|---|---|
| 初回ダウンロード | ビューアスクリプトは圧縮で約 150 KB。 | 静的ファイル圧縮 (app.UseResponseCompression()) と キャッシュ (Cache‑Control: public, max‑age=31536000) を有効化。 |
| ファイルストリーミング | Doconut は HTTP Range リクエストで必要ページだけをストリーミング。 | 暗号化ブロブを リージョナル CDN(Azure Front Door、Amazon CloudFront)に配置し、レイテンシを削減。 |
| 同時ユーザー数 | 描画はクライアント側で行われ、サーバーは署名付きファイルを一度だけ提供。 | IApplicationRateLimiter で アップロードエンドポイント をスロットリングし、スパイクから保護。 |
| メモリフットプリント | サーバー側で PDF 変換ライブラリを使用しないため、ASP.NET プロセスは軽量。 | アップロード処理を 別マイクロサービス に分離すれば、既存のバックグラウンドジョブキューを活用可能。 |
上記指針に従えば、既存の .NET Web 層を大幅に拡張せずに数千人規模の同時ビューア利用を支援できます。
キー・テイクアウェイ
- Doconut App は プラグイン不要、100 % 安全 なビューアを提供し、ASP.NET Core、MVC、WebForms すべてで動作します。
- アップロードは SSL のみ、AES‑256 暗号化 で保存され、署名付き URL の有効期限切れ後に自動削除されます。
- 必要なのは CDN スクリプト、コンテナ
<div>、署名付き URL を返す小さなサーバー側エンドポイントだけです。 - PDF、Office、CAD、その他 50+ フォーマット をサーバー側変換なしで表示できます。
- UI は 完全にカスタマイズ可能 で、ズームや測定、CAD 用レイヤーツールなども組み込み済みです。
- パフォーマンスはクライアント側で処理され、.NET 開発者は認証・暗号化・ビジネスロジックに集中できます。
よくある質問
Q1: Doconut を使用するために NuGet パッケージをインストールする必要がありますか?
A: いいえ。ビューアは Doconut の CDN から配信されるクライアントサイド JavaScript バンドルだけです。サーバー側で必要なのは、通常の ASP.NET Core のファイルアップロードと暗号化ミドルウェアで、ほとんどの場合既にプロジェクトに組み込まれています。
Q2: Doconut はファイルを閲覧後にどのように削除しますか?
A: Doconut は数分間だけ有効な署名付き URL を生成します。URL の有効期限が切れた後、バックグラウンドジョブ(Hangfire、Azure Functions など)で暗号化ブロブを削除します。これにより、厳格なデータ保持ポリシーを満たすことができます。
Q3: ビューアから印刷やエクスポートは可能ですか?
A: はい。Doconut の標準ツールバーには印刷およびエクスポート機能が組み込まれており、元ファイルの品質とレイアウトをそのまま保持したまま出力できます。
安全でプラグイン不要なドキュメントビューアを .NET アプリに埋め込む準備は整いましたか? 今すぐ Doconut App を導入し、PDF、Office、CAD、その他多数のフォーマットを安全かつ即時に提供しましょう。