同じソリューションに、サービスとコンシューマー アプリの 2 つのプロジェクトがあります。サービスには、コンシューマー アプリによってインスタンス化できる多くのクラスがありますが、一部のクラスにはアクセスできません。名前以外の違いはありません。すべてのクラスはすべて Public であるため、すべてが表示されます。問題がこのように動作する原因となる可能性のあるバッファリングの問題やその他の何かがありますか?
3 に答える
WCF またはその他の Web サービス/削除テクノロジを使用する場合、コンシューマーはサーバー クラスにアクセスできません。代わりにプロキシ クラスが作成されます。アプリの境界を越えてメソッドを呼び出すことができるインターフェイスのセットと考えてください。プロキシ クラスをインスタンス化できますが、メソッドを呼び出すと、プロキシ クラスはサービスに移動し、サービスによってホストされるクラスの対応するメソッドを呼び出します。
クラス ライブラリを使用し、共有クラスをそこに移動する必要があります (サービスとコンシューマで dll を展開する) 両方の当事者がそれらを使用する場合。
更新 (razlebe に感謝):
ビジネス ロジックは DLL で共有されるべきではありません。サーバーでホストする必要があります。ただし、コードの重複を避けるために、サポート クラス (データの書式設定を行うクラスなど) を共有することは理にかなっています。
私の推測では、「アクセスできない」クラスは、プロキシの最後の世代(サービスのクラス、クライアント側)の後に作成されたと思います。プロキシの再生成が役立つかどうかを確認します。
サービスクラスを更新し、次の方法でインターフェイスを変更する場合:
- メソッドの追加(あなたの場合)
- メソッドの削除
- 署名の変更
あなたの消費者は変化について学ぶ必要があります。プロキシを再構築するには、サービスリファレンス(http://msdn.microsoft.com/en-us/library/bb628652.aspx )を更新する必要があります。
それを更新する方法は?
方法については、こちらを確認してください:http: //msdn.microsoft.com/en-us/library/bb628652.aspx)しかし、1つの画像は1000語よりも優れています。