2016-04-06 36 views
2

Ich habe ein Problem, habe nicht viel Erfahrung in C#, so habe ich eine Menge Forschung und ich bin festgefahren.Kommunikation zwischen zwei C# -Anwendungen

Ich habe zwei Anwendungen C#, die ersten Anwendungen ist Windows-Formulare, die zweite läuft im Hintergrund, so dass die ersten Anwendungen eine (POS) Verkaufsstelle, die mit dem Hintergrund der Anwendung für Informationen kommunizieren müssen als (Produkte, Kunden, etc ...) und senden Sie Daten, also wollen Sie nicht Web-Service für Probleme wie Timeouts verwenden, so kann mir jeder mit einer Idee helfen, diese Aufgabe zu erfüllen?

Es ist wichtig zu erwähnen, dass die Anwendung im Hintergrund nur eine ist, während die POS-Anwendungen, die damit kommunizieren werden, eine Menge sein werden (Anzahl der Apps).

+0

WCF-Dienste MSMQ verwenden können sicher Nachrichten machen nicht verloren gehen. Schließen Sie also Web-Services nicht zu schnell aus –

Antwort

2

Es gibt eine Vielzahl von Möglichkeiten der Interprozesskommunikation. Da die Frage so generisch ist, werde ich auf einige allgemeinere Wege hinweisen.

  • Der Hintergrundprozess kann ein Windows-Dienst sein, der die DB- und POS-Systeme aktualisiert und die Datenbank abfragt, um die benötigten Daten abzurufen. Selbst wenn der Hintergrundprozess von derselben Datenbank gelesen wird, können Sie eine separate Tabelle mit "fertig" Informationen für das POS-Stück zur Abholung bereit haben. Jetzt können Sie eine Datei anstelle einer DB verwenden, um auch diese fertigen Ergebnisse zu speichern, aber die meisten bevorzugen DB.
  • Sie können den WCF-Kanal verwenden, um die Kommunikation zwischen dem POS-Teil und dem Hintergrundprozess herzustellen.
  • Sie können Ihren Hintergrundprozess in einen Web-Service umwandeln und Ihr POS-Stück mit XML kommunizieren lassen. Ich denke nicht, dass ein Timeout-Problem ein Problem sein sollte. Sie müssen besser erklären, welches Zeitlimit-Problem dazu führt, dass Sie diese Option nicht verwenden.
  • Sie können das ganze Stück in eine Website konvertieren und das POS wird einfach ein Browser dann
  • Sie können einen Bus wie Tibco oder MQ verwenden, um Daten zu übergeben.
  • Oder Sie können die altmodische Art der TCP-Sockets gehen.
  • Der am meisten bevorzugte Weg ist in der Regel die Web-Service oder Website-Weg, abhängig von Ihren Einschränkungen.

    1

    Normalerweise verwenden Sie eine Nachrichtenwarteschlange für so etwas. Sie sind eine Komponente bei der Sicherstellung einer sauberen Trennung von Problemen, die eine Reduzierung und anwendungsübergreifende Kopplung bewirken, und sollen Nachrichten von einigen Herausgebern erhalten (wodurch der Herausgeber von jeglicher weiteren Verantwortung befreit wird) und Nachrichten an einige Abonnenten weiterleiten.

    RabbitMQ ist ein beliebter Rahmen. https://www.rabbitmq.com/

    (beachten Sie, dass RabbitMQ (und anderen Frameworks Fertig-) können manchmal für neue Anwendungsprogrammierer entmutigend werden, da sie sehr viele Anwendungsfälle behandeln jedoch die zugrunde liegende Konzept des Schreibens Von einer Anwendung zu einer Warteschlange zu gehen und aus der Warteschlange in der anderen Anwendung zu lesen, ist wirklich der Schlüssel hier ... zögern Sie nicht, ein kleines Dienstprogramm als Lernerfahrung zu implementieren, aber ich empfehle ein bereits bestehendes Framework, wenn Sie wieder bequem mit solchen)

    Verwandte Themen