externe Schnittstelle entwickeln

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
george
User
Beiträge: 109
Registriert: Mittwoch 11. Januar 2006, 20:28
Wohnort: Berlin

externe Schnittstelle entwickeln

Beitragvon george » Montag 20. November 2006, 10:53

Hey,

ich soll eine Schnittstelle entwickeln, die das externe Steuern einer Hardwarekomponente ermöglichen soll.
Damit meine ich, ich stelle Funktionalität zur Verfügung, die der Anwender nutzen kann. Die Programmiersprache des Anwenders ist dabei egal(z.B. Visual Basic). Ich muss also eine Schnittstelle zur Verfügung stellen, die sprachunabhängig ist.
Wie würdet ihr dies realisieren? Eventuell als DLL?
Danke

greets george
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 20. November 2006, 11:07

Ich würde es als XML-RPC-Dienst zur Verfügung stellen: Viele Programmiersprachen unterstützen (d.h. haben Libs für) XML-RPC und für die meisten Zwecke reicht es glaube ich auch aus.
Hat auch den Vorteil, dass die Schnittstelle nicht auf dem gleichen Rechner sein muss, und auch nicht das gleiche OS oder gar den gleichen Compiler nutzen muss. Bei einer DLL hast du eben das Problem, dass du unter Linux sofort ausgeschlossen bist. Zusätzlich hast du das Problem, dass du die Schnittstelle erstmal kompilieren musst.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Montag 20. November 2006, 11:35

Leonidas hat geschrieben:Ich würde es als XML-RPC-Dienst zur Verfügung stellen:

Hi!

Das kann ich nur unterstützen. Zusätzlich möchte ich aber auch noch ein einfaches Kommandozeileninterface vorschlagen. Allerdings nur, wenn die Kommunikation nur in eine Richtung geht. Also, wenn z.B. einfach nur ein paar Relais geschaltet werden sollen.
[code=]schalte.py --switch1=on --switch2=off --switch3=on
schalte.py --switch1=off --switch2=on --switch3=off[/code]

Wenn es komplexer wird, dann ist ein Dienst (=Service, =Daemon), der per XML-RPC kommuniziert, eine wirklich gute Idee.
Wie ein HTTP-Server, ist so ein XML-RPC-Server komplett unabhängig von der Programmiersprache.

http://www.python-forum.de/topic-5478.html

mfg
Gerold
:-)

Edit: HTML-->HTTP :-)
Zuletzt geändert von gerold am Montag 20. November 2006, 11:58, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 20. November 2006, 11:39

gerold hat geschrieben:Wie ein HTML-Server, ist so ein XML-RPC-Server komplett unabhängig von der Programmiersprache.

Kleine Korrektur: HTTP-Server statt HTML-Server ;)

Aber ansonsten hat gerold vollkommen recht, für ganz einfache Sachen eignet sich natürlich ein Kommandozeilenprogramm auch sehr gut.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
george
User
Beiträge: 109
Registriert: Mittwoch 11. Januar 2006, 20:28
Wohnort: Berlin

Beitragvon george » Montag 20. November 2006, 12:44

Hey,

danke für eure Antworten.
Mit XMLRPC habe ich noch nicht gearbeitet. Werde es mir mal anschauen.
Mir ist an der Stelle noch nicht ganz klar, wie z.B. ein VisualBasic-Client zugreifen kann.

Zwei weitere Alternativen, über die ich nachdedacht habe, sind:

1.) Kleiner Netzwerk-Server mit twisted und TCP/IP
(ich denke, dass XMLRPC so ähnlich funktioniert, oder?)
2.) einen kleinen COM-Server bauen. Habe das folgende Beispiel gefunden
Beispiel

Ich denke aber, dass diese Idee verschiedene Nachteile bietet.
Wie sind eure Erfahrungen hierzu?


greets george

Edit by gerold: URL gekürzt
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Montag 20. November 2006, 12:59

george hat geschrieben:Mir ist an der Stelle noch nicht ganz klar, wie z.B. ein VisualBasic-Client zugreifen kann.

Hi george!

1.) Wenn du eine Lösung suchst, die nur unter Windows laufen soll, dann solltest du das auch schon bei der Frage dazuschreiben. :?

