EDV ANWENDUNG

Webservices in Business Central - SOAP und OData

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":

  • Je nachdem was wir mit der Webservice machen wollen,
  • Je nachdem welche Datenvolumen in Frage kommen,
  • Je nachdem die Kommunikationsrichtung (ist Navision als der Webservice ausgestellt oder verbindet sich Navision zum anderen ausgestellten Systemen über die Webdienst)
  • Und viele andere Aspekten der Kommunikationsarchitektur die wir bauen wollen.

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.

Dynamics 365 Business Central - Vergleich von OData und SOAP

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.

Dynamics 365 Business Central (Navision) - Seitenart API.

  • 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.

Einrichtung von Web Services in Business Central

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)

Dynamics 365 Business Central (Navision) - Wiei möchten Sie weiter verfahren Seite

Auf der Liste von vorhandenen Webdiensten wählen wir den Kontenplan. In drei letzten Spalten sind schon URLs zu Webservices.

Dynamics 365 Business Central (Navision) - Webdiensten Seite

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.

Dynamics 365 Business Central (Navision) - Administration - Fehler beim Aufruf der Webdienst

Nicht die schönste Lösung, aber den Namen haben wir in "Lokale Benutzer und Gruppen" mit Command lusrmgr.msc entsprechend angepasst:

Lokale Benutzer und Gruppen Fenster

Nach dem Neustart der Dienst können die Webdienste mit dem Link aufgerufen werden. Dann werden wir um eine Authentifizierung gebeten

Log in zu Webdienst in Dynamics 365 Business Central (Navision)

Und dann wird die Seite als SOAP zugreifen.

SOAP Beispiel

SOAP Beispiel in Dynamics 365 Business Central (Navision)

Vorhandene Methoden in den SOAP-Webdiensten:

  • Codeunits: alle Funktionen mit Parameter
  • XML-Ports: Als Parameter in der Funktion in der Codeunit
  • Pages:
    • Create
    • CreateMultiple
    • Read
    • ReadMultiple
    • Update
    • UpdateMultiple
    • Delete
    • IsUpdated
    • ReadByRecID
    • GetRecIDFromKey
    • Delete_<PagePartName>
ODATA Beispiel

Ausgangs-URL: http://x2:15048/BC150/OData/Company('CRONUS%20AG')/Kontenplan. Das Ergebnis:

REST OData Beispiel in Dynamics 365 Business Central (Navision)

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:

ODATA REST 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:

Gefilterte OData REST Webdienst in Dynamics 365 Business Central (Navision)

Beispielsweise Webservises in Navision

In den folgen Beiträgen haben wir zwei Beispiele von REST-OData detailliert gezeigt.

  1. REST-OData Webservice zur Generierung vor QR-Kode-Bilder: Beitrag

Business Central - REST-OData Webservice zu QR-Kode-Bild generierung.

  1. REST-Apis in Business Central. Ein Beitrag, wie die vorhandenen REST-Apis mit Postman kommuniziert werden können.

Business Central - REST-Api Testen mit Postman

Dynamics 365 Business Central TM (Navision) Entwickler und Berater View Konrad Buczkowski's LinkedIn profile Konrad Buczkowski