web-dev-qa-db-fra.com

SOAP dans .NET Core?

Comment vous faites SOAP dans .NET Core? Existe-t-il un équivalent de Apache CXF dans .Net Core (pas seulement un simple client SOAP, mais une pile complète)?

Désolé si cette question est très simple, ma recherche à ce jour ne donne pas de réponse claire. 

18
Yudhistira Arya

Microsoft n'envisage pas actuellement de fournir une infrastructure côté serveur SOAP pour .NET Core. Ni WCF ServiceHost ni ASMX ne sont disponibles. Il est encore trop tôt pour savoir lequel des piles non-Microsoft va intervenir et devenir le joueur dominant.

Avec l'introduction de l'API Web ASP.NET et le soulèvement des terminaux REST, WCF était mort. Le client WCF est une histoire d’interopérabilité et non d’avenir (histoire complète ici: http://blog.tonysneed.com/2016/01/06/wcf-is-dead-long-live-mvc-6) / )

11
Thomas

Il y a quelques mois, à cause d'une limitation des clients WCF (lors de l'intégration avec un service Web Java, une personne a créé une classe de réponse avec le même nom que la méthode et dans le même espace-noms et lorsque le client WCF envoyait une demande, la sérialisation échouait - ne trouve pas la question connexe dans SO) Je devais créer un client HTTP SOAP qui soulignait le HttpClient. J'ai finalement publié une version open source ( https://github.com/gravity00/SimpleSOAPClient ) que nous utilisons avec succès en production et qui prend en charge les applications .NET Core et Xamarin. N'hésitez pas à faire un essai. Je recommande la version 2.0.0-RC03 en raison d'améliorations majeures depuis la version 1.x.

6
João Simões

Dans VS 2017, à compter de décembre 17 (version 15.5), vous pouvez désormais ajouter un client WCF généré à un service utilisant WSDL à partir d'un projet .NET Standard utilisant Connected Services. Dans l'Explorateur de solutions, vous pouvez y accéder en effectuant un clic droit sur "Dépendances" ou un clic droit sur le projet sous "Ajouter ...".

3
Marc L.

Ici, vous avez un petit truc que j'ai utilisé pour cibler "framework 452" dans une application Web ASP.Net 5.0. 

Malheureusement, le nouveau "Ajouter un service connecté" -> "Service WCF" ne fonctionne que pour cibler ".Net Core" , j'ai donc créé une application de console de base portant le même nom que mon application Web. 

Les applications de la console permettent d'ajouter "Référence du service" . Une fois ajouté VS2015 crée toutes les références de service dans le dossier "Références de service"

Déplacez simplement le contenu du dossier vers la solution Web et utilisez un constructeur client qui accepte les paramètres HttpBindings et EndPointparameters. 

Dans mon cas, je me connecte au Echosign service qui initialise le client comme suit:

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

J'ai besoin de SOAP pour mes clients hérités. J'ai donc créé une bibliothèque distincte SOAP compatible avec mes clients hérités, à l'aide du framework .NET, hébergé dans un environnement séparé. (SOAP.mywebsite.com). Ensuite, sur www.mywebsite.com (créé avec asp.net Core, j'ai une interface de repos. La couche SOAP appelle l'interface de repos. La bibliothèque permettant d'appeler l'interface de repos est générée à l'aide de Swashbuckle.

1
Pieter van Kampen

Pour contourner ce problème…. J'ai créé un package de nugets dans .Net 4.5 en se connectant à des clients SOAP natifs non pris en charge dans .NET Core. Ensuite, j'ai créé une application principale .Net ciblant le framework .net. Cela m'a permis d'utiliser le paquet Nuget sans erreur.

0
Bilbo Baggins