AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Client/Server Architektur realisieren - Ideen
Thema durchsuchen
Ansicht
Themen-Optionen

Client/Server Architektur realisieren - Ideen

Ein Thema von TheMiller · begonnen am 5. Dez 2014 · letzter Beitrag vom 28. Dez 2014
Antwort Antwort
Seite 9 von 10   « Erste     789 10      
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#81

AW: Client/Server Architektur realisieren - Ideen

  Alt 17. Dez 2014, 13:44
Ja, das kommt vom MSMQ, damit es eben keine Überflutungen gibt und die Programmierung des Abfrage-Threads ist sehr simpel (beispielhaft skizziert):
Delphi-Quellcode:
procedure TMSMQThread.Execute;
var
  LNachricht : ...
begin
  while not Terminated do
    if NachrichtInQueue( LNachricht ) then
      Queue(
        procedure
        begin
          TuWasMitNachricht( LNachricht );
        end );
end;
Wenn Nachrichten da sind feuert der wie ein ganz Großer, ansonsten wartet der die meiste Zeit
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Mikkey

Registriert seit: 5. Aug 2013
265 Beiträge
 
#82

AW: Client/Server Architektur realisieren - Ideen

  Alt 17. Dez 2014, 15:51
Da muss ich mich mal einmischen...

Wenn man die COM-Objekte der MSMQ verwendet (IMSMQQueue), kann man beim Empfangsversuch die Wartezeit angeben.

Methode Receive:

Function Receive(vTransaction, vWantDestQueue, vWantBody, vReceiveTimeout, vWantConnectorType): IMSMQMessage; Dabei ist vReceiveTimeout ein Variant und gibt die Wartedauer in Millisekunden an.
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#83

AW: Client/Server Architektur realisieren - Ideen

  Alt 19. Dez 2014, 12:16
Hallo,

ich frage mich gerade, ob die MSMQ-Variante eine gute Lösung ist. Wenn ich hier in der DP oder auf Google nach MSMQ suche ("Delphi msmq tutorial" / sample / code / msmq_tlb.pas / etc.), dann finde ich kaum Ergbenisse.

Das lässt mich vermuten, dass diese Technik wohl selten benutzt wird. Die Hilfe im msdn ist zwar sehr gut, aber Umsetzungsbeispiele etc.pp für Delphi finde ich kaum. Ich würde sie schon gerne benutzen, aber wirklich nur dann, wenn die Technik - naja, wie soll ich sagen - bekannt/verbreitet ist. Zwar scheint es die MQ schon lange zu geben, aber warum findet man so wenig? Macht mich etwas stutzig.

Sehe ich das falsch?
  Mit Zitat antworten Zitat
Mikkey

Registriert seit: 5. Aug 2013
265 Beiträge
 
#84

AW: Client/Server Architektur realisieren - Ideen

  Alt 19. Dez 2014, 14:57
Wieviel MSMQ benutzt wird, weiß ich nicht, aber die Verwendung ist recht simpel:

Delphi-Quellcode:
procedure TSample.Execute();
var
  qi: IMSMQQueueInfo3;
  ms: IMSMQMessage3;
  qu: IMSMQQueue3;
  vTransaction, vWantDestQueue: OleVariant;
  vWantBody, vReceiveTimeout, vWantConnectorType: OleVariant;
begin
  CoInitializeEx(nil, COINIT_MULTITHREADED);
  if TryCreateAndOpenQueue(qi, qu) then begin
      while not Terminated do
      try
        vTransaction := OleVariant(MQ_SINGLE_MESSAGE);
        vWantDestQueue := OleVariant(false);
        vWantBody := OleVariant(true);
        vReceiveTimeout := OleVariant(MSMQWAITTIME);
        vWantConnectorType := OleVariant(false);
        ms := qu.Receive(vTransaction, vWantDestQueue, vWantBody, vReceiveTimeout, vWantConnectorType);
        if Assigned(ms) then
          TuIrgendwasmitDerNachricht(ms);
      except on e: Exception do begin
          break;
        end;
      end;
  end;
  if Assigned(qu) then
    qu.Close();
  CoUninitialize();
end;
Dies ist das Empfangen von Nachrichten innerhalb eines TThread-Executes, das Senden ist einiges einfacher
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#85

AW: Client/Server Architektur realisieren - Ideen

  Alt 19. Dez 2014, 15:53
Und dann ist es eben so: Wenige Leute verwenden Delphi. Nicht so viele Leute verwenden MSMQ => Wenige*Nicht so viele = Viel Weniger.
  Mit Zitat antworten Zitat