2.) "Visual Basic 6" und "Visual Basic.NET" sind zwei paar Schuhe. Welches davon meinst du?

mfg
Gerold
:-|
http://halvar.at | Kleiner Bascom AVR Kurs

Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Montag 20. November 2006, 13:03

http://halvar.at | Kleiner Bascom AVR Kurs

Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
george
User
Beiträge: 109
Registriert: Mittwoch 11. Januar 2006, 20:28
Wohnort: Berlin

Beitragvon george » Montag 20. November 2006, 13:06

Hey gerold,

1.) Wenn du eine Lösung suchst, die nur unter Windows laufen soll, dann solltest du das auch schon bei der Frage dazuschreiben.


Sorry. Das Client-OS ist ein Windowssystem.

2.) "Visual Basic 6" und "Visual Basic.NET" sind zwei paar Schuhe. Welches davon meinst du?


Das ist vom Kunden noch nicht eindeutig spezifiziert worden.
Ich muss also so designen, dass die Programmiersprache des Clients eher sekundär ist.

Danke
greets george
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 22. November 2006, 00:04

george hat geschrieben:Mit XMLRPC habe ich noch nicht gearbeitet. Werde es mir mal anschauen.
Mir ist an der Stelle noch nicht ganz klar, wie z.B. ein VisualBasic-Client zugreifen kann.

Über eine Library.

george hat geschrieben:1.) Kleiner Netzwerk-Server mit twisted und TCP/IP
(ich denke, dass XMLRPC so ähnlich funktioniert, oder?)

Ähnlich, aber wesentlich einfacher.

george hat geschrieben:2.) einen kleinen COM-Server bauen. Habe das folgende Beispiel gefunden
Beispiel

Also COM finde ich persönlich nicht so toll - die COM-Unterstützung ist zwar gegeben, aber die Unterstützung für XML-RPC ist Python-Seitens wesentlich besser, sie ist sogar in der stdlib.


george hat geschrieben:
2.) "Visual Basic 6" und "Visual Basic.NET" sind zwei paar Schuhe. Welches davon meinst du?


Das ist vom Kunden noch nicht eindeutig spezifiziert worden.
Ich muss also so designen, dass die Programmiersprache des Clients eher sekundär ist.

COM und XML-RPC erfüllen beide dieses Kriterium. XML-RPC sogar noch mehr, da es mehr XML-RPC Libraties für verschiedene Programmiersprachen gibt, als COM-Libraries.

Wenn du in die Implementations-Liste auf xmlrpc.com guckst, dann siehst du dort 5 Client und eine Server-Implementation für VB (du brauchst aber sowieso nur Client). Ich muss zugeben, dass ich irgendwann mal aus Spass eine dieser Libraries (comxmlrpc oder vbXMLRPC, das weiß ich nicht mehr genau) aus Python heraus über COM benutzt habe. Und für .NET gibt es auch zwei Libraries (wovon eine allerdings einen toten Link hat).
My god, it's full of CARs! | Leonidasvoice vs Modvoice
george
User
Beiträge: 109
Registriert: Mittwoch 11. Januar 2006, 20:28
Wohnort: Berlin

Beitragvon george » Mittwoch 22. November 2006, 08:06

Hey Leonidas,

danke noch einmal für deine ausführliche Antwort und den Hinweis zu den Beispielen.
Ich denke, dass ich es als XMLRPC entwickeln werde(wie auch von gerold geraten).
Danke

greets george
dev
User
Beiträge: 49
Registriert: Montag 23. Januar 2006, 09:52
Kontaktdaten:

Beitragvon dev » Mittwoch 22. November 2006, 19:30

Leonidas hat geschrieben:
george hat geschrieben:1.) Kleiner Netzwerk-Server mit twisted und TCP/IP
(ich denke, dass XMLRPC so ähnlich funktioniert, oder?)

Ähnlich, aber wesentlich einfacher.


Wieso eigentlich wesentlich einfacher? (Mal abgesehen davon, daß wir hier gerade quer durch die Schichten vergleichen.)

http://www.python-forum.de/post-46983.html#46983

