Outils pour utilisateurs

Outils du site


perspective_broker

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
perspective_broker [2018/09/09 12:22] – [Les choses que vous pouvez copier à distance] sergeperspective_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 60%> 
-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'objets complexes ne marche pas 
 +  * les exemples ne respectent pas le PEP 8, c'est imbriqué au possible
 </WRAP> </WRAP>
 +
 +<WRAP center round box 60% >
 +  * **{{tagpage>perspectivebroker|Toutes les pages Twisted Perspective Broker}}**
 +  * **[[using_perspective_broker|Page suivante]]** Using Perspective Broker
 +  * **[[https://github.com/sergeLabo/PB|Les fichiers sources]]**
 +</WRAP>
 +
 +**Traduction Google de [[https://twistedmatrix.com/documents/current/core/howto/pb-intro.html|Introduction to Perspective Broker]] améliorée par un humain ayant fait intergalactique en 1ère langue !**
  
 =====Introduction Perspective Broker===== =====Introduction Perspective Broker=====
-Traduction Google de **[[https://twistedmatrix.com/documents/current/core/howto/pb-intro.html|Introduction to Perspective Broker]]**+**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'importe quel protocole. Si vous pouvez penser à votre problème en termes d'objets nécessitant des appels de méthode, il est alors probable que vous puissiez utiliser le protocole Perspective Broker de Twisted plutôt que d'essayer d'intégrer vos besoins dans HTTP, ou encore d'implémenter un autre RPC. mécanisme.+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'importe quel protocole. Si vous pouvez penser à votre problème en termes d'objets nécessitant des appels de méthode, il est alors probable que vous puissiez utiliser le protocole Perspective Broker de Twisted plutôt que d'essayer d'intégrer vos besoins dans HTTP, ou encore d'implémenter un autre mécanisme RPC.
  
 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, les transformer en un bloc d'octets, les envoyer sur un fil, puis les reconstituer à l'autre extrémité. En surveillant attentivement les identifiants d'objet, les objets sérialisés peuvent contenir des références à d'autres objets et la copie distante sera toujours utile.   * serialization = sérialisation : prendre des objets et des types assez arbitraires, les transformer en un bloc d'octets, les envoyer sur un fil, puis les reconstituer à l'autre extrémité. En surveillant attentivement les identifiants d'objet, les objets sérialisés peuvent contenir des références à d'autres objets et la copie distante sera toujours utile.
-  * remote method calls = ppels de méthode distants  : faire quelque chose sur un objet local et provoquer l'exécution d'une méthode distante. L'objet local est appelé [[https://twistedmatrix.com/documents/18.7.0/api/twisted.spread.pb.RemoteReference.html|RemoteReference]] et vous «faites quelque chose» en exécutant sa méthode .callRemote . +  * remote method calls = appels de méthodes distantes  : faire quelque chose sur un objet local et provoquer l'exécution d'une méthode distante. L'objet local est appelé [[https://twistedmatrix.com/documents/18.7.0/api/twisted.spread.pb.RemoteReference.html|RemoteReference]] et vous «faites quelque chose» en exécutant sa méthode .callRemote . 
  
-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»: ne vous inquiétez pas du fonctionnement de ces pièces. Il sera expliqué plus en détail plus tard.+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'objet==== ====Feuille de route de l'objet====
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
 +</code>  
 +
 +**Si une class B hérite d'une autre class A, B est une sous class de A.**
  
-Techniquement, vous pouvez sous-classer tout ce que vous voulez, mais techniquement, vous pouvez aussi écrire un tout nouveau framework, ce qui vous fera perdre beaucoup de temps. Connaître les classes utiles à la sous-classe ou les interfaces à implémenter est l'une des connaissances essentielles à la réussite de l'utilisation de PB (et de Twisted). Voici quelques conseils pour commencer:+Techniquement, vous pouvez sousclasser tout ce que vous voulez, mais techniquement, vous pouvez aussi écrire un tout nouveau framework, ce qui vous fera perdre beaucoup de temps. Connaître les classes utiles à la sous-classe ou les interfaces à implémenter est l'une des connaissances essentielles à la réussite de l'utilisation de PB (et de Twisted). Voici quelques conseils pour commencer:
  
-  * [[https://twistedmatrix.com/documents/18.7.0/api/twisted.spread.pb.Referenceable.html|pb.Root]] , [[https://twistedmatrix.com/documents/18.7.0/api/twisted.spread.pb.Referenceable.html|pb.Referenceable]] : vous les sous- classez pour créer des objets à distance référençable (c.-à-d. des objets sur lesquels vous pouvez appeler des méthodes à distance) en utilisant PB. Vous n'avez pas besoin de modifier le comportement existant, il vous suffit d'en hériter et d'ajouter les méthodes accessibles à distance que vous souhaitez exporter. +  * [[https://twistedmatrix.com/documents/18.7.0/api/twisted.spread.pb.Referenceable.html|pb.Root]] , [[https://twistedmatrix.com/documents/18.7.0/api/twisted.spread.pb.Referenceable.html|pb.Referenceable]] : vous les sousclassez pour créer des objets à distance référençables (c.-à-d. des objets sur lesquels vous pouvez appeler des méthodes à distance) en utilisant PB. Vous n'avez pas besoin de modifier le comportement existant, il vous suffit d'en hériter et d'ajouter les méthodes accessibles à distance que vous souhaitez exporter. 
-  * [[https://twistedmatrix.com/documents/18.7.0/api/twisted.spread.pb.Avatar.html|pb.Avatar]] : Vous serez en train de sous - classer cela lorsque vous entrerez dans la programmation PB avec autorisation. Ceci est un implémenteur de IPerspective.+  * [[https://twistedmatrix.com/documents/18.7.0/api/twisted.spread.pb.Avatar.html|pb.Avatar]] : Vous serez en train de sousclasser cela lorsque vous entrerez dans la programmation PB avec autorisation. Ceci est un implémenteur de IPerspective.
   * [[https://twistedmatrix.com/documents/18.7.0/api/twisted.cred.checkers.ICredentialsChecker.html|ICredentialsChecker]] : Implémentez ceci si vous souhaitez authentifier vos utilisateurs contre une sorte de magasin de données: par exemple, une base de données LDAP, un SGBDR, etc. Il existe déjà quelques implémentations pour différents back-end dans twisted.cred.checkers.    * [[https://twistedmatrix.com/documents/18.7.0/api/twisted.cred.checkers.ICredentialsChecker.html|ICredentialsChecker]] : Implémentez ceci si vous souhaitez authentifier vos utilisateurs contre une sorte de magasin de données: par exemple, une base de données LDAP, un SGBDR, etc. Il existe déjà quelques implémentations pour différents back-end dans twisted.cred.checkers. 
  
Ligne 75: Ligne 98:
  
   * [[https://twistedmatrix.com/documents/18.7.0/api/twisted.spread.pb.Copyable.html|twisted.spread.pb.Copyable]]   * [[https://twistedmatrix.com/documents/18.7.0/api/twisted.spread.pb.Copyable.html|twisted.spread.pb.Copyable]]
-C'est le type d'objet le plus simple qui peut être copié. Chaque fois que cet objet est renvoyé par une méthode ou transmis en tant qu'argument, il est sérialisé et non sérialisé.+C'est le type d'objet le plus simple qui peut être copié. Chaque fois que cet objet est renvoyé par une méthode ou transmis en tant qu'argument, il est sérialisé et dé-sérialisé.
  
 [[https://twistedmatrix.com/documents/18.7.0/api/twisted.spread.pb.Copyable.html|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'argument perspective sera la perspective qui transmet un argument ou renvoie un résultat, une instance de votre classe Copyable. [[https://twistedmatrix.com/documents/18.7.0/api/twisted.spread.pb.Copyable.html|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'argument perspective sera la perspective qui transmet un argument ou renvoie un résultat, une instance de votre classe Copyable.
Ligne 96: Ligne 119:
  
   * [[https://twistedmatrix.com/documents/18.7.0/api/twisted.spread.pb.Cacheable.html|twisted.spread.pb.Cacheable]]   * [[https://twistedmatrix.com/documents/18.7.0/api/twisted.spread.pb.Cacheable.html|twisted.spread.pb.Cacheable]]
-Permettez-moi de commencer par un avertissement: Cacheable peut être difficile à comprendre. La motivation à cela peut ne pas être claire si vous n'avez pas d'expérience avec les applications du monde réel qui utilisent des méthodes d'appels à distance. Une fois que vous avez compris pourquoi vous en avez besoin, ce que vous faites peut paraître simple et évident, mais si vous vous trompez, oubliez-le et revenez plus tard. Il est possible d'utiliser PB sans comprendre Cacheable du tout.+Permettez-moi de commencer par un avertissement: [[https://twistedmatrix.com/documents/18.7.0/api/twisted.spread.pb.Cacheable.html|Cacheable]] peut être difficile à comprendre. La motivation à cela peut ne pas être claire si vous n'avez pas d'expérience avec les applications du monde réel qui utilisent des méthodes d'appels à distance. Une fois que vous avez compris pourquoi vous en avez besoin, ce que vous faites peut paraître simple et évident, mais si vous vous trompez, oubliez-le et revenez plus tard. Il est possible d'utiliser PB sans comprendre [[https://twistedmatrix.com/documents/18.7.0/api/twisted.spread.pb.Cacheable.html|Cacheable]] du tout.
  
-Cacheable est une saveur conçue pour être copiée uniquement lorsque cela est nécessaire et mise à jour à la volée au fur et à mesure des modifications. Lorsqu'elle est transmise en tant qu'argument ou valeur de retour, si une mise en cache existe du côté de la connexion sur laquelle elle est copiée, elle sera appelée par ID et non copiée.+[[https://twistedmatrix.com/documents/18.7.0/api/twisted.spread.pb.Cacheable.html|Cacheable]] est une saveur conçue pour être copiée uniquement lorsque cela est nécessaire et mise à jour à la volée au fur et à mesure des modifications. Lorsqu'elle est transmise en tant qu'argument ou valeur de retour, si une mise en cache existe du côté de la connexion sur laquelle elle est copiée, elle sera appelée par ID et non copiée.
  
-Cacheable est conçu pour minimiser les erreurs liées à la réplication d'un objet entre plusieurs serveurs, en particulier ceux liés aux informations obsolètes. Pour ce faire, Cacheable enregistre automatiquement les états des observateurs et des requêtes, ensemble. Vous pouvez remplacer la méthode getStateToCacheAndObserveFor(self, perspective, observer) afin de spécifier comment vos observateurs seront stockés et mis à jour.+[[https://twistedmatrix.com/documents/18.7.0/api/twisted.spread.pb.Cacheable.html|Cacheable]] est conçu pour minimiser les erreurs liées à la réplication d'un objet entre plusieurs serveurs, en particulier ceux liés aux informations obsolètes. Pour ce faire, [[https://twistedmatrix.com/documents/18.7.0/api/twisted.spread.pb.Cacheable.html|Cacheable]] enregistre automatiquement les états des observateurs et des requêtes, ensemble. Vous pouvez remplacer la méthode getStateToCacheAndObserveFor(self, perspective, observer) afin de spécifier comment vos observateurs seront stockés et mis à jour.
  
 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»: [[https://twistedmatrix.com/documents/18.7.0/api/twisted.spread.pb.RemoteCache.html|RemoteCache]] . 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»: [[https://twistedmatrix.com/documents/18.7.0/api/twisted.spread.pb.RemoteCache.html|RemoteCache]] .
Ligne 108: Ligne 131:
 Enfin, lorsque toutes les références à un [[https://twistedmatrix.com/documents/18.7.0/api/twisted.spread.pb.Cacheable.html|Cacheable]] depuis une perspective donnée sont perdues, stoppedObserving(perspective, observer) sera appelé sur  [[https://twistedmatrix.com/documents/18.7.0/api/twisted.spread.pb.Cacheable.html|Cacheable]], avec la même paire perspective / observateur avec laquelle getStateToCacheAndObserveFor a été initialement appelé. Tous les appels distants de nettoyage peuvent être effectués à cet endroit, tout comme la suppression de l'objet observateur de toutes les listes dans lesquelles il se trouvait auparavant. Tout appel supplémentaire à cet objet observateur sera invalide.  Enfin, lorsque toutes les références à un [[https://twistedmatrix.com/documents/18.7.0/api/twisted.spread.pb.Cacheable.html|Cacheable]] depuis une perspective donnée sont perdues, stoppedObserving(perspective, observer) sera appelé sur  [[https://twistedmatrix.com/documents/18.7.0/api/twisted.spread.pb.Cacheable.html|Cacheable]], avec la même paire perspective / observateur avec laquelle getStateToCacheAndObserveFor a été initialement appelé. Tous les appels distants de nettoyage peuvent être effectués à cet endroit, tout comme la suppression de l'objet observateur de toutes les listes dans lesquelles il se trouvait auparavant. Tout appel supplémentaire à cet objet observateur sera invalide. 
  
 +**La page suivante est [[using_perspective_broker|Using Perspective Broker]]**
  
- +{{tag>python sb intergalactique twisted perspectivebroker}}
-{{tag>python sb}}+
perspective_broker.1536495735.txt.gz · Dernière modification : 2018/09/09 12:22 de serge