Benutzerbild von humbuck
humbuck

Registriert seit: 26. Nov 2014
Ort: BW
65 Beiträge
 
Delphi XE4 Professional
 
#86

AW: Client/Server Architektur realisieren - Ideen

  Alt 19. Dez 2014, 18:58
LOL

Schöner Thread.

Niemand kann dir die Entscheidung abnehmen, wie du schon selbst festgestellt hast, DJ-SPM.

Eine Betrachtung des Kosten-Nutzen-Faktors spielt dabei sicherlich eine große Rolle. Und wie mir scheint, weißt du noch gar nicht, ob du die MQ nutzen kannst. Als Autodidakt wird es dich sicherlich mehr Zeit kosten, als würdest du mit Seminar-Wissen gesegnet sein.

Deine ursprüngliche Idee, die, wie mir schien, zum Greifen nah war, wurde jetzt erst mal tüchtig vernebelt durch den massiven Input von allen Meinungen und Empfehlungen, wie sie nicht unterschiedlicher sein können.

Eigentlich kann man dir nur empfehlen, das altbewährte einzusetzen, damit du ein Licht am Ende des Tunnels sehen kannst, solange du alleine vor der Umsetzung deines Projektes stehst. Und alternativ solltest du dir vielleicht einen Partner für die Entwicklung mit ins Boot nehmen, bei dem du dann vielleicht ein wenig mit den Augen klauen kannst. Vom Budget des Projekts abhängig.

Ist halt die Frage, ob dein Projekt in naher Zukunft schon Zukunft haben soll, da es von deinen Kunden gefordert wird, oder ob du dir alle Zeit der Welt herausnehmen kannst.

Naja, jedenfalls wenn du kurzfristig ergebnisorientiert handeln musst, musst du halt nur noch abwägen, wie lange es dauert, eine stabile TCP-Lösung zu verwirklichen, die all den Anforderungen vollständig und ohne viel Nachpflege entspricht... Und da wird es wahrscheinlich wieder schnell schwammig...

Gruß vom Jörch
Jörch
Wissen ist Macht!
Wenn man nix weiß, muss man halt nur wissen, wo man nachschlagen muss.
Ergo: Ich weiß nix - macht nix.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#87

AW: Client/Server Architektur realisieren - Ideen

  Alt 20. Dez 2014, 10:22
Zwar scheint es die MQ schon lange zu geben, aber warum findet man so wenig?
Möglicherweise wird Microsoft Message Queuing - ausser im Windows-Bereich - vegleichsweise selten eingesetzt, weil es viele etablierte Alternativen gibt, die auch auf anderen Betriebssystemen laufen. Neben Platzhirschen wie Tibco gibt es Open Source Lösungen, zum Beispiel RabbitMQ oder Apache ActiveMQ bzw. Apollo, die in der Industrie weit verbreitet eingesetzt werden. RabbitMQ zum Beispiel wird von der New York Times eingesetzt.

Es gibt unter anderem auch Open Source Clients für Message Broker, die mit Delphi verwendet werden können. (Ich selber entwickle kommerzielle Clients für ActiveMQ, Apollo, HornetQ, OpenMQ und RabbitMQ.)

Mit Delphi und ActiveMQ Apollo sind kontinuierlich 40.000 Nachrichten-Roundtrips pro Sekunde erreichbar. Das heißt: der Delphi Client sendet in einem Thread jede Sekunde 40.000 Nachrichten an den Apache Apollo Broker, dieser stellt sie in eine Queue, und der Client liest sie in einem anderen Thread aus der Queue. Siehe Screenshot...
Miniaturansicht angehängter Grafiken
tptest-chart-apollo-1-7.png  
Michael Justin

Geändert von mjustin (20. Dez 2014 um 10:25 Uhr)
  Mit Zitat antworten Zitat
vagtler

Registriert seit: 9. Jul 2010
Ort: Köln
667 Beiträge
 
Delphi 2010 Professional
 
#88

AW: Client/Server Architektur realisieren - Ideen

  Alt 20. Dez 2014, 10:56
Zwar scheint es die MQ schon lange zu geben, aber warum findet man so wenig?
Möglicherweise wird Microsoft Message Queuing - ausser im Windows-Bereich - vegleichsweise selten eingesetzt, weil es viele etablierte Alternativen gibt, die auch auf anderen Betriebssystemen laufen. [...]
Ja, das war es, was ich in http://www.delphipraxis.net/1283665-post71.html gesagt habe.
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#89

