2010-11-24 21 views
0

コーダー、私は自分のCMSのプロトタイプを設計/実装しています(はい、両方同時に)。私はAsp.net、WCF、およびSilverlightを使用します。Asp.net + Silverlight + WCFとn-tierアーキテクチャ

プレゼンテーション層[Silverlightの& Asp.net/html]> WCF>ビジネスロジック>データベースの私のモデルの目標は限り、それは簡単にすることです

:これまでのところ、私は私のプロジェクトのために、次のモデルを持っています将来のアプリケーションです。私のWCFサービスを利用できるアプリケーションからアプリケーションにアクセスすることは可能です。

残念ながら、私はモデルを実装するのが難しいです。私が私の溶液中で3つのプロジェクトを持っている場合ように私には見える:

ソリューション:

  • -Asp.net [プレゼンテーション層]
  • -Silverlight [プレゼンテーション層]
  • -WCF [WCFビジネスロジック]

次に、プレゼンテーションレイヤーと私のWCFレイヤーの両方で多くのクラスを複製する必要があります。

ここにシナリオがあります。私のBLの実装であるWCFに投稿クラスがあるとしましょう。 client.AddPostAsync(post parameters)のような行を使って、私のサービス参照のクライアントインスタンスを作成した後、私のPLから新しい投稿を追加することができます。しかし、WCFメソッドを呼び出すことによってPL内のPostオブジェクトを取得したい場合、私のWCFのPostクラスとまったく同じコピーである私のPLにPostクラスの実装を既に持っている必要があります!

このように、長期的には、私はWCFレイヤーと私のPLの両方で多くのクラスの重複を終わらせます。私は理解できないことがある、あるいは私のモデルで何かを乱しているかもしれないと感じていますか?助けてください!

+2

プレゼンテーションレイヤーにサービス参照を追加すると、すべてのデータコントラクトが生成されます。それらを再度定義する必要はありません。私が何かが欠けているなら、WCFメソッドの完全なプロトタイプを与えることができますか? – Andrew

答えて

0

実際には、SilverlightのWCFサービスからクラス(DataContract属性付き)を複製する必要はありません.WCFサービスへのServiceReferenceを作成すると自動的に作成されます。

これらは非常に単純に基本的にデータ格納フィールドクラスになるので、後ろにロジックが必要な場合は、Silverlightでいくつかの機能重複を作成することができます。私は自分のプロジェクトで同じモデルを使用していますが、この問題もあります。

これを知っているあなたのアーキテクチャを前もって計画し、それらのWCF継承クラスを大量のクラスの重複を避けるためにますますDataTransferObjectパターンクラスのように見えるようにする必要があると思います。

+0

私が気付いたことの1つは、client_GetPostsCompleted(..)メソッドでイベントハンドリングex)を設定した後でしかクラスを呼び出せないことです。これは正しいです? – ealshabaan

+0

私は理解していないと思いますが、より大きなコードスニペットを提供できますか?コールクラス、つまりどのクラスを意味しますか? –

関連する問題