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/08/12 13:02] – 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===== | ||
+ | **La page suivante est [[using_perspective_broker|Using Perspective Broker]]** | ||
+ | |||
+ | ====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' | ||
+ | |||
+ | 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, | ||
+ | * remote method calls = appels de méthodes distantes | ||
+ | |||
+ | 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»: il n'est pas nécessaire de comprendre; il sera expliqué plus en détail plus tard. | ||
+ | |||
+ | ====Feuille de route de l' | ||
+ | |||
+ | Pour commencer, voici les principales classes, interfaces et fonctions impliquées dans PB, avec des liens vers le fichier où elles sont définies (qui sont toutes sous twisted bien sûr). Ne vous souciez pas de comprendre ce qu'ils font tous encore: il est plus facile de les comprendre grâce à leur interaction que de les expliquer un par un. | ||
+ | |||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | Autres classes impliquées à un moment donné: | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | Classes et interfaces impliquées lorsque vous commencez à vous soucier de l' | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | ====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, | ||
+ | |||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | ====Les choses que vous pouvez appeler à distance==== | ||
+ | |||
+ | À cette écriture, il existe trois «saveurs» d’objets accessibles à distance via des objets [[https:// | ||
+ | |||
+ | * [[https:// | ||
+ | C'est la première interface avec laquelle nous traitons. C'est une «perspective» sur votre application PB. Les perspectives sont un peu spéciales car elles sont généralement le premier objet auquel un utilisateur donné peut accéder dans votre application (après sa connexion). Un utilisateur ne devrait recevoir qu'une référence à sa propre perspective. PB s' | ||
+ | |||
+ | Les perspectives ne sont généralement pas sérialisées en tant que références distantes. Ne renvoyez donc pas directement un exécuteur IPerspective. | ||
+ | |||
+ | La façon dont la plupart des gens voudront implémenter IPerspective est de sous-classer pb.Avatar. Les méthodes accessibles à distance sur les instances pb.Avatar sont nommées avec le préfixe perspective_ . | ||
+ | |||
+ | * [[https:// | ||
+ | Les objets référençables sont le type d' | ||
+ | |||
+ | Cependant, lorsqu' | ||
+ | |||
+ | Les méthodes accessibles à distance sur les référenceables sont nommées avec le préfixe remote_ . | ||
+ | |||
+ | * [[https:// | ||
+ | Les objets visualisables sont des objets pouvant être référencés à distance et qui nécessitent en outre la possibilité de savoir qui les appelle. La liste d' | ||
+ | |||
+ | Les méthodes accessibles à distance sur les affichages sont nommées avec le préfixe view_ . | ||
+ | |||
+ | ====Les choses que vous pouvez copier à distance==== | ||
+ | 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' | ||
+ | __getstate__ | ||
+ | ou méthode spécialisée par défaut de Python pour cette saveur. | ||
+ | |||
+ | * [[https:// | ||
+ | C'est le type d' | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | Pour des raisons de sécurité, afin de permettre la copie d'une classe Copyable particulière, | ||
+ | |||
+ | <code python> | ||
+ | from twisted.spread import flavors | ||
+ | |||
+ | class Foo(flavors.Copyable): | ||
+ | pass | ||
+ | | ||
+ | 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' | ||
+ | |||
+ | * [[https:// | ||
+ | Permettez-moi de commencer par un avertissement: | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | Semblable à getStateToCopyFor , getStateToCacheAndObserveFor reçoit une perspective. Il reçoit également un observer , qui est une référence distante à une quatrième version référençable «secrète»: | ||
+ | |||
+ | 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.1534078940.txt.gz · Dernière modification : 2018/08/12 13:02 de serge