AW: Client/Server Architektur realisieren - Ideen

  Alt 22. Dez 2014, 10:01
Moin!

Es tut mir leid, dass ich nie am Wochenende zurückschreibe. Irgendwie sind die so vollgepackt momentan, dass ich stets nicht dazu komme.

Deine ursprüngliche Idee, die, wie mir schien, zum Greifen nah war, wurde jetzt erst mal tüchtig vernebelt durch den massiven Input von allen Meinungen und Empfehlungen, wie sie nicht unterschiedlicher sein können.

Eigentlich kann man dir nur empfehlen, das altbewährte einzusetzen, damit du ein Licht am Ende des Tunnels sehen kannst, solange du alleine vor der Umsetzung deines Projektes stehst. Und alternativ solltest du dir vielleicht einen Partner für die Entwicklung mit ins Boot nehmen, bei dem du dann vielleicht ein wenig mit den Augen klauen kannst. Vom Budget des Projekts abhängig.
Hm, du kennst mich nicht. Nur weil ich mich genau informiere, heißt das nicht, dass das Ziel weit weg ist. Schon am Freitrag lief der Windows-Dienst mit eigenständigem Thread. Auch das Erstellen, Öffnen und Schreiben in die MSMQ hat schon funktioniert (ich werde später eine Klasse erstellen und sie hier veröffentlichen).

Ist halt die Frage, ob dein Projekt in naher Zukunft schon Zukunft haben soll, da es von deinen Kunden gefordert wird, oder ob du dir alle Zeit der Welt herausnehmen kannst.
Von beidem etwas. Die aktuelle Version läuft stabil im produktiven Einsatz. Daher kann ich es mir erlauben, mich genau zu informieren und abzuwägen. Es hilft mir nichts, wenn wir zwei Wochen eher mit dem Programmieren anfagen und dann in 6 Monaten wieder alles umstellen.

Naja, jedenfalls wenn du kurzfristig ergebnisorientiert handeln musst, musst du halt nur noch abwägen, wie lange es dauert, eine stabile TCP-Lösung zu verwirklichen, die all den Anforderungen vollständig und ohne viel Nachpflege entspricht... Und da wird es wahrscheinlich wieder schnell schwammig...
Ich bin schon ein guter Programmierer - auch wenn ich hauptsächlich einen anderen Beruf ausübe. Klar habe ich auch mal ziemlich blöde Fragen und kenne nicht jede Technik. Ich mache das aber daran fest, wie lange und stabil unsere Produkte schon in der Praxis genutzt werden.

Ich denke dennoch, auf eine fertige Lösung zurückzugreifen ist immernoch zeitsparender, performanter und stabiler, als erstmal selbst eine TCP-Lösung zu entwickeln, zu testen, Kinderkrankheiten beseitigen etc.pp.

---

Nun bin ich natürlich wieder am Lesen, ob wir MSMQ verwenden (was schon teilweise läuft) oder doch lieber ActiveMQ o.ä.

Wenn wir nun doch mal einen MAC-Client anbieten wollen, dann ist MSMQ wohl die falsche Wahl. Wir wollen ja ohnehin eine iOS-App und vllt. eine Webseite zu dem Produkt erstellen, also würde es Richtung ActiveMQ tendieren. Richtig? Vielleicht gibt es hier noch ein paar persönliche Erfahrungswerte zu den einzelnen Techniken. Ich lese parallel in Google weiter und poste, wenn ich was Gutes gefunden habe.

Danke
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#90

AW: Client/Server Architektur realisieren - Ideen

  Alt 22. Dez 2014, 10:11
Generell sollte einer Anwendung egal sein, wie und worüber kommuniziert wird. Konkret wird man immer erst so spät wie möglich.

Ein Interface, dass alle benötigten Aktionen der Anwendung zur Verfügung stellt und dann die konkrete Implementierung mit dem Transportmittel deiner Wahl. Dann brauchst du nur noch die Implementierung tauschen und die Kommunikation läuft über MSMQ, ActiveMQ, eigene TCP Lösung, ...

Oder eben für die Mobile-Devices, die sowieso ganz anders kommunizieren müssen.

Wenn OSX denkbar ist, würde ich allerdings auch eher nicht auf MSMQ setzen, allerdings ist der gut für den Einstieg in das Thema MQ, denn mit ein/zwei Klicks kann man schon schnuppern
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 9 von 10   « Erste     789 10      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz