堅牢な非同期/非同期 API の構築
ネットワーク I/O を処理する再利用可能なライブラリを開発するには、多くの場合、非同期 (async) メソッドと同期 (非非同期) メソッドの両方を提供する必要があります。 単純に Wait()
を使用して非同期バージョンから同期バージョンを作成するのは非効率です。この記事では、API 設計の整合性を維持しながら両方のオプションを維持するためのソリューションを紹介します。
非同期の優先順位付け: 最良のアプローチ
最適な保守性を実現するには、非同期メソッドのみを使用して API を設計することを検討してください。これにより、コードの重複が排除され、一貫性が促進されます。 不必要なスレッド プールの使用を回避し、パフォーマンスを確保するには、非ブロッキング操作を使用してこれらの非同期メソッドを実装します。
非同期/非同期のトレードオフをナビゲートする
非同期メソッドと非同期メソッドの両方を提供すると、メンテナンスに大きな課題が生じます。 コードの重複は望ましくなく、(Stephen Toub が説明したように) あるメソッド タイプを別のメソッド タイプで単純にラップすることは理想的な解決策ではありません。
「ブール引数ハック」: 実用的な解決策
コードの重複を避けるための実用的なテクニックは、「ブール引数ハック」です。 これには、同期動作が必要か非同期動作が必要かを示すブール値パラメータをメソッドに追加することが含まれます。 その後、メソッドの内部ロジックが両方のシナリオを処理します。
このアプローチでは、ある程度の複雑さが加わりますが、個別の実装を管理する場合と比較して、メンテナンスのオーバーヘッドが大幅に削減されます。 このハックが適切かどうかは、特定のコンテキストと、保守性と API 設計の優雅さの間のバランスによって決まります。
以上が非同期オプションと非同期オプションの両方を備えた適切に保守された API を設計するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。