2012-02-07 13 views
1

現在、バックエンドシステムを作成しており、WCFを通じてメソッドのレイヤーを提供する予定です。 [WCFEnabled]などの属性を読み込んでリフレクションすると、特定のWCFチャネルを介して利用可能なメソッドを利用できるようになるツールがありますか?WCFサービスをリフレクションによって自動的に生成します。

たとえば、WCFサービスのItemServiceを想像してみてください。 Itemクラスには、 "AddItem"という名前のメソッドがあります。 [WCFEnabled]を追加すると、そのメソッドはItemServiceのコンパイル時に利用可能になります。

答えて

2

Erm。 [OperationContract]

しかし、これらがクラスメソッドで動作するかどうかは不明ですが、通常はそれらはインターフェイスメソッドに置かれ、クラスはインターフェイスを実装します。

+0

OperationContract属性は、まったく同じクラスメソッドに対して機能します。 –

+1

これはWCFを通常どおりにコーディングする方法です。インターフェイスを作成し、署名の上に外の世界で利用可能なメソッドを割り当てます。 しかし、私はあなたのクラスライブラリ内のエンティティを設計するときに、WCFを通じてアクセス可能にするメソッドを定義することになります。 次に、別のプロジェクトがエンティティを動的に通過し、どのエンティティが公開されるのかを確認し、WCFエンドポイントを自動的に作成します。したがって、WCFコードを記述する必要はなく、チャネルに公開するメソッドを割り当てるだけです。 – Mez

0

T4テンプレートを使用してサービスインターフェイス、実装、およびクライアントプロキシを構築することで、同様のことを行っています。

T4テンプレートは、サービスプロジェクトを解析し、カスタム属性で装飾されたすべてのメソッドを抽出します。次に、検出された各サービスの実装クラス/インタフェースを持つsvcファイルを作成します。また、クライアントプロキシも作成します。

+0

ありがとうWouter de Kort、私はそれが前進する方法であるように見えるからです。私たちのシナリオに似た、見つかったサンプルをたどったのですか? 私はhttps://github.com/davidalpert/TestableWCFSampleを見ています – Mez

+0

@StephenBorg私はパーティクルの例を追っていませんでした。私は手でプロキシコードを書いて(Add Service Referenceが追加するすべてのbagegeを使わずに)どこにステップを進めてから、サービスインターフェイス、SVCファイル、サービス実装のT4テンプレートを作成しました。プロキシ全体は実際のサービスコードを呼び出すWCFラッパーであるため、実装が簡単です。 –

関連する問題