Frage

Gehen Sie Kopfgeld!

Diese Frage hat mir ein Tumbleweed -Abzeichen eingebracht (7 Ansichten in 7 Tagen!), Was irgendwie eine starke Bestätigung ist Navision Hat einen sehr begrenzten Marktanteil, der - ich vermute - eine Bestätigungsnavision sein sollte, weder all das tolle Software ...

Aber hey ... das haben wir als Back-End bekommen, also bin ich bereit, damit zu kämpfen. :-Ö

Wenn es einen gewagten Navisionsentwickler gibt, der in der Lage ist, Licht darauf zu werfen, ist das Kopfgeld für Sie da! :)


Originalbeitrag

Ich habe kürzlich ein ziemlich komplexes E-Commerce-System implementiert, das mit einem älteren Back-End basierend auf Navision 5 interagiert Pannen.

Unsere Bedürfnisse sind:

  1. Zu Entdecken Sie bestimmte Elemente der Geschäftslogik von jeder Plattform auf die andere (z. B.: "Was ist der Gesamtbetrag, der jemals von diesem Kunden gekauft wurde?", "Was sind die Produkte derzeit angeboten?", "Wie viele neue Kunden haben sich auf der Website registriert?" usw. ..).
  2. Zu haben Mechanismen des Rückschläges / der Validierung Für die verschiedenen Transaktionen (zum Beispiel: "Hier ist eine neue Bestellung von Kunden x" ... "OK, habe es jetzt begonnen, die Bestellung verarbeitet zu werden" ... "OK, kopieren Sie das, Tschüss!").
  3. Wenn möglich, Vermeiden Sie es, mit Dateien herumzuspielen, aber all dies in Bezug auf Anrufe/Ports/Dienste zu halten ...

Die natürlichste Möglichkeit, die ich mir vorstellen könnte, wäre, die beiden Systeme über WebService zu integrieren, aber Navision 5 unterstützt dies nicht nativ. Also machte ich meine "Due Diligence" und fand ein paar Dinge auf MSDN, einschließlich Dieser Artikel und dieser andere.

Nach diesen Artikeln Es sollte nicht so schwierig sein, einen Webservice auf Navision 5 zu erstellen, Aber als ich diese Lösung für das für das Legacy -System verantwortliche Team vorschlug, sagten sie uns, dass es sich um eine "reine Theorie" handelt, und sie wissen niemanden, der sie jemals implementiert hat.

Ich habe keinen Grund, an ihrem Wort zu zweifeln, aber Kilometerstand kann variieren... und ich dachte, dass es in der SO -Community Fachleute aus anderen Ländern gibt, die tatsächlich etwas Ähnliches umgesetzt haben und ihre Erfahrungen teilen können.

Meine Frage ist also zweifach:

  1. Gibt es jemanden, der hat? versuchte es zu Hause und wäre verfügbar, um ein wenig über die größten Schwierigkeiten zu teilen, wenn das Endergebnis zuverlässig ist, wenn sie der Meinung sind, dass das Ergebnis die Mühe wert ist usw.?
  2. Gibt es jemanden, der einem ähnlichen Problem konfrontiert war, es aber mit einem anderen Ansatz gelöst hat und das zur Präsentation ihrer Lösung steht ("Ich habe es nie selbst gemacht, aber wenn ich es tun müsste, würde ich es so tun ..." Type Typ Antworten sind auch willkommen)?

Vielen Dank im Voraus für Ihre Zeit! :)

War es hilfreich?

Lösung

Ich werde auch mit einer nicht allzu hilfreichen Antwort zu NAV 6 einbringen :)

Ich habe gerade ein Projekt mit NAV 6 abgeschlossen. Überraschenderweise sind die Webservices sehr einfach zu enthüllen und zu konsumieren. Es ist wirklich eine triviale Angelegenheit, ein Objekt in der Webservices -Schnittstelle zu finden und ein Kästchen zu ticken, um es selbst zu enthüllen.

Unüberwindlich funktionieren die Webservices nicht wie erwartet. Sie müssen häufig einen Versuch verwenden-und Fehler, um Objekte und Eigenschaften zu bestehen, da es wirklich empfindlich ist, dass die Abfolge der Ereignisse, mit denen Sie speichern, und Objekte verwenden. Und jedes Objekt scheint etwas anders zu funktionieren. z. ich erwartet Um nur einen neuen Customer () zu erstellen, legen Sie die Attribute fest und speichern Sie einen schnellen Schlag.

Ich denke, Sie sind nicht besonders daran interessiert, auf NAV6 zu aktualisieren, aber außerhalb meines Kopfes können Sie Webdienste simulieren:

SharePoint kann Webservices bereits konsumieren und aufdecken, so dass Tier kein Problem ist. NAV 5 hat sie nicht "natürlich", aber Sie könnten Ihr eigenes Programm kochen, das als Webservice -Broker fungiert - Sie erhalten bereits Informationen in und außerhalb von NAV, über hauptsächlich XML. Sie können diesen Broker erstellen, um Eingaben als XML -Dateien zu nehmen und sie in einem WebService -Anruf zu massieren. Sie könnten sogar auf die XML verzichten und direkt aus der DB schreiben und lesen, da alle Navigationsinformationen dort sowieso gespeichert werden. Also hier ist was ich denke:

