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/09/09 12:11] – [Les choses que vous pouvez appeler à distance] serge | perspective_broker [2022/12/05 15:51] (Version actuelle) – [Python: Twisted Perspective Broker] serge | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Python: Twisted Perspective Broker ====== | ====== Python: Twisted Perspective Broker ====== | ||
- | <WRAP center round info 60%> | + | <WRAP center round info centeralign |
- | Niveau Pro | + | **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 70: | Ligne 93: | ||
En plus de renvoyer des objets sur lesquels vous pouvez appeler des méthodes distantes, vous pouvez renvoyer des copies structurées d' | En plus de renvoyer des objets sur lesquels vous pouvez appeler des méthodes distantes, vous pouvez renvoyer des copies structurées d' | ||
- | Deux variantes de base permettent de copier des objets à distance. Encore une fois, vous pouvez les utiliser en les sous-classant. Afin de spécifier l' | + | Deux variantes de base permettent de copier des objets à distance. Encore une fois, vous pouvez les utiliser en les sous-classant. Afin de spécifier l' |
+ | | ||
+ | ou méthode spécialisée par défaut de Python pour cette saveur. | ||
- | * twisted.spread.pb.Copyable | + | * [[https:// |
- | C'est le type d' | + | C'est le type d' |
- | Copyable fournit une méthode que vous pouvez remplacer, getStateToCopyFor(perspective) , qui vous permet de décider à quoi un objet va ressembler pour la perspective qui le demande. L' | + | [[https:// |
Pour des raisons de sécurité, afin de permettre la copie d'une classe Copyable particulière, | Pour des raisons de sécurité, afin de permettre la copie d'une classe Copyable particulière, | ||
<code python> | <code python> | ||
- | from twisted.spread import flavors | + | from twisted.spread import flavors |
- | class Foo ( flavors . Copyable ): | + | |
- | pass | + | class Foo(flavors.Copyable): |
- | class RemoteFoo ( flavors . RemoteCopy ): | + | pass |
- | pass | + | |
- | flavors . setUnjellyableForClass ( Foo , RemoteFoo ) | + | class RemoteFoo (flavors.RemoteCopy): |
+ | pass | ||
+ | | ||
+ | flavors.setUnjellyableForClass(Foo, | ||
</ | </ | ||
Dans ce cas, chaque fois qu'un Foo est copié entre pairs, un RemoteFoo sera instancié et rempli avec l' | Dans ce cas, chaque fois qu'un Foo est copié entre pairs, un RemoteFoo sera instancié et rempli avec l' | ||
- | * twisted.spread.pb.Cacheable | + | * [[https:// |
- | Permettez-moi de commencer par un avertissement: | + | Permettez-moi de commencer par un avertissement: |
- | + | ||
- | Cacheable | + | |
- | Cacheable est conçu | + | [[https:// |
- | Semblable | + | [[https:// |
- | Un RemoteCache est simplement l' | + | Semblable à getStateToCopyFor |
- | Enfin, lorsque toutes les références à une cachette depuis une perspective donnée sont perdues, stoppedObserving(perspective, | + | Un [[https:// |
+ | Enfin, lorsque toutes les références à un [[https:// | ||
+ | **La page suivante est [[using_perspective_broker|Using Perspective Broker]]** | ||
- | {{tag> | + | {{tag> |
perspective_broker.1536495081.txt.gz · Dernière modification : 2018/09/09 12:11 de serge