У нас есть приложение с несколькими сервисами. Мы переместили метод, который включает доступ к БД к отдельному компоненту, который отображается конечной точкой WCF.
У нас есть 2 варианта:
1. Запрос WCF на метод.
2. Вызовите непосредственно метод, разрешенный нашим двигателем DI.
Производительность системы является критичной проблемой, поэтому мы хотим переключиться между вариантом 1 и вариантом 2 через конфигурационный файл без перекомпиляции клиентского приложения.
Любые советы или предложения по этой идее/архитектуре?Любые советы или предложения по этой идее/архитектуре?
ответ
Вы можете научить Unity разрешать услуги WCF по интерфейсу. Поэтому не имеет значения, разрешите ли вы локальную реализацию вашей службы или WCF. Вы всегда будете вводить IMyService в свои классы. Это просто изменение вашей конфигурации.
Вы можете настроить расширение использования app.config или открытие WCF или явно указать Binding и EndpointAddress в коде.
Дополнительную информацию см. На сайте TecX project. Исходный код находится в TecX.ServiceModel.AutoMagic. Некоторые тесты, демонстрирующие использование можно найти в TecX.ServiceModel.Test
Update
Определить интерфейс для вашей службы (например, IMyService) и украсить ее необходимыми атрибутами (DataContract, OperationContract). Внедрить этот интерфейс (например, в классе MyService). MyService называет ваш метод. Теперь скажите Unity либо карту IMyService непосредственно к MyService или добавить расширение контейнера, который позволяет отображать IMyService через прокси-сервер, порожденного WCF ChannelFactory. Разверните свой сервис, и все готово. Unity будет внедрять любую реализацию IMyService в конструкторы тех классов, которые в них нуждаются.
Я думаю, вам следует избегать дополнительного слоя WCF, если производительность системы является критической проблемой, и нет никаких других требований, управляющих дизайном таким образом. Вы можете выполнить некоторые тесты производительности, чтобы увидеть, будет ли их накладные расходы приемлемыми для вас. В конце концов вы можете решить, какой вариант лучше для вас, и поэтому удалите необходимость переключения.
Если есть необходимость в некоторых функциях WCF (например,зашифрованные вызовы, аутентификацию, распространение идентификационных данных, голосование по транзакциям, авторизацию, аудит безопасности, распространение транзакций, тайм-аут вызовов, надежность, долговечность, маскирование ошибок, изоляцию ошибок, буферизацию и дросселирование, допуск к версии версий данных, удаленное взаимодействие, взаимодействие, очередность, обнаружение, .. .) WCF - лучший выбор, который вы можете сделать. Никакая другая структура на рынке не может конкурировать с ее производительностью. –
Да, но только если есть необходимость ... – henginy
- 1. Любые предложения по внедрению этой системы?
- 2. любые предложения по этой проблеме CSS печати
- 3. Наследование, любые предложения по улучшению этой программы?
- 4. Любые советы по SEO
- 5. Любые предложения или улучшения?
- 6. советы/предложения по анализу javascript
- 7. Любые советы по оптимизации этой крошечной функции C#?
- 8. Любые советы по исправлению кода?
- 9. Любые советы по ускорению GhostScript?
- 10. Любые советы по PHP-сессиям?
- 11. Любые предложения по созданию баз данных для этой проблемы?
- 12. Любые предложения по ресурсам интернационализации?
- 13. Любые предложения по реорганизации этого кода Ruby?
- 14. Любые предложения по настройке Ultra Edit?
- 15. startActivity() или любые другие предложения?
- 16. Любые предложения по конфигурации Log4Net Gui?
- 17. C++ Любые советы по отслеживанию нарушений доступа?
- 18. Любые советы по локализации дат в .NET или вообще?
- 19. любые советы Haxe GC?
- 20. Готовые исследования, любые советы?
- 21. любые советы или подсказки для обновления ArrayAdapter?
- 22. Любые советы по отладке фокуса в WPF?
- 23. Любые советы по разработке для Chrome?
- 24. Любые советы по планированию большой базы данных
- 25. Любые советы по улучшению запроса MySQL?
- 26. Есть предложения по этой ошибке?
- 27. Любые предложения по применению интерактивной карты?
- 28. Нужны советы/предложения по синтаксису шаблона
- 29. Любые предложения по сопоставлению и извлечению шаблона?
- 30. Любые предложения по Trac «скулить», как bugzilla?
«Мы хотим переключиться между опцией 1 и опцией 2 через конфигурационный файл без перекомпиляции клиентского приложения« Я знаю, что знаю компромиссы, главное, как я могу реализовать эту архейдерку.? – shahzad
Отличное описание .... Себастьян Вебер ..... Спасибо .... – shahzad
@shahzad Если бы мой ответ был полезным, было бы здорово, если бы вы могли отметить его как таковой. –