2016-02-28 7 views
14

Как вы используете SOAP в .NET Core? Существуют ли какие-либо эквиваленты Apache CXF в .Net Core (а не просто простой SOAP-клиент, но полнофункциональный стек)?SOAP в .NET Core?

Извините, если это очень простой вопрос, мой поиск до сих пор не дает четкого ответа.

+1

Поддержка на стороне клиента WCF включена, но не будет серверной стороны. –

ответ

8

В настоящее время Microsoft не планирует поставлять среду на стороне сервера SOAP для .NET Core. Также не доступны WCF ServiceHost и ASMX. Слишком рано говорить, какой из не-Microsoft стеков будет прыгать и быть доминирующим игроком.

С внедрением веб-API ASP.NET и восстанием конечных точек REST WCF был мертв. Клиент WCF представляет собой историю взаимодействия, а не историю переходов (полная история здесь: http://blog.tonysneed.com/2016/01/06/wcf-is-dead-long-live-mvc-6/)

+1

Это печально, так как в некоторых случаях SOAP по-прежнему превосходит базовую связь между службами. –

+2

Печально это. Тем не менее, для NEW стек (который, по сути, является основным), это правильное решение. REST берет на себя, поскольку SOAP убил CORBA и RPC раньше. Но немного поддержка существующей среды и политик была бы приятной. – Thomas

+1

Я читал это много раз, но WCF не просто SOAP! Я могу понять замену SOAP на REST, но как насчет потоков, именованных каналов, tcp, duplex и т. д. REST никогда не поймает их ... – Fanda

3

Несколько месяцев назад из-за ограничений, которыми пользуются клиенты WCF (при интеграции с веб-службой Java, кто-то создал класс ответа с то же имя, что и метод и в том же пространстве имен, и когда клиент WCF отправил запрос, он не прошел сериализацию - не может найти связанный вопрос в SO) мне пришлось создать HTTP-клиент SOAP, который использовал подчеркивание HttpClient. В итоге я выпустил версию с открытым исходным кодом (https://github.com/gravity00/SimpleSOAPClient), которую мы успешно используем в производстве и поддерживаем приложения .NET Core и Xamarin. Не стесняйтесь попробовать. Я рекомендую версию 2.0.0-RC03 из-за некоторых важных улучшений с версии 1.x.

+0

Я искал рабочее решение для того, чтобы не иметь доступа к потреблению мыльных сервисов и наткнулся на ваш проект, однако примеры и учебники, похоже, не связаны с библиотекой. Является ли это проблемой v1.x vs 2.x? – Marqueone

+0

Привет @Marqueone, я могу попытаться помочь вам в этом. Не стесняйтесь открывать проблему GitHub с образцом кода, чтобы я мог взглянуть на него. –

1

Здесь у вас есть небольшой трюк, который я использовал для таргетинга «framework 452» в ASP.Net 5.0 Web App.

К сожалению, новый «Добавить подключенную услугу» -> «WCF сервис» работает только при ориентации «.Net Core», поэтому я создал основное приложение консоли с таким же именем, как мой веб-приложение.

Консольные приложения позволяют добавлять «Сервисная ссылка». После добавления VS2015 создает все ссылки на службы в папке «Ссылки на службы».

Просто переместите содержимое папки в веб-решение и используйте клиентский конструктор, который принимает параметры HttpBindings и EndPoint.

В моем случае я подключение к EchoSign служба инициализации клиента следующим образом:

using (EchoSignDocumentService16PortTypeClient service = new EchoSignDocumentService16PortTypeClient(new BasicHttpBinding(BasicHttpSecurityMode.Transport), new EndpointAddress(adddress))) 
{ 
... 
} 
+0

ServiceModel не существует в .net-ядре, хотя – Elaine

1

мне нужен SOAP для моих старых клиентов, поэтому я создал отдельную библиотеку SOAP, который совместит с моими старыми клиентами , используя платформу .NET, размещенную в отдельной среде. (SOAP.mywebsite.com). Затем на веб-сайте www.mywebsite.com (созданном с помощью asp.net Core, у меня есть интерфейс для отдыха. SOAP-слой вызывает интерфейс останова. Библиотека для вызова интерфейса останова создается с использованием Swashbuckle.

0

Чтобы обойти это проблема .... Я создал пакет nuget в .Net 4.5, подключившись к родным клиентам SOAP, которые не поддерживаются в .NET Core. Затем я создал основное ядро ​​.Net, ориентированное на .NET-инфраструктуру. Это позволило мне использовать пакет nuget без ошибок .

0

В VS 2017 по состоянию на декабрь 17 (v15.5) теперь вы можете добавить сгенерированный клиент WCF к службе с использованием WSDL из проекта .NET Standard с помощью Connected Services. В обозревателе решений вы можете получить щелкните правой кнопкой мыши «Зависимости» или щелкните правой кнопкой мыши проект в разделе «Добавить ...«

Смежные вопросы