Как лучше использовать WPF, WCF, PRISM? - PullRequest
3 голосов
/ 17 августа 2010

Я занимаюсь разработкой приложения EMR в качестве своего проекта. там я использую WCF для передачи всех данных с централизованного сервера, WPF для пользовательского интерфейса и PRISM для создания модулей.

В моем решении 3 приложения для приложения WPF / PRISM

  1. Основной проект (mainApplication), в котором находятся оболочка и загрузчик.
  2. Библиотека классов (modulesLib) для хранения всех модулей
  3. Библиотека классов (инфраструктура) для связи со службой wcf (ссылка на службу добавлена ​​с помощью scvutil.exe в Visual Studio 2008)

ссылки на проекты добавлены как показано ниже

  • mainApplication имеет ссылки на «modulesLib» и «инфраструктура»
  • modulesLib имеют ссылку на «инфраструктуру»

моя текущая процедура ниже

  1. Существует 6 служб wcf (6 хостов), работающих с помощью службы Windows
  2. жестко закодированные детали базы данных внутри реализаций службы wcf (запросы, поля, таблицы)
  3. вызов служб WCF напрямую с использованием моделей представления / презентаторов для модулей (через библиотеку инфраструктуры).
  4. Созданы классы с именем abstract ViewModelBase (который реализует INotifyPropertyChanged, также имеющий ссылки IUnityContainer, IRegionManager, IEventAggregator), абстрактный ModuleBase (который реализует IModule), и я использую эти 2 класса для наследования при каждом добавлении модели представления или модуля
  5. Я помещаю все свойства привязки данных в viewmodel и использую конструктор viewmodel для создания экземпляра данного представления, устанавливаю его контекст данных и добавляю его в область в оболочке
  6. Элемент списка

всякий раз, когда я хочу связаться между модулями, я использую CompositePresentationEvents

что я хотел бы знать

  1. Если я так поступил, то это нормально для вас, ребята.
  2. Тем не менее, есть множество ошибок, сбоев и т. Д. Могу ли я иметь единственное место для обработки этих исключений, чтобы приложение не сломалось (регистрация или что-то в этом роде)
  3. как бы вы работали над проектом с использованием WPF, WCF, MSSQL и PRISM

спасибо, Nadun

1 Ответ

2 голосов
/ 18 августа 2010

Большинство вещей, которые вы сделали, в порядке.

Но для модуля регистрации: создайте отдельный проект в своей инфраструктуре и зарегистрируйте его как одноэлементный объект в Unity.

2 - Для более качественного модульного тестирования вашего проекта используйте единство в полном объеме как создатель зависимостей вашего класса, как в зависимости от контракта, а не от фактической реализации.

3 - Для связи между вашими модулями используйте EventAgreegator

4- Для глобальных команд используйте CompositeCommand.

5 - Если в вашем пользовательском интерфейсе есть элементы управления селектором, такие как Combobox, ListBox, попробуйте расширить свойство Attached, как это сделано в Composite Application for Button base, чтобы вы не перехватывали событие выбора измененного в вашем коде, скорее вы возможность вызывать команды.

...