2009-05-18 4 views
2

J'ai récemment commencé avec WCF (ouais je sais que je suis derrière :-)). La question est de savoir comment je dois le structurer. Je suis habitué à DAL, BL et Presentation Layer. Je remplace (en quelque sorte) ma DAL par un cadre d'entité.WCF Layers

J'ai donc ce jusqu'à

DAL (entité framwork) -> BL -> contrats (DataContract comportements des contrats de services de messagecontrol etc.) -> mise en œuvre de services -> client.

La question est là une couche entre bl et les contrats qui convertit (manque d'un meilleur mot) le bl dans le contrat de données.

Ex DAL.Customer (Entity Framework) -> BL (Règles) -> Converter (Il suffit de convertir) -> Contracts.Customer

OU

DAL.Customer (Entity Framework) -> BL (Règles) -> Convertisseur (appel de BL et convertisseur convertissant implémentant le contrat de service) -> Contrats.Client.

grâce

Répondre

1

Il devrait y avoir une « couche », simplement mince parce que vous ne avez pas vraiment besoin de la couche BL pour comprendre vos contrats, et vous ne voulez pas vraiment d'exposer vos objets BL comme des contrats à la reste du monde.

Bien sûr, vous pouvez le faire. Vous pouvez développer des contrats de données qui sont de simples objets de transfert de données. Ceux-ci ne contiendraient que des données et aucun comportement, et exposeraient la partie de vos données que vous avez l'intention de voir. Votre BL peut soit se limiter à ce modèle, soit en hériter pour ajouter des fonctionnalités spécifiques au BL. Alternativement, il suffit d'avoir une version BL de la réalité et une version "Contract" de la réalité et de les convertir entre eux.

+0

Merci. Je ne veux pas vraiment exposer mon bl au monde et aussi pas tout le bl est exigé du point de vue du contrat. Je pense que la conversion entre eux semble être une idée acceptable. Je suis encore en train de jouer avec l'idée d'avoir l'appel de l'implémentation du service qui appelle le bl et de convertir puis de renvoyer la version du contrat. Cette couche implémentera le servicecontract – Pintac

0

Souvent, vous verrez des similitudes entre vos types BL et Contract. Vous pouvez utiliser quelques raccourcis pour vous aider à convertir entre les types avec l'excellent AutoMapper. Ces types d'outils peuvent aider cette couche à rester "mince".

+0

Merci. Je dirai que 80% du temps le bl et le contrat de données seront les mêmes. Je voudrais juste le diviser savoir à l'avenir je peux le changer si besoin est. – Pintac