2009-05-18 8 views
2

私は最近WCFで始まりました(私は私が背後にあることを知っています:-))。問題はどのように構造化しなければならないかということです。WCFレイヤー

私はDAL、BL、プレゼンテーション層に慣れています。私はDALをエンティティフレームワークに置き換えています。

だから私は、この今のところ

DAL(エンティティframwork)持っている - > BL - > 契約(のDataContract messagecontrolサービス契約の行動など) - > サービスの実装 - > クライアントを。

問題は、blとデータ契約に(より良い言葉の欠如)を変換するコントラクト間のレイヤーです。

例 DAL.Customer(Entity Frameworkの) - > BL(ルール) - >コンバータ(ジャスト変換) - > Contracts.Customer

OR

DAL.Customer(Entity Frameworkの) - > BL(ルール) - >コンバーター(BLと変換サービスコンバーターを呼び出す) - >契約。

おかげ

答えて

1

あなたが本当にあなたの契約を理解するためにBL層を必要としない、とあなたが本当にへの契約としてあなたBLのオブジェクトを公開したくないという理由だけで、薄い「層」があるはずです世界のその他の地域。

もちろん、となります。簡単なデータ転送オブジェクトであるデータコントラクトを開発することができます。これらにはデータのみが含まれ、動作しないため、世界中のユーザーが参照するデータの部分が公開されます。あなたのBLは、そ​​のモデルに制限されるか、BL固有の機能を追加するために継承される可能性があります。

また、リアリティのBLバージョンとリアリティの「契約」バージョンを持ち、それらの間で変換するだけです。

+0

ありがとうございます。私は本当に私のblを世界に公開したくないし、契約全体の観点からbl全体が必要ではない。 私はそれらの間の変換が容認できる考えのように聞こえると思います。 私はまだ、サービスの実装で、blを呼び出して変換してから契約バージョンを返すレイヤーを呼び出すという考え方で遊んでいます。このレイヤーは、servicecontract – Pintac

0

多くの場合、BLと契約タイプの間に類似点があります。いくつかのショートカットを使用して、優秀なAutoMapperでタイプ間の変換を手助けすることができます。これらの種類のツールは、レイヤーが「薄い」状態を維持するのに役立ちます。

+0

ありがとうございます。私はblとdatacontractが同じになる時間の80%を言うでしょう。私はちょうど私がそれを必要に応じて変更することができますので、将来分けて分けたいです。 – Pintac

関連する問題