Самый простой способ модернизировать протокол связи в корпоративном приложении WCF - PullRequest
0 голосов
/ 03 октября 2018

В нашем корпоративном настольном приложении мы активно используем WCF с 2010 по 2011 год, и мы очень довольны им.
Однако мы видим, что WCF становится все менее и менее популярным, он не поддерживается в .NET Core, который являетсярано или поздно заменит .NET Framework, поэтому мы начали думать о замене WCF в нашем приложении.
Мы хотим заменить протокол связи, но не хотим переписывать все существующие сервисы.У нас есть расширения для нашего продукта, написанные нашими партнерами, поэтому всем им нужно будет переписать все свои услуги, это займет огромное количество времени.Хотя мы не против переписать инфраструктуру регистрации, запуска, вызова и т. Д. Услуг ...
Основные функции WCF, которые мы используем и которые мы определенно хотим иметь в будущем:
- разделение контрактов междуклиент и сервер - мы контролируем как клиентскую, так и серверную часть нашего приложения, и они оба написаны на C #, поэтому я считаю, что для нас наличие контрактов является преимуществом
- вызовы операций: мы используем их для добавления регистрации для каждого WCFвызов, чтобы обернуть вызовы в транзакции, изменить культуру потока и т. д.

Есть ли способ написать своего рода оболочку для существующих служб, контрактов на данные и контрактов на обслуживание, чтобы иметь возможность вызывать их втак же, как и сейчас, но использовать другой современный протокол связи: gRPC, Web API и т. д .?

1 Ответ

0 голосов
/ 11 октября 2018

Я исследовал аналогичные «обертки» вокруг идей для существующих служб WCF, которые работают на базовых HTTP-привязках, как старые добрые веб-службы SOAP.

Кажется, что нет способа изменить протокол на что-то более современное (например, веб-API на основе gRPC или JSON) без существенного переписывания базовых кодов.Например, хотя вы можете переключить привязку WCF на WebHttpBinding и свои контракты на операции / данные, чтобы ваши службы вели себя как более современные API RESTful, вероятно, было бы более целесообразно в любом случае просто перенести текущие коды на ASP.Net MVC.

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

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