プラグイン不要のドキュメントビューアを、ユーザーに何もインストールさせることなく、ASP.NET Core、MVC、または WebForms アプリケーションに埋め込むことができます。
契約書、図面、設計資産などを提供する企業は、企業のセキュリティポリシーを遵守し、レガシーブラウザプラグインのインストールをユーザーに強制しないビューアが必要です。Doconut は、ブラウザ上での PDF、Office、CAD、メール、画像ワークフロー向けの .NET ドキュメントビューア SDK を提供します。これは呼び出すタイプのホストサービスではなく、独自のアプリケーションにインストールしてそこでレンダリングします。本稿では、バージョン固有のサンプルコードに依存せずに統合の判断ポイントを概説します。
まず最初に、2 つの製品は混同しやすいため明確にしておきます。Doconut.app は無料のウェブビューアで、1 ファイルをブラウザタブで開き、後で削除されます。埋め込む対象ではありません。埋め込むのは Doconut Viewer(SDK)であり、以下の内容はすべてそれに関するものです。

1. .NET Web アプリにおけるセキュリティとプラグイン不要レンダリングが重要な理由
現代の企業はすべてのドキュメントを潜在的な情報漏洩リスクとみなします。ActiveX、Flash、またはネイティブクライアントに依存するビューアを埋め込むと、次の 3 つのリスクが生じます。
| リスク | .NET アプリケーションへの影響 | Doconut App が解決する方法 |
|---|---|---|
| プラグイン依存 | ユーザーはブラウザプラグインをインストールまたは有効化する必要があり、サポートチケットやコンプライアンス上の問題が発生します。 | Doconut は完全に HTML5/Canvas 上で動作し、プラグイン不要です。 |
| 暗号化されていない転送 | ファイルが HTTP 経由で送信されたり平文で保存されたりし、GDPR、HIPAA、または社内ポリシーに違反します。 | SDK はアプリケーション内部で実行されるため、転送と保存は既存の TLS および暗号化ポリシーの下に留まります。Doconut は新たな中継を追加しません。 |
| 管理されていないライフサイクル | ファイルがサーバー上に残存し、侵害リスクが拡大する可能性があります。 | 保持期間は利用者が設定できます。ドキュメントは環境から出ないため、テンポラリなレンダリング出力は設定した場所に書き込まれ、スケジュールに従って削除されます。 |
重要なアーキテクチャ上の事実は、SDK が自分の環境にインストールされ、Doconut サーバーへ一切呼び出しを行わないことです。データは当社にアップロードされないため、データマップに追加すべき第三者プロセッサや、ベンダーの保持ポリシーと自社のポリシーを照合する必要はありません。
2. .NET プロジェクトの準備
プロジェクトで選択した Doconut バージョンに合わせたパッケージ、ドキュメント、サンプルを使用してください。公式のDoconut ダウンロードページが信頼できる出発点です。
統合前に、対象の .NET ランタイムを確認し、パッケージバージョンを記録し、ライセンス設定をソース管理外に保管し、代表的なドキュメントでテストを開始してください。ASP.NET Core、MVC、WebForms はそれぞれ異なるアプリケーションライフサイクルを持つため、設定を同一視してはいけません。
3. 安全なアップロードエンドポイントの構築 – AES‑256、SSL、そして自動削除
SDK は、物理パス、ストリーム、バイト配列、データベース、URL、イントラネットの場所、または S3、Azure Storage、Google Cloud、Dropbox などのクラウドプロバイダーからドキュメントを読み取ることができます。ブラウザが選択したパスを読み取ることは決して行ってはいけません。リクエストとドキュメントの間に認可チェックを配置し、ソースが何であれ同様に扱います。以下は ASP.NET Core における一般的なエンドポイントの形です。MVC や WebForms でも同様の考え方が適用されます。
サーバー側ワークフロー
- アップロードされたファイルを受け取る – 標準の
IFormFile(WebForms ではHttpPostedFile)を使用してクライアントからドキュメントを受信します。 - AES‑256でファイルを暗号化 – ストリームを永続化する前に、
System.Security.Cryptography.Aesなどの実績あるライブラリを使って暗号化します。暗号化されたブロブは安全な場所に保存します(例:サーバー側暗号化が有効な Azure Blob Storage、または SSE‑AES256 を使用した S3 バケット)。 - 短期間有効な署名付き URL を生成 – 数分(例:5 分)有効な URL を作成します。URL は HTTPS で、Doconut が検証できる暗号トークンを含める必要があります。ほとんどのクラウドストレージプロバイダーは、このニーズに合う「プリサインド URL」機能を提供しています。
- 署名付き URL をクライアントに返す – URL を含む JSON 応答を送信します。クライアントはこの URL を Doconut ビューアに渡します。
- 自動削除をスケジュール – 署名付き URL が期限切れになった後、バックグラウンドジョブ(Hangfire、Azure Functions など)が暗号化されたブロブを削除し、ファイルがサーバーに残らないことを保証します。
MVC / WebForms の等価実装
- MVC – 同じロジックを通常のコントローラーアクション内に配置し、
JsonResultを返します。 - WebForms – 同じ手順を実行する
.ashxハンドラまたはページメソッドを実装します:Request.Files[0]を受信し、暗号化し、プリサインド URL を生成し、JSON 応答を書き出します。
唯一の違いはルーティング構文だけで、セキュリティワークフローは同一です。
4. インストール済み SDK を使用してドキュメントをレンダリングする
ドキュメントへのアクセスはサーバー側で保持し、ファイルやストリームを処理する前に認可を強制します。正確なレンダリングおよび UI 初期化シーケンスはバージョン固有ですので、未検証のグローバル JavaScript API をコピーするのではなく、インストールされたビルドに同梱されている公式ドキュメントに従ってください。
これがすべての .NET 系列で機能する理由
- ASP.NET Core Razor – 初期化はアップロードフォームをホストする同じビュー内にあり、考慮すべきページは 1 つだけです。
- MVC –
@section Scriptsを使用して同じスニペットを注入します。コントローラーは MVC の$.ajaxが利用できる JSON を返します。 - WebForms – アップロード完了後に
ClientScript.RegisterStartupScriptでスクリプトを登録し、同様にlaunchViewerを呼び出します。
レンダリングはサーバー側で行われることがポイントです。ブラウザーはソースドキュメントではなくレンダリングされたページを受け取ります。そのため、AutoCAD も Photoshop もインストールされていないマシンでも DWG や PSD が開けます。サーバーはそれに見合うスペックにしてください — 300 ページのスキャン PDF は実際に負荷がかかりますが、現在はその処理をあなたのティアが担います。
5. ビューアをポータルに合わせてカスタマイズする
企業は通常、ビューアが他社のウィンドウではなく、自社製品の一部のように見えることを求めます。ビューアの外観や提供するコントロールは設定可能で、利用できるオプションはインストールしたビルドに依存します。
オプション名はブログ記事ではなく、使用しているバージョンに同梱されているドキュメントから取得してください。ビューア設定はリリース間で名前が変わりやすく、2 バージョン前の記事からコピーしたスニペットはライセンス問題のように見えるエラーを引き起こします。
そのドキュメントを開く前に決めるべきことは、各ロールがどのコントロールを見るべきかです。ユーザーが印刷できるか、ダウンロードできるか、あるいはドキュメントをページめくりだけできるかは、アプリケーションが既に把握している権限の問題です。その回答に基づいてビューアを設定し、すべてのコントロールを露出させて誰もクリックしないことを期待しないでください。
6. パフォーマンスとスケーラビリティ – 体感をスムーズに保つ
高トラフィックのポータルにビューアを埋め込むと、実務的に ロード時間 と 同時レンダリング の 2 つの懸念が生じます。Doconut App はこれらを標準で対応していますが、.NET 固有のテクニックでパフォーマンスをさらに強化できます。
| 懸念事項 | 対策 |
|---|---|
| 最初のページ遅延 | ページの自動読み込みにより、残りが準備中でも読者は最初のページを閲覧できます。静的ファイル圧縮(app.UseResponseCompression())を有効にし、クライアント資産をキャッシュしてください。 |
| 同一ファイルの繰り返し閲覧 | 頻繁に開かれるドキュメントは一度だけレンダリングし、リクエストごとに再レンダリングする代わりにキャッシュされた出力から提供できます。FAQ ではこのための .DCN オプションが説明されています。 |
| レンダリングコスト | レンダリングはサーバー側の処理です。画質がそれほど重要でない場合は画像解像度を下げることが最も効果的な手段で、コード変更ではなく設定変更で対応できます。 |
| 同時実行性 | 負荷下でのタイムアウトと AutoClose 設定を見直し、単一ノードで対応できると想定する前にウェブファームの例を確認してください。アップロードエンドポイントにレートリミットを設定します。 |
自分のドキュメントで測定してください。5 MB のテキストベース PDF と同じレポートの 5 MB スキャンは全く異なる挙動を示し、合成ベンチマークに現れるのはそのうちの一方だけです。
主なポイント
- Doconut Viewer はプラグイン不要の .NET SDK で、ASP.NET Core、MVC、WebForms で動作します。ユーザーは何もインストールする必要がありません。
- それはお客様の環境にインストールされ、Doconut サーバーへの呼び出しは行わないため、ドキュメントは既に管理している境界内にとどまります。
- 輸送時のセキュリティ、保存時の暗号化、保持期間はすべてお客様が設定できます。ファイルはインフラを離れないため、Doconut がデータマップ上のプロセッサになることはありません。
- SDK カタログは 18 のファミリーにわたる 75 のファイル拡張子 をサポートしています — PDF、Office、CAD、Visio、Project、メール、eBook、画像、そして独自プラグインによる DICOM です。
- レンダリングはサーバー側で行われます。これによりブラウザーで DWG を開くことができ、サイズ調整の対象項目にもなります。
- ユーザーが見るコントロール(印刷、ダウンロード、ページングのみなど)は、アプリケーションが既に持っている権限に従うべきです。
- 設定オプション名は、インストールしたバージョンのドキュメントから取得し、記事からは取得しないでください。
よくある質問
Q1: サーバーに何かインストールしますか?
A: はい。Doconut Viewer はアプリケーションにインストールする .NET SDK です — ダウンロードページ から開始し、選択したバージョンのパッケージとドキュメントを使用してください。呼び出すホストエンドポイントはなく、Doconut CDN から配信されるものもありません。
Q2: 閲覧後にファイルを削除するのは誰ですか?
A: お客様です。ドキュメントおよび一時的なレンダリング出力はすべてお客様の環境に存在するため、保持期間はベンダーからの約束ではなく、アプリケーション側の設定になります。プロダクションに移行する前に、一時ファイルの書き込み先と削除方法を決定してください。
Q3: ユーザーはドキュメントを印刷できますか?
A: 印刷はビューアの機能であり、ユーザーごとに許可または制限できます。制御された印刷はビューア自体の一部であり、Annotation、Converter、DICOM、Search の 4 つのライセンスプラグインのいずれでもありません。
Q4: ドキュメントを別の形式に変換できますか?
A: それは別途ライセンスが必要な Converter プラグインです。閲覧と変換はここでは別々の製品であり、ワークフローで実際に必要なものを明確にする価値があります。
.NET アプリケーションにプラグイン不要のドキュメントビューアを埋め込む準備はできましたか?Doconut ダウンロードページ から開始してください — トライアルライセンスは無料です。また、今日 1 ファイルを開くだけが必要であれば、Doconut.app がブラウザタブでそれを実行し、終了後に削除します。