Direct Service Requests/fr

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
(Configuration)
(Configuration)
Line 43: Line 43:
 
Je suppose ici que nous exécutons le service GetTexture à l'intérieur d'une instance de service Robust entièrement séparée.  Cependant, il peut être exécuté dans un shell Robust qui gère également d'autres services (par exemple, le shell par défaut de la grille qui gère tous les services).  Dans ce cas, vous pouvez omettre certaines sections, comme nous le décrivons ci-dessous.
 
Je suppose ici que nous exécutons le service GetTexture à l'intérieur d'une instance de service Robust entièrement séparée.  Cependant, il peut être exécuté dans un shell Robust qui gère également d'autres services (par exemple, le shell par défaut de la grille qui gère tous les services).  Dans ce cas, vous pouvez omettre certaines sections, comme nous le décrivons ci-dessous.
  
 +
Voici une explication de chaque section.
 +
* [Démarrage] - Cette section est vide et n'existe que parce qu'actuellement le shell du service Robust l'exige.  Il se peut qu'elle ne soit plus nécessaire à l'avenir.  Dans un shell de service partagé, la section [Startup] existante sera utilisée.
 +
* [ServiceList] - Ceci déclenche l'initialisation du connecteur de capacité GetTexture.  Ici, nous spécifions explicitement un port de 8010, bien qu'il puisse être omis s'il est identique au paramètre « port » par défaut dans la section Network.  Il s'agit du port par lequel le viewer communiquera avec le connecteur de capacité GetTexture ; il doit donc être accessible à un viewer à travers votre pare-feu.  Vous ne devez pas exécuter de services privés (par exemple, un service d'asset interne) sur ce port.
 +
* [Network].port - OpenSimulator se plaindra toujours si ce port n'est pas présent, même si vous n'avez qu'un seul connecteur et qu'il spécifie explicitement le port que vous utilisez (comme ci-dessus).  Si vous spécifiez explicitement le port de GetTextureConnector, il peut s'agir de n'importe quel port libre sur votre serveur (il ne sera pas utilisé s'il n'y a pas d'autres services).  Si vous exécutez GetTextureConnector dans un shell de service partagé, n'importe quel port existant suffira.
 +
* [CapsService].AssetService - Spécifie le service d'assets que GetTextureConnector doit initialiser pour récupérer les textures (qui sont des assets).
 +
* [DatabaseService] - Ceci contient les paramètres pour que l'AssetService accède à la base de données.  Si GetTextureConnector partage le shell Robust avec d'autres services, il est très probable qu'il existe déjà.
 +
* [AssetService] - Cette section est vide et n'existe que pour éviter que AssetService ne se plaigne fatalement.  Il est possible qu'elle disparaisse à l'avenir.
 +
 +
Maintenant, si vous démarrez le shell Robust qui héberge GetTextureConnector et si vous exécutez la commande « show http-handlers », vous devriez voir quelque chose comme ce qui suit (pour plus de clarté, nous montrons la sortie lorsque GetTextureConnector est la seule chose en cours d'exécution dans le shell).
 +
 +
<pre>
 +
R.O.B.U.S.T.# show http-handlers
 +
Registered HTTP Handlers for server at 0.0.0.0:8010
 +
* XMLRPC:
 +
* HTTP:
 +
* HTTP (poll):
 +
* JSONRPC:
 +
* LLSD:
 +
* StreamHandlers (1):
 +
  GET:/CAPS/GetTexture/
 +
</pre>
 
=== Configuration expérimentale===
 
=== Configuration expérimentale===
  

Revision as of 02:10, 22 October 2024


Contents

Introduction

Dans la grande majorité des cas, les demandes des viewers sont traitées par le simulateur qui interagit ensuite avec les services dorsaux (assets, inventaire, etc.) selon le cas.

Cependant, dans la configuration par défaut, certaines de ces demandes sont traitées par le viewer qui interagit directement avec un service backend. Par exemple, lors de la connexion, le service de connexion transmet au viewer une URL de carte configurée dans la section MapTileURL de [LoginService] dans Robust.ini. Lorsque le viewer a besoin d'afficher des tuiles sur la carte principale, il contacte cette URL pour les récupérer. L'URL elle-même est servie par le service ROBUST sur le port public de la grille (8002 par défaut).

Il est également possible de traiter d'autres requêtes directement. Cependant, le meilleur exemple de fonctionnement connu, détaillé ci-dessous, est celui qui traite les requêtes GetTexture directement à partir d'un service plutôt que par l'intermédiaire d'un simulateur. D'autres exemples seront ajoutés à l'avenir, bien que certains posent des problèmes de sécurité importants qu'il faut prendre en compte.

Traitement direct de la capacité GetTexture

AVERTISSEMENT : les viewers ne peuvent plus l'utiliser


GetTexture est un protocole de capacités client-viewer par lequel les clients (viewers) peuvent demander des textures via HTTP au lieu des anciens mécanismes basés sur UDP.

Normalement, OpenSimulator gère cela en fournissant un point de terminaison de capacité (une adresse spécifique) qui pointe vers le simulateur où se trouve l'avatar de l'utilisateur. Les requêtes sont reçues par le simulateur et l'asset est récupéré dans le cache ou par un appel au service backend d'assets, selon le cas.

Cependant, nous pouvons également configurer GetTexture pour qu'il soit géré directement par un service via le port public de la grille. Alors, le point de terminaison de capacité passé au viewer pointe directement vers ce service au lieu de pointer vers le simulateur, de la même manière que les tuiles de carte sont fournies directement par un service.

Cette configuration fonctionnera à la fois pour les installations non-Hypergrid et Hypergrid (puisque tous les assets nécessaires sont copiés dans le service d'assets local lorsqu'un utilisateur étranger entre dans le simulateur et lorsqu'il rezz ou transfère des objets de son inventaire).

Configuration

La première chose à faire est de configurer le service pour qu'il fournisse le connecteur de capacité GetTexture. Nous pouvons le faire avec la configuration ci-dessous.

[Startup]
 
[ServiceList]
GetTextureConnector = "8010/OpenSim.Capabilities.Handlers.dll:GetTextureServerConnector"
 
[Network]
port = 8010
 
[CapsService]
AssetService = "OpenSim.Services.AssetService.dll:AssetService"
 
[DatabaseService]
StorageProvider = "OpenSim.Data.MySQL.dll"
ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=mypassword;Old Guids=true;"
 
[AssetService]

Je suppose ici que nous exécutons le service GetTexture à l'intérieur d'une instance de service Robust entièrement séparée. Cependant, il peut être exécuté dans un shell Robust qui gère également d'autres services (par exemple, le shell par défaut de la grille qui gère tous les services). Dans ce cas, vous pouvez omettre certaines sections, comme nous le décrivons ci-dessous.

Voici une explication de chaque section.

  • [Démarrage] - Cette section est vide et n'existe que parce qu'actuellement le shell du service Robust l'exige. Il se peut qu'elle ne soit plus nécessaire à l'avenir. Dans un shell de service partagé, la section [Startup] existante sera utilisée.
  • [ServiceList] - Ceci déclenche l'initialisation du connecteur de capacité GetTexture. Ici, nous spécifions explicitement un port de 8010, bien qu'il puisse être omis s'il est identique au paramètre « port » par défaut dans la section Network. Il s'agit du port par lequel le viewer communiquera avec le connecteur de capacité GetTexture ; il doit donc être accessible à un viewer à travers votre pare-feu. Vous ne devez pas exécuter de services privés (par exemple, un service d'asset interne) sur ce port.
  • [Network].port - OpenSimulator se plaindra toujours si ce port n'est pas présent, même si vous n'avez qu'un seul connecteur et qu'il spécifie explicitement le port que vous utilisez (comme ci-dessus). Si vous spécifiez explicitement le port de GetTextureConnector, il peut s'agir de n'importe quel port libre sur votre serveur (il ne sera pas utilisé s'il n'y a pas d'autres services). Si vous exécutez GetTextureConnector dans un shell de service partagé, n'importe quel port existant suffira.
  • [CapsService].AssetService - Spécifie le service d'assets que GetTextureConnector doit initialiser pour récupérer les textures (qui sont des assets).
  • [DatabaseService] - Ceci contient les paramètres pour que l'AssetService accède à la base de données. Si GetTextureConnector partage le shell Robust avec d'autres services, il est très probable qu'il existe déjà.
  • [AssetService] - Cette section est vide et n'existe que pour éviter que AssetService ne se plaigne fatalement. Il est possible qu'elle disparaisse à l'avenir.

Maintenant, si vous démarrez le shell Robust qui héberge GetTextureConnector et si vous exécutez la commande « show http-handlers », vous devriez voir quelque chose comme ce qui suit (pour plus de clarté, nous montrons la sortie lorsque GetTextureConnector est la seule chose en cours d'exécution dans le shell).

R.O.B.U.S.T.# show http-handlers
Registered HTTP Handlers for server at 0.0.0.0:8010
* XMLRPC:
* HTTP:
* HTTP (poll):
* JSONRPC:
* LLSD:
* StreamHandlers (1):
  GET:/CAPS/GetTexture/

Configuration expérimentale

Avantages et inconvénients

Avantages

Réduction de la charge du simulateur

Performances constantes

Inconvénients

Les textures locales aux régions ne fonctionnent pas

Toute la charge repose sur le service

Sécurité

Certains connecteurs ne peuvent pas gérer l'hypergrid

Personal tools
General
About This Wiki