Mir liegt fern hier einen Glaubenskrieg vom Zaun zu brechen, mich würde nur interessieren, wieso nahezu immer, wenn der Begriff Twisted fällt, sofort Kreuze, Weihwasser und Knoblauch gezückt werden. :wink:

Ich beobachte Twisted seit mehreren Jahren und nutze es seit nunmehr zwei Jahren exzessiv für meine Projekte.
Wobei ich zugegebenerweise viele Bereiche des Frameworks auf Grund dessen schieren Umfangs noch nicht genutzt habe.

Ich würde es aber auf jeden Fall nicht mehr missen wollen.

Liegt es vielleicht an den Deferreds?
An der Idee threads zu vermeiden?
An der Dokumentationssituation?

Ciao,
dev
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 22. November 2006, 21:33

dev hat geschrieben:Wieso eigentlich wesentlich einfacher? (Mal abgesehen davon, daß wir hier gerade quer durch die Schichten vergleichen.)

Aus mehreren Gründen: es ist mitgeliefert (man muss also nicht Twisted rauspacken, weil es schon seit langem in der stdlib ist), es ist gut dokumentiert. Verlutlich ist auch der Quelltext einfacher verständlich, weil es einfacher gestrickt ist als das Framework Twisted.


Zugegeben, simpel. Das ist SimpleXMLRPCServer aber auch.

dev hat geschrieben:Mir liegt fern hier einen Glaubenskrieg vom Zaun zu brechen, mich würde nur interessieren, wieso nahezu immer, wenn der Begriff Twisted fällt, sofort Kreuze, Weihwasser und Knoblauch gezückt werden. :wink:

Hehe ;) Twisted hat halt so den Ruf die Kanone für Spatzen zu sein.

dev hat geschrieben:Ich beobachte Twisted seit mehreren Jahren und nutze es seit nunmehr zwei Jahren exzessiv für meine Projekte.
Wobei ich zugegebenerweise viele Bereiche des Frameworks auf Grund dessen schieren Umfangs noch nicht genutzt habe.

Ich würde es aber auf jeden Fall nicht mehr missen wollen.

Das ist doch wunderbar - ich habe nicht behauptet, das Twisted schlecht sei. Nur fand ich die Arbeit mit Twisted Words eher unangenehm, da sich die Twisted IRClib komplett anders verhalten hat als die Twisted Jabber-Lib und diese wieder komplett anders als xmpppy.

Nun, dev, sag selbst: würdest du, um mal schnell eine Schnittstelle herzustellen, Twisted verwenden, mit dem Wissen, dass man dann Twisted extra installieren muss, obwohl die stdlib das gleiche bietet? Nein, es geht um eine einfache Schnittstelle, nicht um einen Server mit tausenden Requests pro Minute.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
george
User
Beiträge: 109
Registriert: Mittwoch 11. Januar 2006, 20:28
Wohnort: Berlin

Beitragvon george » Donnerstag 23. November 2006, 08:05

Hey,

würdest du, um mal schnell eine Schnittstelle herzustellen, Twisted verwenden, mit dem Wissen, dass man dann Twisted extra installieren muss, obwohl die stdlib das gleiche bietet? Nein, es geht um eine einfache Schnittstelle, nicht um einen Server mit tausenden Requests pro Minute.


Da muss ich Leonidas recht geben. Bedingt durch die Einfachheit, werde ich es, wie bereits erwähnt, als xmlrpc implementieren.

Ich beobachte Twisted seit mehreren Jahren und nutze es seit nunmehr zwei Jahren exzessiv für meine Projekte.
Wobei ich zugegebenerweise viele Bereiche des Frameworks auf Grund dessen schieren Umfangs noch nicht genutzt habe.

Ich würde es aber auf jeden Fall nicht mehr missen wollen.


Da kann ich dev nur zustimmen. Ich habe, basierend auf twisted, einen Datenserver zum Pollen von elektronischen Geräten entwickelt und war begeistert über dieses Framework.
Ich muss aber auch gestehen, dass das Framework recht komplex ist und es sicherlich einen gewissen Zeitrahmen in Anspruch nimmt, um es einigermaßen zu verstehen.

greets george

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder