perspective_broker
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
perspective_broker [2018/10/18 12:57] – [Introduction Perspective Broker] serge | perspective_broker [2022/12/05 15:51] (Version actuelle) – [Python: Twisted Perspective Broker] serge | ||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
<WRAP center round info centeralign 60%> | <WRAP center round info centeralign 60%> | ||
- | **Niveau Pro et intergalactique !** | + | **Niveau Pro et intergalactique !**\\ |
+ | Cette API: | ||
+ | * a entre 15 et 20 ans | ||
+ | * n'est que vaguement maintenu | ||
+ | * un exemple au moins ne marche pas | ||
+ | * le tranfert de datas simples marche | ||
+ | * le transfert d' | ||
+ | * les exemples ne respectent pas le PEP 8, c'est imbriqué au possible | ||
</ | </ | ||
+ | |||
+ | <WRAP center round box 60% > | ||
+ | * **{{tagpage> | ||
+ | * **[[using_perspective_broker|Page suivante]]** Using Perspective Broker | ||
+ | * **[[https:// | ||
+ | </ | ||
+ | |||
+ | **Traduction Google de [[https:// | ||
=====Introduction Perspective Broker===== | =====Introduction Perspective Broker===== | ||
- | Traduction Google de **[[https:// | + | **La page suivante est [[using_perspective_broker|Using Perspective Broker]]** |
====Introduction==== | ====Introduction==== | ||
- | Supposons que vous vous retrouviez dans le contrôle des deux extrémités du fil: vous avez deux programmes qui doivent se parler et vous pouvez utiliser n' | + | Supposons que vous vous retrouviez dans le contrôle des deux extrémités du fil: vous avez deux programmes qui doivent se parler et vous pouvez utiliser n' |
Le système Perspective Broker (en abrégé «PB») repose sur quelques concepts centraux: | Le système Perspective Broker (en abrégé «PB») repose sur quelques concepts centraux: | ||
* serialization = sérialisation : prendre des objets et des types assez arbitraires, | * serialization = sérialisation : prendre des objets et des types assez arbitraires, | ||
- | * remote method calls = ppels de méthode distants | + | * remote method calls = appels |
- | Ce document contiendra plusieurs exemples qui sembleront redondants et verbeux une fois que vous aurez compris ce qui se passe. Pour commencer, une grande partie du code sera simplement étiquetée «magic»: | + | Ce document contiendra plusieurs exemples qui sembleront redondants et verbeux une fois que vous aurez compris ce qui se passe. Pour commencer, une grande partie du code sera simplement étiquetée «magic»: |
====Feuille de route de l' | ====Feuille de route de l' | ||
Ligne 37: | Ligne 52: | ||
====Sous-classement et mise en œuvre==== | ====Sous-classement et mise en œuvre==== | ||
+ | <code python> | ||
+ | class A: | ||
+ | pass | ||
+ | class B(A): | ||
+ | pass | ||
+ | </ | ||
+ | |||
+ | **Si une class B hérite d'une autre class A, B est une sous class de A.** | ||
- | Techniquement, | + | Techniquement, |
- | * [[https:// | + | * [[https:// |
- | * [[https:// | + | * [[https:// |
* [[https:// | * [[https:// | ||
Ligne 108: | Ligne 131: | ||
Enfin, lorsque toutes les références à un [[https:// | Enfin, lorsque toutes les références à un [[https:// | ||
- | =====Des exemples===== | + | **La page suivante |
- | Bon là, je ne comprends pas, c'est de l' | + | |
- | + | ||
- | ====Exemple 1==== | + | |
- | <file python pb1client.py> | + | |
- | # | + | |
- | + | ||
- | # Copyright (c) Twisted Matrix Laboratories. | + | |
- | # See LICENSE for details. | + | |
- | + | ||
- | + | ||
- | from twisted.spread import pb | + | |
- | from twisted.internet import reactor | + | |
- | + | ||
- | def main(): | + | |
- | factory = pb.PBClientFactory() | + | |
- | reactor.connectTCP(" | + | |
- | def1 = factory.getRootObject() | + | |
- | def1.addCallbacks(got_obj1, | + | |
- | reactor.run() | + | |
- | + | ||
- | def err_obj1(reason): | + | |
- | print(" | + | |
- | reactor.stop() | + | |
- | + | ||
- | def got_obj1(obj1): | + | |
- | print(" | + | |
- | print(" | + | |
- | def2 = obj1.callRemote(" | + | |
- | def2.addCallbacks(got_obj2) | + | |
- | + | ||
- | def got_obj2(obj2): | + | |
- | print(" | + | |
- | print(" | + | |
- | obj2.callRemote(" | + | |
- | + | ||
- | main() | + | |
- | </ | + | |
- | <file python pb1server.py> | + | |
- | # | + | |
- | + | ||
- | # Copyright (c) Twisted Matrix Laboratories. | + | |
- | # See LICENSE for details. | + | |
- | + | ||
- | from twisted.spread import pb | + | |
- | + | ||
- | class Two(pb.Referenceable): | + | |
- | def remote_three(self, | + | |
- | print(" | + | |
- | + | ||
- | class One(pb.Root): | + | |
- | def remote_getTwo(self): | + | |
- | two = Two() | + | |
- | print(" | + | |
- | return two | + | |
- | + | ||
- | from twisted.internet import reactor | + | |
- | reactor.listenTCP(8800, | + | |
- | reactor.run() | + | |
- | </ | + | |
- | + | ||
- | <code bash> | + | |
- | Lancement du serveur $ python3 pb1server.py | + | |
- | returning a Two called < | + | |
- | Two.three was given 12 | + | |
- | + | ||
- | Lancement du client $ python3 pb1client.py | + | |
- | got first object: < | + | |
- | asking it to getTwo | + | |
- | got second object: < | + | |
- | telling it to do three(12) | + | |
- | </ | + | |
- | + | ||
- | {{tag> | + | {{tag> |
perspective_broker.1539867445.txt.gz · Dernière modification : 2018/10/18 12:57 de serge