Модули Prism и сервисные ссылки WCF в настольном приложении Prism - PullRequest
1 голос
/ 01 ноября 2011

Я создаю настольное приложение Prism и намереваюсь использовать службы WCF для заполнения списков и т. Д. В представлениях в моих модулях.

Я прочитал руководство от корки до корки и настроил свое решение так, чтобы у меня было: -

1) Оболочка проекта
2) Инфраструктурный проект
3) Модуль 1
4) Модуль2

В Module1 у меня есть viewmodel, которая содержит ObservableCollection Customers , заполненную вызовом службы WCF непосредственно в модели представления.

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

Моей первой попыткой было создание интерфейса IWCFCustomersAdapter в проекте инфраструктуры и переадресация его на вызовы клиента службы WCF. Это реализовано в инфраструктурном проекте. Ссылка на услугу также добавлена ​​в проект инфраструктуры. Каждый модуль имеет ссылку на проект инфраструктуры и использует типы данных, определенные в службе WCF.

Какие другие / лучшие варианты в этих обстоятельствах? Может ли интерфейс по-прежнему идти в проекте инфраструктуры, а ссылки на сервисы и их реализация включаются в модули? Каковы плюсы и минусы разных вариантов?

Любые советы и рекомендации наиболее ценны.

Спасибо

Alex

1 Ответ

2 голосов
/ 02 ноября 2011

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

С моей точки зрения, выделенный сервисный модуль - лучшее место.Если ваш сервер предоставляет несколько сервисов, вы можете ввести модуль связи с сервером, который содержит все сервисные адаптеры, а также DTO.Эти DTO могут также использоваться в качестве моделей.

Если ваш сервер предоставляет довольно много сервисов, вы можете разделить ваш сервисный модуль на более конкретные, например, сервисный модуль управления пользователями с управлением сеансами, управлением пользователями, управлением правами и т. Д.

...