4

サービス プロキシ クラスでうまく機能する命名戦略を持っている人はいますか?

たとえば、次のように 2 つのプロジェクト内に 3 つの Web サービスが与えられたとします。

XWs
  AService.asmx
YWs
  BService.svc
  CService.svc

AServiceBServiceおよびのサービス参照名および名前空間として何を使用しCServiceますか?

一般に、プロキシの名前/名前空間に、使用されているものが具体的なクラスではなく、プロキシを表していることを示すものが必要です-両方とも、具体的なクラスの使用と衝突しません[そしてエイリアスまたは名前空間の使用を強制します-修飾されたクラス名]、したがって、ホップが発生しているという事実を隠していません (クライアントの Wcf サービス プロキシ ジェネレーターの既定のサフィックスがそれをカバーしていると思います)。また重要なことは、呼び出しの[サブセット]セットを別の参照されたサービスに転送するラッパー/シム サービスを作成している場合に対処することです。

私はさまざまなスタイルを使用してきました (、、、または接尾辞を追加Wsしますか? 前に を付けますServiceProxy)が、それらに完全に満足したことはありません。RefProxyServiceName.

あなたにとってうまくいったことは何ですか?命名スタイルを参照するスタイルガイドはありますか?

編集:Cheesoの回答は私の質問の大部分をカバーしていますが、私はまだ回答を聞くことに興味があります:

  1. 上記の例のような名前空間プロキシ クラスの戦略
  2. プロキシの命名戦略について言及しているスタイル ガイド
4

2 に答える 2

2

私はもともとServiceNameProxyやServiceNameSvcProxyのような名前を使用ていました。しかし、あなたのように、私はそれらの名前に特に満足していませんでした、そしてその結果、私はそれらに固執しませんでした。今、私はServiceNameServiceまたはServiceNameSvcに頼っています

クラスがプロキシであることをクラスのユーザーに伝えたい重要なことはありますか?プロキシクラスと具象クラスを区別しているのは、ワニのようです。コンクリートの反対は抽象的ですよね?そして、svcutil.exeによって生成されたプロキシクラスは、実際には具体的です。

命名規則では、プロキシクラスがリモートサービスと通信することを示していると思います。(これを「プロキシ」と呼ぶときは、何か、この場合はリモートサービスの前にあることを示します。)その場合は、ServiceNameServiceまたはServiceNameConnection、あるいは同様の線に沿ってみませ?System.Data.OleDb.OleDbConnectionまたはSystem.Data.SqlClient.SqlConnectionのように。

私が選んだ命名規則はそれに沿ったものです。これは、クラスがリモートであると想定されるサービスを表すことを示します。それがサービスへのプロキシであるという事実を強調することはあまり気にしません。実用的な目的のために、それがサービスであるという事実は重要なことです。

于 2009-05-29T16:26:59.200 に答える
1

ここでもオプションを検討しています。Miguel Castro によるこの記事を読みました。彼は、サービス、サービス ホスト、データ コントラクト、およびサービス コントラクトを分離することを推奨しています。私は主に、すべてのサービス コントラクトを別のコントラクト名前空間に保持するか、またはそれらを別のコントラクト名前空間に保持するかを決定しようとしています。各サービスの名前空間。それらを独自の名前空間に分離する理由は、他のサービスがそれらを使用した場合、より中立的な場所にあるためです。

たとえば、次のようになります。

companyname.services.contracts.service1contract
companyname.services.service1

またはこれ:

companyname.services.service1
companyname.services.service1contract
于 2010-03-12T02:07:50.967 に答える