2010-11-24 2 views
0

Кодеры, я занимаюсь разработкой/реализацией (да, оба в то же время) моего прототипа моей собственной CMS. Я использую Asp.net, WCF и Silverlight. До сих пор у меня есть следующая модель для моего проекта:Asp.net + Silverlight + WCF и n-уровневая архитектура

Presentation слой [Silverlight & Asp.net/html]> WCF> Бизнес-логика> База данных

Цель моей модели, чтобы сделать его легко СТЕПЕНИ приложения в будущем. Доступ к приложению будет возможен из любого приложения, которое может использовать мои службы WCF.

К сожалению, у меня есть некоторые трудности с реализацией моей модели. Мне кажется, что если у меня есть три проекта в моем решении:

Решение:

  • -Asp.net [Уровень представления]
  • -Silverlight [Уровень представления]
  • -WCF [WCF и бизнес-логика]

Тогда мне придется дублировать многие классы как в слоях презентации, так и в моем слое WCF.

Вот сценарий: допустим, что у меня есть класс Post в моем WCF, который является реализацией моего BL. Я мог бы добавить новое сообщение из своего PL, создав экземпляр клиента моей ссылки на службу, используя строку, такую ​​как client.AddPostAsync (параметры сообщения). Однако, если вы хотите получить объект Post в моем PL, вызвав метод WCF, тогда у меня уже будет реализация класса Post в моем PL, который является той же самой копией моего класса Post в моем WCF!

Таким образом, в конечном итоге, в конечном итоге, у меня будет много дубликатов классов как в моем слое WCF, так и в моем PL. Я чувствую, что есть что-то, чего я не понимаю, или, может быть, я что-то испортил в своей модели? Пожалуйста помоги!

+2

Когда вы добавляете ссылку на службу в свой уровень презентации, она генерирует для вас все Контракты данных. Вам не нужно их снова определять. Если я что-то упустил, вы могли бы дать полный прототип метода вашего метода WCF? – Andrew 2010-11-24 06:32:31

ответ

0

Действительно, вам не нужно дублировать классы (с атрибутом DataContract) из службы WCF в Silverlight, они будут просто созданы автоматически при создании ServiceReference для вашей службы WCF.

Howether они будут очень простыми базовыми классами store-data-in-fields, поэтому я могу понять, что вы можете создать некоторые функциональные дубликаты в Silverlight, если вам понадобится какая-то логика. Я использую ту же модель в своем проекте и имею эту проблему.

Я думаю, вам стоит планировать свою архитектуру, зная это, делая эти классы, наследуемые на WCF, более похожими на классы шаблонов DataTransferObject, чтобы избежать массивного дублирования классов.

+0

одна вещь, которую я заметил, это то, что я могу только называть классы после того, как я установил обработку событий ex) в метод client_GetPostsCompleted (..). Это верно? – ealshabaan 2010-11-24 14:52:43

Смежные вопросы