2009-05-18 2 views
2

Недавно я начал с WCF (да, я знаю, что я за спиной :-)). Вопрос в том, как я должен его структурировать.WCF Layers

Я привык к DAL, BL и уровню презентации. Я заменяю (свой) мой DAL на сущность framework.

Так что у меня это до сих пор

DAL (объект framwork) -> BL -> контрактов (DataContract messagecontrol контракта на обслуживание форм поведения и т.д.) -> реализации сервиса -> клиента.

Вопрос в том, есть ли слой между bl и контрактами, которые преобразуют (отсутствие лучшего слова) bl в контракт данных.

Ex DAL.Customer (Entity Framework) -> BL (правила) -> Конвертер (Просто преобразование) -> Contracts.Customer

ИЛИ

DAL.Customer (Entity Framework) -> BL (Правила) -> Конвертер (Calling BL и конвертирующий конвертор, реализующий контракт на обслуживание) -> Contracts.Customer.

благодаря

ответ

1

Там должен быть тонкий «слой», просто потому, что вы на самом деле не нужен BL слой, чтобы понять ваши контракты, и вы действительно не хотите, чтобы выставить свои объекты BL, как контракты на остальной мир.

Конечно, вы можете сделать это. Вы можете разрабатывать контракты данных, которые являются простыми объектами передачи данных. Они будут содержать только данные и поведение, и будут раскрывать часть ваших данных, которые вы намерены видеть в мире. Ваш BL может либо ограничиться этой моделью, либо наследовать от нее, чтобы добавить специфичные для BL функции.

В качестве альтернативы, просто BL-версия реальности и «Контрактная» версия реальности и конвертация между ними.

+0

Спасибо. Я действительно не хочу раскрывать свой бл миру, а также не все bl требуется от контрактной точки зрения. Я думаю, что конвертация между ними звучит как приемлемая идея. Я все еще играю с идеей о том, что реализация службы вызывает слой, который вызывает bl и конвертирует, а затем возвращает контрактную версию. Этот уровень реализует servicecontract – Pintac

0

Много раз вы увидите сходство между вашим BL и Контрактными типами. Вы можете использовать несколько ярлыков, чтобы помочь вам конвертировать между типами с отличным AutoMapper. Эти инструменты могут помочь этому слою оставаться «тонким».

+0

Спасибо. Я скажу, что 80% времени bl и datacontract будут одинаковыми. Я просто хотел бы разделить его на то, чтобы в будущем я могу изменить его, если потребуется. – Pintac