none
Использование WCF в WPF Prism приложении RRS feed

  • Вопрос

  • Всем привет!

    Не подскажете как можно в WPF (используется Prism, UnityExtentions) сделать так, чтобы сервисы WCF вынести в отдельный проект, сделать в нем репозиторий и зарегистрировать его в контейнере. А уже в модулях просто внедрять нужные репозитории...

    Кто нибудь так делал?

    18 января 2013 г. 11:22

Ответы

  • Сборка 1 (Infrastructure): описываете интерфейс WCF-сервиса. IService

    Сборка 2: (Services): Собственно реализация интерфейса со всеми фичами для WCF. Service :  IService

    Сборка 3 (WPF-приложение): В приложение импортируете общий интерфейс из Сборки 1 и вызываете функции этого интерфейса, тем самым используя реализацию из Сборки 2, но напрямую на нее не ссылаясь.


    • Изменено Kirill Bessonov 18 января 2013 г. 12:20
    • Помечено в качестве ответа Abolmasov Dmitry 21 января 2013 г. 9:23
    18 января 2013 г. 12:19
  • Если интерфейсы и реализация у вас будут в одной сборке - зачем вам тогда Unity? В том то и фишка, что в инфраструктуре в идеале должны быть интерфейсы, а реализация в другой сборке, здесь и появляется модульность и всяческие связанные с ней прелести.

    По поводу конфига, тут конечно получаются некоторые заморочки. Если полностью в app.config хранить, то конечно в главном приложении. Можно так же настраивать программно или же через какие нибудь враперы. Или даже через контейнер! Сделать сервис, к примеру ISettings, который будет предоставлять возможность управления настройками приложения (в том числе и байниднгов). И этот сервис импортировать в реализацию WCF-сервиса. То есть в реализации WCF получить ссылку на экземпляр  ISettings, который в свою очередь может предоставить настройки подключения.

    • Помечено в качестве ответа Abolmasov Dmitry 21 января 2013 г. 9:23
    18 января 2013 г. 14:53

Все ответы

  • Проще говоря, как правильно использовать WCF сервисы в WPF приложении в котором модули - это отдельные проекты.

    Как то не хочется добавлять WCF сервисы в каждый модуль...

    18 января 2013 г. 11:43
  • Сборка 1 (Infrastructure): описываете интерфейс WCF-сервиса. IService

    Сборка 2: (Services): Собственно реализация интерфейса со всеми фичами для WCF. Service :  IService

    Сборка 3 (WPF-приложение): В приложение импортируете общий интерфейс из Сборки 1 и вызываете функции этого интерфейса, тем самым используя реализацию из Сборки 2, но напрямую на нее не ссылаясь.


    • Изменено Kirill Bessonov 18 января 2013 г. 12:20
    • Помечено в качестве ответа Abolmasov Dmitry 21 января 2013 г. 9:23
    18 января 2013 г. 12:19
  • Спасибо за совет!

    А почему бы не подключить WCF и реализовать интерфейсы в Сборка 1?

    Получается что из сборки в которую добавляются ссылки на WCF сервисы нужно скопировать конфиги биндинга в главное WPF приложение?

    18 января 2013 г. 13:42
  • Если интерфейсы и реализация у вас будут в одной сборке - зачем вам тогда Unity? В том то и фишка, что в инфраструктуре в идеале должны быть интерфейсы, а реализация в другой сборке, здесь и появляется модульность и всяческие связанные с ней прелести.

    По поводу конфига, тут конечно получаются некоторые заморочки. Если полностью в app.config хранить, то конечно в главном приложении. Можно так же настраивать программно или же через какие нибудь враперы. Или даже через контейнер! Сделать сервис, к примеру ISettings, который будет предоставлять возможность управления настройками приложения (в том числе и байниднгов). И этот сервис импортировать в реализацию WCF-сервиса. То есть в реализации WCF получить ссылку на экземпляр  ISettings, который в свою очередь может предоставить настройки подключения.

    • Помечено в качестве ответа Abolmasov Dmitry 21 января 2013 г. 9:23
    18 января 2013 г. 14:53
  • Пожалуйста, не забывайте отмечать решение проблемы. Спасибо.

    Для связи [mail]

    21 января 2013 г. 9:22