# Unterschied Producer-Consumer und Provider-Consumer Modell



## Sebastian_TIA (28 September 2015)

Hallo Community,

ich muss einen kleinen Vortrag über Feldbus / Industrial Ethernet halten.

Nun bin ich bei meiner Recherche häufig über die verschiedenen Modellbezeichnungen und deren Definitionen gestolpert und bin mir nun doch etwas unsicher was nun fachlich korrekt ist.

Definition:
Es wird von einem Teilnehmer (Producer) an alle anderen Teilnehmer (Consumer) eine Nachricht versendet. Dabei werden diese Nachrichten über eindeutige "Telegramm-Identifier" gekennzeichnet. Die interessierenden Consumer können dann diese Nachricht aufnehmen und verarbeiten. Da der Empfänger nicht bekannt ist, findet hier keine verbindungsorientierte Verbindung statt. Das heißt, Slaves können ihre Daten ohne explizite Aufforderung an den Master senden.

Gibt es in der Technik überhaupt einen Unterschied zwischen dem Producer-Consumer-Modell und Provider-Consumer-Modell?? Oder wird hier für das Gleiche nur ein unterschiedlicher Name verwendet??

Danke für eure Hilfe.


----------



## Gerhard Bäurle (28 September 2015)

Sebastian_TIA schrieb:


> Definition:
> Es wird von einem Teilnehmer (Producer) an alle anderen Teilnehmer (Consumer) eine Nachricht versendet. Dabei werden diese Nachrichten über eindeutige "Telegramm-Identifier" gekennzeichnet. Die interessierenden Consumer können dann diese Nachricht aufnehmen und verarbeiten. Da der Empfänger nicht bekannt ist, findet hier keine verbindungsorientierte Verbindung statt. Das heißt, Slaves können ihre Daten ohne explizite Aufforderung an den Master senden.



Woher hast Du denn diese seltsame Definition? 

Schaue mal hier: https://de.wikipedia.org/wiki/Feldbus


----------



## Sebastian_TIA (29 September 2015)

Mh... bin mir nun nicht sicher, was du mir mit dem Link sagen willst?? Dort steht ja gar nichts über die Verschiedenen Modelle... Und bezüglich meiner Frage steht dort ja auch nichts...

http://www6.in.tum.de/pub/Main/Teac...edded/Feldbusse_und_Kommunikationssysteme.pdf
=> Seite 6 ( Uni München)
Hier habe ich die Definition gefunden.

Prinzipiell ist meine Frage ja einfach:  Gibt es einen unterschied zwischen Producer-Consumer und Provider-Consumer Modell??


----------



## norustnotrust (29 September 2015)

Also wenn ich den Text richtig lese dann meint der Autor das gleiche:



> 2.Provider-Consumer-Modell
> Es wird von einem Teilnehmer (Producer)an alle anderen Teilnehmer (Consumer) eine Nachrichtver-sendet. Dieses wird als Broadcasting bezeichnet. Dabei werden dieseNachrichten über eindeutige Telegramm-Identifier" gekennzeichnet. Die interessierendenConsumer können dann diese aufnehmen und verarbeiten. Da der Empfänger nichtbekannt ist, findet hier keine verbindungsorientierte Verbin-dung statt.(4)(12)


----------



## ChristophD (29 September 2015)

laut dem von dir angegeben Dokument gibt es keinen Unterschied zwischen Producer-Consumer-Modell und Provider-Consumer-Modell!


----------



## Sebastian_TIA (29 September 2015)

OK, Danke!

Das habe ich auch fast vermutet, dass mit der Bezeichnung "Provider" und "Producer" im Grunde das Gleiche gemeint wird.


----------



## Gerhard Bäurle (29 September 2015)

Jetzt komme ich als Spielverderber 

Aber der Reihe nach ... in der Praxis werden häufig 
Dinge als gegeben hingenommen, ohne die dahinter
liegenden Modelle und Theorie zu hinterfragen.
Deswegen kommen die Antworten hier eher verhalten.

Zum Thema – wenn ich das hier lese:

https://msdn.microsoft.com/de-de/library/hh228601(v=vs.110).aspx
http://www.lernkaertchen.ch/kaertchen15002

komme ich zum Schluss, dass in Deiner PDF ein Fehler sein muss.



			
				PDF schrieb:
			
		

> 2. Provider-Consumer-Modell
> Es wird von einem Teilnehmer (Producer) an alle anderen Teilnehmer (Consumer) eine Nachricht ver-sendet. Dieses wird als Broadcasting bezeichnet. Dabei werden diese Nachrichten über eindeutige "Te-legramm-Identifier" gekennzeichnet. Die interessierenden Consumer können dann diese aufnehmen und verarbeiten. Da der Empfänger nicht bekannt ist, findet hier keine verbindungsorientierte Verbin-dung statt. (4) (12)
> 3. Datenorientierte Schnittstelle
> Es erfolgt ein Zugriff auf einen gemeinsamen Speicher durch das Bussystem und Anwenderprogramm. Die Informationen werden dabei entweder zyklisch oder gleich abgefragt, wenn es eine Änderung erfolgt hat. Hierbei sind wegen der Ansammlung der zu übertragenden Daten die Zeitverzögerungen möglich, da die Daten im gemeinsamen Speicher gelagert werden. Durch den Einsatz dieser Schnittstelle werden hohe Übertragungssequenz sowie eine schnelle Datenübertragung erreicht. Das Producer-Consumer Modell nutzt oft diese Art von Schnittstellen. (1) (13)



Wenn statt Producer Provider stehen würde, wäre 

der Text schlüssig
tatsächlich ein Unterschied:
beim Provider-Consumer-Modell erfolgt der 
Datenaustausch über Telegramme
beim Producer-Consumer-Modell erfolgt der Daten-
austausch über einen gemeinsamen Speicherbereich


Vermutlich ist Producer-Consumer viel schneller, da die 
Auswertung der Telegramme weg fällt.


----------



## norustnotrust (30 September 2015)

Der Test ist aber auch schlüssig wenn ich das Wort "Provider" durch das Wort "Producer" ersetze





> 2. Provider-Consumer-Modell
> Es wird von einem Teilnehmer (Producer) an  alle anderen Teilnehmer (Consumer) eine Nachricht ver-sendet. Dieses  wird als Broadcasting bezeichnet. Dabei werden diese Nachrichten über  eindeutige "Te-legramm-Identifier" gekennzeichnet. Die interessierenden  Consumer können dann diese aufnehmen und verarbeiten. Da der Empfänger  nicht bekannt ist, findet hier keine verbindungsorientierte Verbin-dung  statt. (4) (12)
> 3. Datenorientierte Schnittstelle
> Es erfolgt ein Zugriff auf einen gemeinsamen Speicher durch das  Bussystem und Anwenderprogramm. Die Informationen werden dabei entweder  zyklisch oder gleich abgefragt, wenn es eine Änderung erfolgt hat.  Hierbei sind wegen der Ansammlung der zu übertragenden Daten die  Zeitverzögerungen möglich, da die Daten im gemeinsamen Speicher gelagert  werden. Durch den Einsatz dieser Schnittstelle werden hohe  Übertragungssequenz sowie eine schnelle Datenübertragung erreicht. Das  Producer-Consumer Modell nutzt oft diese Art von Schnittstellen. (1)  (13)



Für mich ist der Text dahingehend unschlüssig als dass nach meinem Verständnis 1-4 nicht Varianten eines Themas sind sondern 1&2 Konzepte für "Datenaustauschmodelle" und 3&4 Konzepte für "Schnittstellenmodelle" sind (und daher eine eigene Überschrift verdienen würden). Liest du den Text logisch fertig dann steht da auch:



> 4.
> Nachrichtenorientierte Schnittstelle
> Bei der nachrichtenorientierten Schnittstelle werden die Nachrichten von den Teilnehmern direkt verschickt. Die Benachrichtigungen über Fehler werden mit Hilfe von Ereignissen an alle beteiligten Teilnehmern übertragen. Somit ist die Verwendung solcher Schnittstelle wegen Diagnose und Wartung für die Anwendungsprogramme sehr geeignet. Die Kommunikation erfolgt verbindungsorientiert und so-mit findet hier oft das Client-Server Modell die Anwendung



Also nach logischer Textanalyse würde ich vermuten dass die Elemente 1&2 gleichwertig sind wobei 3&4 Attribute sind die jeweils auf 1&2 anwendbar sind wobei es üblich ist dass 3 auf 2 angewendet wird und 4 auf 1.

Rein technisch macht ja imho was anderes auch wenig Sinn. Entweder ich habe eine Punkt zu Punkt Verbindung (Client Server) oder ich habe ein Abonentensystem (Provider Consumer)


----------



## Marco Freihöfer (30 September 2015)

Gerhard Bäurle schrieb:


> Jetzt komme ich als Spielverderber
> 
> komme ich zum Schluss, dass in Deiner PDF ein Fehler sein muss.
> 
> ...



Genau so ist es richtig. Provider/Consumer und Producer/Consumer ist nicht das Gleiche. 

Beispiel für Provider/Consumer = PROFINET

Beispiel für Producer/Consumer = Ethernet/IP


----------



## norustnotrust (30 September 2015)

Marco Freihöfer schrieb:


> Genau so ist es richtig. Provider/Consumer und Producer/Consumer ist nicht das Gleiche.
> 
> Beispiel für Provider/Consumer = PROFINET
> 
> Beispiel für Producer/Consumer = Ethernet/IP