NAV <--> SQL Server <-> New 'Broker' WebService <-> SharePoint

Oder wenn Sie bereits die NAV -API im Down haben und Ihre XML wiederverwenden möchten:

NAV <--> XML-Dateien <-> New 'Broker' WebService <-> SharePoint

Wenn Sie XML verwenden und Filewatchers verwenden, sollte die Latenz nicht schlecht sein. Normalerweise nehmen Filewatchers einen Tropfen oder eine Änderung der Millisekunden ab.

Hmm, aber ich denke, du bist es wahrscheinlich Soll BizTalk für solche Sachen verwenden: nav <-> biztalk <-> SharePoint

Aber ich weiß nicht, wie einfach es wäre, BizTalk für die Kommunikation mit NAV einzurichten. Ich werde wetten, dass es ziemlich geraden ist, Comms zum Laufen zu bringen, aber das ist Spekulation.

Auf jeden Fall weiß ich nicht, wie hilfreich dieser Beitrag ist, aber vielleicht gibt es Ihnen ein paar Ideen.

Prost, Lance

Andere Tipps

Wo ich arbeite, konnten wir eines der Webdienste von NAV 6 nutzen, um mich in SharePoint zu integrieren, damit Sie einen Kunden oder Aufzeichnungen nachschlagen und in einem Webpart in SharePoint anzeigen können. Ich weiß, dass Ihre Frage insbesondere von NAV 5 betrifft, aber ich habe nur gesehen, dass dies auf NAV 6 funktioniert hat. Und ich war nicht der Entwickler, der daran gearbeitet hat, also habe ich keine weiteren Einzelheiten mehr, für die ich fürchte.

Haben Sie versucht, auf mibuso.com zu fragen? Sie sind viel mehr auf Navision ausgerichtet.

Wenn Sie sagen, dass die Geschäftslogik entdeckt wird, beinhaltet dies dann das Ausführen von AL -Code (z. B. eine CodeUnit)? Wenn Sie nur Abfragen an der Datenbank ausführen müssen, können Sie NODBC & System.data.ODBC oder die CFRONT .NET -API verwenden. Beide von diesen können problemlos mit einem .NET -Webdienst verpackt werden und unterstützen beide die native NAV -Datenbank. Um Nachrichten zurückzugeben, müssten Sie immer noch COM verwenden, wie in dem ersten Artikel, den Sie erwähnt haben, beschrieben.

Jedes der oben genannten Bestimmungen ist durchaus möglich und relativ einfach, abhängig von Ihren Kenntnissen in .NET, COM und NAV.

Der zweite Artikel, mit dem Sie verlinkt sind, beschreibt die Verwendung des NAS. Ich bin kein Experte dafür, aber ich denke, dies könnte ein spezielles Lizenzkörnchen erfordern. Bevor Sie Zeit damit verbringen, etwas zu implementieren, lohnt es sich, zu überprüfen, ob Ihre Lizenz die NAS, CFRONT oder NODBC enthält.

Sie können tatsächlich ein "technisches Upgrade" von NAV 5 auf NAV 2009 durchführen und dann die nativen Webservices verwenden. Was bedeutet, die EXE-Files und die gesamte Anwendung (jedoch nicht die Objekte, die noch Version 5) und ein paar andere Tricks ersetzen. Aber es funktioniert und so haben Sie 2009-Webservice-Funktionalität auf Ihrem NAV 5 :-)

Wenn Sie dies googeln, ist eine gute Möglichkeit, sie mit der Windows -Nachrichtenwarteschlange zu verbinden, wenn Sie dies noch in der Navision 6 mit der nativen Datenbank haben.

Sie können Ihren eigenen Webdienst schreiben, der XML -Anfragen in die Warteschlange stellt und dann auf die Antwort warten kann, um zu pop -up. Auf der Navisionsseite haben Sie einen Kunden, der die Warteschlange zieht und Antworten in die Antwortwarteschlange steckt. Dafür gibt es einen speziellen Nicht-Gui-Kunden namens NAS.

Ich benutze diesen Ansatz seit 15 Jahren, um Buchungsmotoren mit dem Navision Back End zu verbinden. Es funktioniert sehr gut und hat den Vorteil, dass Sie an Anfragen blicken können, bevor sie die Navision erreichen, sodass Sie Ihr Back -End vor zu vielen oder fehlerhaften Anfragen schützen können.

Das einzige Problem bei diesem Ansatz ist, dass der Befehl des Komitees innerhalb der Navision super teuer ist. Es ist schwierig, hohe Anfragen zu dienen. Sobald das Back -End bestritten werden muss, sind Sie nur wenige Anfragen pro Sekunde an. Dies kann für niedriges Volumen in Ordnung sein.

Für ein hohes Volumen müssen Sie das Caching implementieren oder einen Teil der Geschäftslogik herausholen. Für mich wurde es von Preisvergleichswebsites getroffen. Hier wird die Lösung aus Webdiensten in Python bedient und nur die Anfragen weitergeben, wenn jemand etwas kauft ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top