Laden...

Winforms Programm auf Client/Server umbauen

Erstellt von stony17 vor 4 Jahren Letzter Beitrag vor einem Jahr 1.628 Views
S
stony17 Themenstarter:in
36 Beiträge seit 2010
vor 4 Jahren
Winforms Programm auf Client/Server umbauen

Hallo,

ich habe ein WinForms-Programm welches aktuell auf ca. 40 Computern installiert ist. Dieses Programm kommuniziert mit Microsoft Navision (ERP) über Webservices und einen OPC-Server (KEPServerEX) über eine DLL vom Hersteller (ClientACE).
Die Funktion des Programm ist:
Mitarbeiter an dem Arbeitsplatz anzumelden
Fertigungsaufträge zu buchen
Maschinendaten abzuholen und zu speichern
Etiketten zu drucken
usw.
also im Prinzip eine Client für Navision um BDE/MDE Anforderungen abzudecken.

Aktuell ist es ausschließlich eine Client Applikation.

Nun würde ich gerne ein wenig zentrale Funktionen einbauen:
Wo läuft das Programm aktuell
Welche Version ist wo im Einsatz
Möchte mehreren Benutzern eine Nachricht senden
Wie lange läuft das Programm bereits
usw.

Auch habe ich das Problem bei Programmänderungen, das ich jeden PC nachrennen muss.
Updaten kann man nur wenn keine Produktion stattfinden, da das Programm ständig Daten nach Navision übertragen muss. Sprich in der Pause der Produktion oder nach Schichtende.

Wie könnte ich sowas in mehreren Stufen umsetzen.
Am Ende möchte ich die gesamte Logik auf einen Server haben bzw. mehreren Serven (Ausfallsicherheit).

Welche Technologien sollte man dafür verwenden.

Mein akutelles Wissen ist C# und hier nur Winforms, ein wenig NODE und Javascript( React).

Besten Dank für eure Vorschläge.
lg stony

lg
stony

2.207 Beiträge seit 2011
vor 4 Jahren

Hallo stony17,

wir haben schon mehrere Threads, die eventuell helfen könnten. Dchau mal hier:

Welche Technologie für Webentwicklung (Frontend) stand ende 2018
Web-Programmierung - Fragen zur Herangehensweise.
Der richtige Einstieg in die Webentwicklung - Roter Faden?

Ich hoffe, die helfen dir weiter.

Gruss

Coffeebean

S
stony17 Themenstarter:in
36 Beiträge seit 2010
vor einem Jahr

Hallo,
ich möchte euch bitte nochmal gerne um eure Info dazu bitte.
Hat sich ja einiges getan in der Zwischenzeit.
Die Applikation läuft nach wie vor mit der eingangs erwähnten Technologie.

Auf Seite von Navision und den OPC Server können wir jetzt aber mit Rest API zugreifen.

Welche Architektur/Technologie könnte ich dafür einsetzen.

Die Anforderungen sind die gleichen geblieben.
Hinzugekommen ist das es Fertigungsbereiche gibt wo z.B. zwei Computer sind und diese miteinander kommunizieren müssen.
Sprich ich betätige einen Button in der Applikation, dann muss dies auch auf den anderen Computer sichtbar sein.
Z.B. es wird Rüsten gedrückt.

Danke und lg
stony

lg
stony

A
764 Beiträge seit 2007
vor einem Jahr

Hallo stony17

Wie könnte ich sowas in mehreren Stufen umsetzen.
Am Ende möchte ich die gesamte Logik auf einen Server haben bzw. mehreren Serven (Ausfallsicherheit).

Welche Technologien sollte man dafür verwenden.

Für die Kommunikation mit der Server-Anwendung kannst du Beispielsweise sowas verwenden: https://github.com/grpc/grpc
Oder du setzt einen REST-Server auf. Das halte ich aber für komplexer. Unter anderem wegen der Sicherheitsaspekte.

Die gesamte Logik auf dem Server zu haben macht nicht zwangsläufig Sinn. Entscheide lieber, welche Logik wohin passt.

Auch habe ich das Problem bei Programmänderungen, das ich jeden PC nachrennen muss.
Updaten kann man nur wenn keine Produktion stattfinden, da das Programm ständig Daten nach Navision übertragen muss. Sprich in der Pause der Produktion oder nach Schichtende.

Für die Update-Funktionialität gibt es auch fertige Pakete, beispielsweise: https://github.com/ravibpatel/AutoUpdater.NET

Eventuell macht es auch Sinn, einen Windows-Service einzurichten, der sicherstellt, dass die Anwendung läuft und aktuell ist. Das hängt aber von den Umständen ab.

Ausfallsicherheit ist wieder ein eigenes Thema. Da könntest du dich mit Docker beschäftigen und wie man den Server per Script deployed, bzw, neu aufsetzt. Da kann man aber beliebig viel Zeit investieren.

Gruß
Alf

16.806 Beiträge seit 2008
vor einem Jahr

Für Deine Situation gibt es nicht "die eine Architektur", die Du einfach kopieren kannst.

Sprich ich betätige einen Button in der Applikation, dann muss dies auch auf den anderen Computer sichtbar sein.
Z.B. es wird Rüsten gedrückt.

Alleine für diesen Fall gibt es mindestens 3 Wege, die erstmal ähnlich klingen, aber in der Realität Welten auseinander sind.

Ich komm auch aus der Maschinenbau/Zulieferer-Welt und vielen Fertigungsfirmen darf eine Direktkommunikation zwischen 2 PCs gar nicht stattfinden, sondern man muss immer über einen Server gehen. Es könnten also verschiedene Kommunikationswege unterstützt werden müssen, um dies in mehreren Szenarien einsetzen zu können.

Da mal kurz in einem Forum zu fragen "Hey Leute, welche Architektur kann man hier einsetzen?" - sorry, das ist nicht 😉
Wir kennen die Details nicht. Du musst Dir Zeit nehmen, die Anforderungen auch im Detail aufnehmen und dann kannst Du verschiedene Architekturen evaluieren.
Es ist zudem sehr wahrscheinlich, dass Du verschiedene Wege vorsehen musst - nicht nur einen.

Updaten kann man nur wenn keine Produktion stattfinden, da das Programm ständig Daten nach Navision übertragen muss. Sprich in der Pause der Produktion oder nach Schichtende.

Auch hier ist es wichtig nicht irgendeinen Updater zu nehmen, sondern einen, der auf euer Szenario, passt.

Ein "ordentliches", stabiles Setup mit einer stabilen Architektur ist in Deinem Fall definitiv kein Wochenendprojekt 😉
Hab das schon 10-15 mal hinter mir..