Hast du dazu auch eine Quelle?

EDT:
Siehe z.B. hier https://www.google.at/url?sa=t&rct=...ache=1&usg=AFQjCNHV35YuZOGZbHSNf2IgvWoC1nKovg


----------



## Marco Freihöfer (30 September 2015)

Unser Schwerpunkt liegt im Bereich PROFINET und weniger Ethernet/IP. daher kann ich dir zu den Quellen für das Producer/Consumer Prinzip nicht großartig weiterhelfen. 

Eine Definition für Producer/Consumer kann ich leider nur auf englisch anbieten:  http://javarevisited.blogspot.de/2012/02/producer-consumer-design-pattern-with.html

Provider/Consumer wir hier etwas erklärt: http://www.feldbusse.de/Profinet/profinet.shtml

Des weiteren kann ich Dir die Lektüre von Manfred Popp "Industrielle Kommunikation" in der aktuellen Ausgabe empfehlen.


----------



## norustnotrust (30 September 2015)

Also erstmal sind in beiden Artikel die Begriffe nur verwendet und rudimentär erklärt. Daher frage ich mich inwieweit sich diese dafür eignen unser Dilemma zu klären. Ich verstehe in den Links aber eher eine Bestätigung meiner Meinung.



> [h=1]Producer Consumer Design Pattern with Blocking Queue Example in Java [/h]*Producer Consumer Design pattern* is a classic concurrency or threading pattern which reduces coupling between
> Producer and Consumer by separating Identification of work with Execution of Work. In producer consumer design pattern a shared queue is used to control the flow and this separation allows you to code producer and consumer separately. It also addresses the issue of different timing require to produce item or consuming item. by using *producer consumer pattern* both Producer and Consumer Thread can work with different speed. In this article we will see _What is producer consumer problem_ which is very popular multi-threading interview question, How to solve producer consumer problem using Blocking Queue and Benefits of using Producer Consumer design pattern.



Behandelt erstmal eine konkrete Implentierung eines "Producer Consumer Design Patterns" mittels einer "blocking Qeue" die verwendet wird um in einem Multithreading System der Tatsache gerecht zu werden dass die beiden Threads asynchron arbeiten. Das machen sie mit einer "shared Blocking Queue".


```
class [B]Producer[/B] implements [B]Runnable[/B] {



    private final [B]BlockingQueue[/B] sharedQueue;



    public Producer(BlockingQueue sharedQueue) {
        this.sharedQueue = sharedQueue;
    }
```

Demnach würde ich sagen wir reden von einem* Producer Consumer Modell *mit *Datenorientierter Schnittstelle.


*


> Bei Profinet  IO wird im Gegensatz zum Master-Slave-Verfahren von  Profibus ein  Provider-Consumer-Modell verwendet, das die  Kommunikationsbeziehungen zwischen  den gleichberechtigten Teilnehmern  am Ethernet unterstützt. Wesentliches  Merkmal dabei ist, dass der  Provider seine Daten ohne Aufforderung des  Kommunikationspartners  sendet. Neben dem zyklischen Nutzdatenaustausch bietet  Profinet  zusätzliche Funktionen für die Übertragung von Diagnosen,   Parametrierungen und Alarmen.


Im Gegensatz dazu ist das bei Profinet auch ein Producer Consumer Modell (https://de.wikipedia.org/wiki/Profinet, http://www.profinet.felser.ch/index.html?verschaltungs-download.htm, http://www.automation.com/pdf_articles/hms/Whitepaper_Time_to_move_to_PROFINET.pdf) das Aufgrund der Tatsache dass sich Producer und Consumer keinen Speicherbereich teilen nach einem *Producer Consumer Modell *mit *Nachrichtenorientirter Schnittstelle* arbeitet


----------



## Sebastian_TIA (30 September 2015)

> Genau so ist es richtig. Provider/Consumer und Producer/Consumer ist nicht das Gleiche.
> 
> Beispiel für Provider/Consumer = PROFINET
> 
> Beispiel für Producer/Consumer = Ethernet/IP



Die Aussage von Marco erscheint mir nicht schlüssig zu sein... Ist ja auch nur eine Behauptung!

Ich bleibe der Meinung, dass Provider und Producer - Consumer Modell im Grunde das gleiche meint!

Außer, es wird mit einer Quelle wiederlegt und dann bitte ich aber um eine verständliche Beschreibung in einfachen Worten.

Bei Wikipedia z.B. steht unter ProfiNet: 





> Dazu verwendet Profinet IO Ethernet-basierte Protokolle, folgt dem Producer-/Consumer-Modell und eignet sich je nach Konformitätsklasse für Buszykluszeiten von mehreren ms bis zu 31,25 μs.


----------

