当社のソフトウェアのサービスレイヤーのバージョンが異なるクライアントがあります。新しいサービスコンポーネントには、古いサービスコンポーネントにはない機能がいくつかあります。私たちはすべてのクライアントに提供したい新しいプレゼンテーション層に取り組んでいます。これは、古いサービスを持つクライアントでは機能しますが、クライアントが最新のサービスレイヤを実行している場合は、新しい機能にアクセスできます。サービスレイヤバージョン間の機能の差異の処理
可能性のある機能の違いについてifステートメントを使用してコードを浪費しないようにしたいと思います。特に、サービスレイヤに新しい機能を追加してサポートし続ける場合は特にそうです。どのようなデザインパターンがあれば、この違いを最もきれいに処理するために提案するでしょうか?
素晴らしい提案のためにアップしてください。私は、ビューとコントローラがバージョン番号や異なるリポジトリ機能について何も知らないソリューションを期待しています。リポジトリの依存関係を私たちのコントローラに注入するので、我々はそれを私たちのDIフレームワークに任せて、どんなバージョンが当っているのかを知ることができます。 – traffichazard
同じアプローチは、バージョン番号の代わりに必要なインターフェイスまたはプロパティ名を使用しても動作します。複数の機能をチェックする必要がある場合は、フィルタ属性メソッドを使用する必要があります。ビューの場合、RenderActionとRenderPartialの間に何かを設定することができます - アクションメソッドを呼び出してフィルタ属性をチェックできるようにしますが、モデルはアクションによって生成されるのではなくパラメータとして渡されます。 –