2

シンプルなクライアント サーバー アプリケーションを作成しました。サーバーに変更を加えるときは、サービス参照を削除して再作成し、サーバー アプリケーションに加えた変更を反映します。

サーバー アプリケーションに変更を加えるたびに再作成する必要がありますか、またはサービス参照を自動的に更新する方法はありますか?

ありがとう

4

3 に答える 3

2

基本的な答えはおそらく「はい」です。

WCF と分散アプリケーションの利点は、クライアントとサーバーが別々に進化できることです。新しいバージョンのサービスを利用するようにクライアントを更新することは、意識的に選択する必要があります。

もちろん、開発中はこれが苦痛になる場合があります。この問題を軽減するにはいくつかの方法があります。

  • Visual Studio を使用してサービス参照を管理します。サービスを更新した場合は、右クリックして [サービス参照の更新] を選択するだけです。それほど手間はかかりません。
  • テスト駆動型アプローチを使用してサービスを作成します。これにより、クライアントがアクセスする必要なく、サービスのビジネス ロジックを実行することに集中できます。「青信号」を取得したら、クライアントを作成します。このアプローチにより、クライアントを更新する必要がある回数が最小限に抑えられます。
  • svcutilの使用を自動化して、必要なときに新しいクライアント側コードを作成します。

確かにもっと多くの(そしておそらくもっと良い)アプローチがありますが、これらはすでにあなたを助けるかもしれません.

于 2012-10-22T20:58:18.820 に答える
2

場合によります、

既存の機能を変更せずに機能を追加するだけで、クライアントが新しい機能を必要としない場合、答えは No です。

これは、「IsRequired」DataMember 属性プロパティの背後にある考え方です。データ コントラクトに新しいフィールドを追加し、それを IsRequired = false としてマークすると、既存のシステムは古いコントラクトを使用してサーバーとやり取りできます。

明らかに、新しいメソッドを追加しても古いコントラクトが壊れることはありません。クライアントは新しいメソッドについて知りません。

于 2012-10-22T23:10:20.607 に答える