Es gibt zwei Webdienst-Arten in Dynamics 365 Business Central TM (Navision): SOAP und OData. Auf eine Frage, welche davon besser wäre, die richtige Antwort könnte sein: "je nachdem":
Es wäre einfach ungerecht und zu vereinfacht so zu sagen "SOAP ist fertig, tot. Jetzt wird fast alles über REST-Api verbunden". Die beiden Webservice-Arten werden zu unterschiedlichen Aufgaben verwendet. Ganz grob kann man sagen, die SOAP wird meistens dort verwendet, wo Operationen oder Aufgaben bereitgestellt werden sollten. REST/OData (OData ist eine Standarisierung von REST) wird dort verwendet, wo die Ressourcen bereitgestellt werden sollten. Die alle wichtigsten Unterschiede werden in der folgenden Tabelle zusammengefasst.
Einige zusätzliche Bemerkungen zur Verwendung von Webservices in Navision:
In den früheren Versionen von Dynamics NAV waren Pages unpraktisch für Web-Services. XML-Ports wurden stattsdesen benutzt. (Pages waren zu kompliziert und verwirrend im Kode auf längere Zeit). Aktuell ist es anders. Es gibt eine Pageart 'API'. Diese Art von Seite kann nicht auf der Benutzeroberfläche angezeigt werden, sondern dient zum Erstellen zuverlässiger Integrationsdienste.
OData umfasst eine Abfragesprache (Synthax-Beispiel ...$filter=No eq '0001'&$select=No,Name)
Eine praktische OData Kommunizierensmethode in AL Kode: .NET Library HttpClient:
GET: HttpClient . GetAsync(method) . Result
POST: HttpClient . PostAsync(method,httpContent) . Result
PUT: HttpClient . PutAsync(method,httpContent) . Result
DELETE: : HttpClient . DeleteAsync(method) . Result
Die Methode HttpClient läuft in AL asynchron. Damit es synchron läuft, sollte die Methode HttpResponseMessage .EnsureSuccessStatusCode() verwendet werden.
In der Demo-Version von Business Central wurden einige gute Beispiele von Webservices schon eingerichtet. Die können im Suchenfeld schnell aufgelistet werden (Alt + Q)
Auf der Liste von vorhandenen Webdiensten wählen wir den Kontenplan. In drei letzten Spalten sind schon URLs zu Webservices.
Bevor der Link aufgerufen werden kann, muss es noch geprüft werden, ob die SOAP, bzw. OData Webdienste erlaubt sind. Die können mit dem PowerShell Commandlet oder manuell in BC Administration eingerichtet werden. Tauchte ein Fehler auf beim Einschalten "Die URL-Reservierung konnte nicht hinzugefügt werden. Fehler: 87 Falscher Parameter.', kann es sein, der genutzte Name hat ein nicht erlaubtes Zeichen. Da wir in unserem Testumgebung einen lokalen Benutzer verwenden (was normallerweise nicht passiert) "Konrad Seccount", so ist der Fall.
Nicht die schönste Lösung, aber den Namen haben wir in "Lokale Benutzer und Gruppen" mit Command lusrmgr.msc entsprechend angepasst:
Nach dem Neustart der Dienst können die Webdienste mit dem Link aufgerufen werden. Dann werden wir um eine Authentifizierung gebeten
Und dann wird die Seite als SOAP zugreifen.
Vorhandene Methoden in den SOAP-Webdiensten:
Ausgangs-URL: http://x2:15048/BC150/OData/Company('CRONUS%20AG')/Kontenplan. Das Ergebnis:
Microsoft Richtlinien zum REST-API Entwicklung finden sich unter diesem Link. In unserem nächsten Schritt werden Filter angesetzt, um zu zeigen einige wichtigsten Features von OData - die Absprachmöglichkeiten. Dazu brauchen wir die folgenden Filter Operationen:
Und ein eigenes Beispiel mit einer REST-Api REQUEST. Strukturiertes URL-Request: http://x2:15048/BC150/OData/Company('CRONUS%20AG')/Kontenplan?$filter=No eq '0001'&$select=No,Name. Das Ergebnis:
In den folgen Beiträgen haben wir zwei Beispiele von REST-OData detailliert gezeigt.
Dynamics 365 Business Central TM (Navision) Entwickler und Berater Konrad Buczkowski