私はこの構造のC#ソリューションを持っています:
- プロジェクト1:Daoが含まれています(複数を含めることができます)
- プロジェクト2:インターフェースが含まれています(1つのみ)
プロジェクト3:独自のインターフェイスを備えたwcfサービス
プロジェクト1のdaoは、プロジェクト2のインターフェースを実装します。
- プロジェクト3のwcfサービスインターフェイスは、プロジェクト2のインターフェイスを実装/継承/エンテンドします。
私が抱えている問題は、プロジェクト2のインターフェースが私のdaoクラスを記述するために必要なことです。プロジェクト3のwcfサービスで使用できる関数を記述するためにwcfインターフェースが必要です。daoのすべての関数を公開する必要があるため、wcfインターフェースにあるwcf属性を除いて、2つのインターフェースはまったく同じです。 wcfサービスファイルも。実装、つまりdaoクラスは変更/スワップアウトできますが、常に同じ構造に従う必要があるため、インターフェイスが必要です。wcfインターフェースに実装しようとすると、これら2つのインターフェースは同一になり、派生元のインターフェースのすべてのメソッドを効果的にオーバーライドする必要があると言われます。これは正しいことですか?wcfインターフェースは、プロジェクト2のインターフェースを実装して、daoから必要なすべての機能(すべて)を提供する必要があります。
以前、私はプロジェクトを次のように設定していました。
- プロジェクト1:daoが含まれています
- プロジェクト2:wcf属性を持つインターフェースも含まれています
- プロジェクト3:インターフェイスは含まれていませんが、wcfサービスのみが含まれています
daoとwcfサービスの両方がプロジェクト2から同じインターフェイスを実装しました。インターフェイスにwcf属性があると、daoで使用したときに悪影響がありますか?私が抱えている問題の1つは、wcfインターフェースには、基本インターフェースにはない追加の機能が最終的に含まれる可能性があるため、この以前の構造は間違っていたと思います。真実は私にはわからないと言われています。
私はおそらくそれをあまり明確に説明していないことを知っています、そして実際にはここに2つまたは3つの質問が含まれていますが、それはそれを伝えるための最良の方法です。私の3つの主な質問は次のとおりだと思います。
- どの継承/実装構造が最適で、その理由は何ですか?
- 通常のクラスでwcfサービスによって使用されるのと同じインターフェイスを実装すると、悪影響があります(wcf属性、つまり[ServiceContract]、[OperationContract]によって引き起こされます)。
- 基本インターフェースによって提供されるすべてのメソッドをオーバーライドすることは正しいでしょうか?