Alternative zu SvcUtil.exe?
Ich habe wrestling mit SvcUtil den ganzen Tag, versuchen, es zu bekommen zu generieren nützliche code für einige IMS Enterprise Services (vor allem Group-Management-Service, aber es gibt auch andere, wir müssen es zu arbeiten, wie gut.) Finden Sie die IMS-service-WSDL-s, die hier http://www.imsglobal.org/es/index.html.
Ich zu dem Schluss gekommen, dass SvcUtil ist eine nutzlose Einfall von Microsoft nicht unterstützt die WSDL-und XSD-standards auch in einem halbherzig Weg. Es ist unfähig, generieren einen WCF-Dienst entspricht dem standard WSDL-Verträge, die IMS verwendet, UND Funktionen zur gleichen Zeit. Trotz der Generierung kompilierbare code aus dem folgenden WSDL (http://www.imsglobal.org/services/gms/wsdl/imsGroupManServiceSync_v1p0.wsdl), die Beobachtung der generierten WSDL aus dem WCF service (?wsdl ?wsdl=wsdl0, ?xsd=xsd0, etc.) zeigt, dass keine der Operationen existieren, und nur ein Bruchteil der Arten, die generiert wurden, im code sind eigentlich von der WCF anerkannt. Wenn wir die Schraube mit dem generierten code, können wir etwas bekommen, dass Art von Funktionen (wir sind mit SoapUI zu testen), aber dann ist es nicht mehr, entspricht dem Vertrag, so seine nutzlos für die Menschen, die wirklich brauchen, um den Anruf zu diesen Diensten.
Gibt es alternativen zu SvcUtil? (Bitte nicht schlagen die eingebauten Visual Studio "Add Service Reference" - tool, das ist so nutzlos, wie es verwendet exakt die gleichen Codes wie SvcUtil.) Wir brauchen etwas, das uns eine gewisse Kontrolle über, wie der code generiert sich aus der WSDL-Vertrag, was Dateien jeder Teil endet, der bis in die namespaces jedes code-element endet in usw. Die IMS-Vertrag die Einfuhren beiden XSD-Typen spezifisch für die Dienste definiert, die in der WSDL, sowie XSD-Typen, die für alle IMS-Dienste. Wir müssen in der Lage sein zum generieren von verschiedenen Baugruppen für diejenigen Arten, und verweisen Sie in den generierten code (ähnlich wie SvcUtil anscheinend soll es tun...aber es scheint nicht das zu tun, was er sagt, seine Dokumentation sagt, dass es nicht an alle.)
Ich ein großer fan von WCF-bis jetzt. Es offensichtlich funktioniert, wenn Sie nur .NET/WCF-Dienste, aber jedes mal, wenn Sie versuchen, verwenden Sie es in einer Standard-konformen, cross-Plattform-Umgebung, geht alles Scheiße.
- "jedes mal, wenn Sie versuchen, verwenden Sie es in einer Standard-konformen, cross-Plattform-Umgebung, geht alles Scheiße".... dies sollte nicht kommen als eine überraschung....
- Außer, dass angeblich der gesamte Punkt WCF lobte neue und verbesserte WSDL, SOAP, XSD -, und WS -* - standards unterstützen.
- Zum Aufbau einer service-Verhalten "anzupassen" Ihre WSDL-Generierung ist eine option? Sie können sehen, ein Beispiel hier: codeproject.com/KB/WCF/ExportAnnotationFromWCF.aspx
- Ich brauche nicht zu erzeugen WSDL aus dem Code. Ich brauche generieren, Code aus der WSDL.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sorry, dass ich keine Zeit haben, in vollem Umfang an die Antwort auf diese, aber es ist eine Antwort auf Ihre Frage. Es ist eine Schnittstelle, die Sie implementieren können, genannt IWsdlImportExtension die zwei Methoden, die Sie interessiert. Sie sind:
GenerateContract() und GenerateOperation()
Wenn Sie diese Methoden implementieren, können Sie Steuern, den Weg SvcUtil Pumpen aus code, der durch hinzufügen oder entfernen von CustomAttributes und so weiter. Sie benötigen zum kompilieren einer dll mit dem interface im es und zeigen Sie dann das SvcUtil-Konfiguration an die DLL und die Benutzeroberfläche.
Mithilfe dieser Methode können Sie können zum Beispiel das hinzufügen von Xml-Dokumentation zu Ihrem ausgegeben, Proxys und so weiter. Es gibt einige interessiert Artikeln, um über diese.
Haben Sie schon einen Blick auf die WCF-Proxy-Generator auf Codeplex? Auf der Grundlage, die dahinter steckt (Kate Gregory und Michele Leroux Bustamante), es gibt Hoffnung, es könnte nützlich sein, - plus erhalten Sie die Quellen, so dass Sie können anpassen /tweak zu Inhalt Ihres Herzens!
(hatte noch nicht die Zeit zu nehmen einen ernsten Blick auf ihn selbst, noch ist es auf der endlosen "To-Do, wenn ich komme" - Liste....)
Plus check out this blog-post hier von Pedram Rezaei zeigt, wie Einfluss auf das Visual Studio "Add Service Reference" - Schritt mit Ihren eigenen benutzerdefinierten code.