Любые советы или предложения к этой идее / архитектуре? - PullRequest
0 голосов
/ 18 января 2012

У нас есть мультисервисное приложение. Мы переместили метод, который включает доступ к БД к отдельному компоненту, который предоставляется конечной точкой WCF.
У нас есть 2 варианта:
1. WCF-вызов метода.
2. Вызовите непосредственно метод, разрешенный нашим механизмом DI.
Производительность системы является критической проблемой, поэтому мы хотим переключаться между вариантом 1 и вариантом 2 через файл конфигурации без перекомпиляции клиентского приложения.
Любые советы или предложения к этой идее / архитектуре?

Ответы [ 2 ]

1 голос
/ 18 января 2012

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

1 голос
/ 18 января 2012

Вы можете научить Unity разрешать службы WCF по интерфейсу. Таким образом, не имеет значения, разрешаете ли вы локальную реализацию вашей службы или WCF. Вы всегда будете вводить IMyService в ваши классы. Это просто изменение вашей конфигурации.

Вы можете настроить расширение для использования app.config или WCF discovery или явно указать Binding и EndpointAddress в коде.

См. Проект TecX для получения дополнительной информации. Исходный код находится в TecX.ServiceModel.AutoMagic . Некоторые тесты, демонстрирующие использование, можно найти в TecX.ServiceModel.Test


Обновление

Определите интерфейс для вашей службы (например, IMyService ) и украсьте его необходимыми атрибутами ( DataContract , OperationContract ). Реализуйте этот интерфейс (например, в классе MyService ). MyService вызывает ваш метод. Теперь скажите Unity либо сопоставить IMyService непосредственно с MyService , либо добавить расширение контейнера, позволяющее сопоставить IMyService с прокси, сгенерированным WCF ChannelFactory . Разверните свой сервис, и все готово. Unity внедрит любую реализацию IMyService в конструкторы тех классов, которые в них нуждаются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...