ドキュメントを数十、数百件変換することは、ペイロードが大きい単一のリクエストではありません。キューイング、制御された同時実行、ストレージ、リトライ、監視、そしてアプリケーション内で結果を確実に提示する方法が必要なワークフローです。
Windows と .NET で開発するチームにとって、Doconut はファイルが処理された後に埋め込み閲覧レイヤーを提供できます。この分離は重要です。変換サービスが出力を生成し、Doconut SDK がユーザーに自分の Web アプリケーション内でサポートされたドキュメントを表示させます。

変換と閲覧の役割を理解する
バッチ変換エンジンとドキュメントビューアは異なる問題を解決します:
- 変換レイヤー はソースファイルを受け取り、必要な出力を作成します。
- オーケストレーションレイヤー はキュー、リトライ、タイムアウト、ジョブステータスを管理します。
- ストレージレイヤー は入力および出力ファイルを必要な期間だけ保持します。
- 閲覧レイヤー は処理されたドキュメントをアプリケーション内に表示します。
これらの責務を分離することで、システムのスケールやトラブルシューティングが容易になります。また、コンバータやストレージプロバイダーを変更しても、ユーザー向けのドキュメント体験を再設計する必要がありません。
バッチ処理が重要な理由
- リソース使用の制御 — 変換は CPU、メモリ、ディスク容量を大量に消費します。キューにより同時に実行されるジョブ数を抑制できます。
- 信頼できるリトライ — 一時的なストレージやサービスの障害は、ユーザーに再アップロードを求めずにリトライできます。
- 明確なジョブステータス — 各ドキュメントは「キューイング中」「処理中」「完了」「失敗」など予測可能な状態を遷移します。
- 運用可視性 — 処理時間、失敗理由、ファイルサイズ、リトライ回数などをすべてのジョブで記録できます。
一般的なバッチ変換のボトルネック
| ボトルネック | 典型的な症状 | 実用的な緩和策 |
|---|---|---|
| 大きなファイル | アップロードがタイムアウトしたり、ワーカーがメモリ不足になる。 | 文書化されたサイズ制限を適用し、可能な限りストリーミングし、キューイング前にサポートされていない入力を拒否します。 |
| 長時間実行ジョブ | リクエストは上流プロキシが終了させるまで開いたままです。 | ジョブ識別子をすぐに返し、バックグラウンドワーカーでファイルを処理します。 |
| トラフィックスパイク | 多数のユーザーが同時にアップロードすると CPU とメモリ使用率が急上昇します。 | ワーカーの同時実行数を制限し、キューでバックプレッシャーを適用します。 |
| 一時的な失敗 | ストレージまたは変換の依存関係が短時間失敗します。 | 指数バックオフ付きの制限付きリトライを使用し、元のエラーを保持します。 |
| 無制限の保持 | 一時的なドキュメントが蓄積し、コストやリスクが増大します。 | ソースファイルと出力ファイルの両方にライフサイクルルールを定義します。 |
| サポートされていないまたは破損したファイル | ワーカーが同じ入力で繰り返し失敗します。 | 処理前に形式、サイズ、基本的なファイル整合性を検証します。 |
ホスト型変換エンドポイントが提供しない可能性のあるもの
変換プロバイダーを選定する前に、以下を確認してください:
- アプリケーションが必要とする複数の入力形式と特定の出力形式のサポート
- ファイルサイズやページ数の予測可能な上限
- 長時間の HTTP リクエストではなく非同期ジョブの提供
- リトライ安全または冪等性のあるリクエスト
- 地域別の処理と保持コントロール
- 詳細なエラーレスポンスと運用ログ
単一ファイル変換の無料ページは、実運用のバッチ API の代替にはなりません。受け入れ可能な制限を文書化し、キューをそれに合わせて設計してください。
実践的な Windows と .NET アーキテクチャ
1. キューイング前にバリデーション
宣言されたファイルタイプ、実際のファイルシグネチャ、サイズ、ビジネス固有の制限をチェックしてからジョブを作成します。拒否されたファイルには明確な理由を示し、過渡的な失敗として再試行されないようにします。
2. 永続的キューを使用
永続的キューはアップロードと変換を切り離します。Azure Service Bus、RabbitMQ、またはインフラがサポートする他のキューを利用して、Windows ベースの .NET ワーカー間で作業を分散させます。
メッセージは小さく保ちます。ドキュメントは保護されたストレージに保存し、キューにはジョブ識別子とストレージ参照だけを置きます。
3. 同時実行数を制限
ワーカーを増やすだけでスループットが上がるわけではありません。変換エンジンは CPU、メモリ、一時ディスク、フォント、ライセンスコンポーネントなどを競合します。保守的な同時実行数で開始し、実際のドキュメントを測定しながら、ホストが安定しているときにのみ増やします。
4. ジョブを冪等にする
メッセージは複数回配信される可能性があります。ワーカーはジョブがすでに完了していることを認識し、重複出力を生成しないようにすべきです。決定的な出力キーや完了状態を持つジョブレコードがこの保護を提供します。
5. 出力を安全に保存
保護されたオブジェクトストレージまたは他の管理リポジトリを使用します。保存時の暗号化を適用し、サービス権限を制限し、短命のアクセスが必要な場合は一時 URL を使用します。
6. 閲覧レイヤーを追加
処理が完了したら、アプリケーションは埋め込みビューアにドキュメントを提供できます。Doconut Viewer は、Web アプリケーションへのドキュメント閲覧統合を目的とした .NET ビューア SDK です。
ビューアはアプリケーションの認可フローを通じてドキュメント参照を受け取るべきです。永久的な公開 URL やストレージ認証情報をクライアント側のマークアップに露出しないようにしてください。
セキュリティとプライバシーの考慮事項
信頼境界内にファイルを保持する
ドキュメントのフルパスをマッピングします:アップロード、 一時ストレージ、 変換ワーカー、 出力ストレージ、 閲覧、 削除。各コンポーネントは必要最小限の権限だけを持つべきです。
データの転送と保存時の保護
アップロードおよび内部サービス呼び出しには HTTPS を使用します。ストレージ暗号化を有効にし、シークレットは構成ファイルではなくプラットフォームのシークレット管理サービスに保存します。
短期間の保持を使用
ソースファイル、変換後出力、一時ファイル、失敗ジョブそれぞれに個別の保持ルールを設定します。放置されたアップロードやワーカーのクラッシュもクリーンアップ対象に含めます。
ビューアコントロールは使いやすさの機能であり、絶対的な保護ではない
ダウンロードや印刷コントロールを隠すことで意図したワークフローを支援できますが、権限を持つユーザーが表示情報を取得できないことを保証するものではありません。機密アプリケーションは依然として認証、認可、監査コントロール、適切なドキュメントポリシーが必要です。
有用な監査データを記録
ジョブ識別子、タイムスタンプ、ステータス変更、処理時間、リトライ回数、サニタイズされたエラー詳細をログに残します。ドキュメント内容、署名付き URL、アクセストークン、不要な個人情報はログに含めないようにします。
信頼性の高いバッチの運用ヒント
各ドキュメントを個別に追跡
100 件のファイルを含むバッチが「成功」か「失敗」かの不透明な結果になるべきではありません。各ドキュメントを個別に追跡し、個々の結果からバッチ全体のステータスを算出します。
一時的エラーと永続的エラーを区別
タイムアウトや一時的なストレージ障害はリトライの対象です。暗号化されている、破損している、またはサポート外のファイルはユーザーの介入が必要です。永続的エラーをリトライすると容量が無駄になり、バッチ全体が遅延します。
明示的な制限を設定
最大ファイルサイズ、ページ数、バッチサイズ、処理時間を公開します。制限はサービスを保護し、顧客に予測可能な期待値を提供します。
完全なワークフローを測定
キュー待ち時間、変換時間、出力サイズ、ビューア可用性、失敗率、クリーンアップ成功率を監視します。変換速度だけではユーザー体験を語れません。
Doconut の位置付け
Doconut はこのアーキテクチャにおけるドキュメント閲覧コンポーネントとして最適です。 .NET チームが自社アプリケーションにドキュメント閲覧機能を埋め込む際に役立ちますが、アップロード、変換ジョブ、認可、ストレージ、保持は引き続きシステム側が担います。
このアプローチが有効になるシナリオ:
- ASP.NET アプリケーションに統合されたビューアが必要なとき
- PDF 以外のビジネスドキュメント形式もサポートしたいとき
- アプリケーション体験とドキュメントアクセスフローを制御したいとき
- 自社インフラ要件に合わせたデプロイモデルが必要なとき
最終的な設計を固める前に、Doconut のウェブサイト で最新の製品詳細、サポート形式、要件、統合リソースをご確認ください。
主なポイント
- バッチ変換は長時間の Web リクエストではなく、非同期ワークフローとして扱う。
- キューイング前にファイルを検証し、各ドキュメントを個別に追跡する。
- 同時実行数を制限し、ジョブを冪等にし、保護されたストレージと明示的な保持ポリシーを使用する。
- 永続的失敗とリトライ可能なエラーを区別する。
- 変換、ストレージ、アクセス管理はアプリケーションが担当し、埋め込み閲覧レイヤーとして Doconut を利用する。
.NET アプリケーションにドキュメント閲覧を追加する
Windows ベースの .NET アプリケーションで統合ドキュメントプレビューが必要な場合は、Doconut Viewer を検討し、利用可能なダウンロードとドキュメント を確認してください。