Я несколько новичок в WCF, и я столкнулся с очень простой проблемой дизайна, которая, как я предполагаю, имеет хорошо установленные ответы. Я создал основное приложение (одно экземпляра), которое выполняет всю «бизнес-логику»: подключается к базе данных и стороннему API, выполняет команды администратора и т. Д. Это приложение предназначено для запуска на серверной машине, а мое Следующим шагом будет создание WcfServiceLibrary
сверху, чтобы конечные пользователи могли удаленно выполнять команды с помощью Wcf-клиентов.WCF: Как создать WcfServiceLibrary отдельно от основного приложения
Логически WcfServiceLibrary
делает ссылку на основную сборку приложения. Назовите меня наивным, но я подумал, что это позволит мне получить доступ к основным объектам и методам приложения. Ну, но это происходит, но создавая дубликат основного приложения в процессе WcfServiceLibrary
, который является не-go. (Я также обнаружил, что при доступе изнутри WcfServiceLibrary дублируется single-instance application!)
Как решить эту проблему? До сих пор я имею в виду следующее:
- Self-host служба ФОС в главном приложении: возможно, но я бы потерять четкое разделение между «бизнес-логики» и логики обслуживания
- методы использования IPC для связи между основное приложение и
WcfSrviceLibrary
: это выглядит как излишний, поскольку он создает еще один уровень серверно-клиентского интерфейса (за исключением, возможно, если я использую COM вне процесса) - Любой другой способ?
Заранее благодарим за вашу помощь! Я хочу верить, что есть простое решение этой проблемы за углом ...!
Извлеките всю логику в отдельную сборку, обратитесь к этому сборку как из основного приложения, так и из вашего wcf-сервиса? – Evk
@Evk. Такая сборка по-прежнему будет загружаться дважды: один раз для основного приложения, запущенного на сервере, и второе (или более) время всякий раз, когда создается служба Wcf. Мне нужна служба Wcf, обращающаяся к главному приложению, без дублирования ее внутри. – phaedo
Если вы находитесь на сервере, зачем вам нужно основное приложение? Почему бы просто не использовать только службу wcf? – Evk