Connectors/fr
From OpenSimulator
Contents |
Vue d'ensemble
Il y a jusqu'à 5 composants impliqués dans le code de connexion du simulateur vers un service de grille. Ils sont
Composant | Emplacement | Description |
---|---|---|
Le code du simulateur lui même | OpenSimulator core ou un module | Celui ci référencie initialement le service pour obtenir ou définir les données. |
Le connecteur de service du simulateur | OpenSim/Region/CoreModules/ServiceConnectorsOut (pour les connexions sortantes) et ServiceConnectorsIn (pour les connexions entrantes) | Ces connecteurs existent sous deux variantes, local et distant. Les connecteurs locaux se connectent directement au service et sont utilisés quand un caller et service sont dans le même process (comme dans une configuration en stand alone). Les connecteurs distants utilisent les connecteurs de service dans OpenSim/Services/Connectors pour faire un appel à travers le réseau pour quelques processus distants. |
Les remote service connectors | OpenSim/Services/Connectors | Ceux ci effectuent actuellement le travail de tri des données et effectuent les appels appropriés vers un service de données distant. Ceux ci ne sont pas utilisés pour des connexions inter processus. |
Les remote service handlers | OpenSim/Server/Handlers | Ceux ci ne sont pas utilisés pour des connexions inter processus. Ceux ci déballent les appels reçus depuis un connecteur de simulateur et les passe au service lui même. |
Le service | Chaque service majeur possède son propre package (ex. OpenSim/Services/AssetService). | Le service sert actuellement l'appel et retourne les données à l'appellant, si nécessaire. |
Exemple
Regardons le service des assets. Le connecteur du service d'assets est disponible en tant que propriété de Scene.AssetService dans l'objet Scene (les références directes ne sont pas toujours disponibles - parfois le connecteur a besoin d'être requis à travers le mécanisme de Scene.RequestModuleInterface<Interface>() ).
Un appellant exécute la méthode Scene.AssetService.Get() pour récupérer synchroniquement un asset.
Supposons tout d'abord que nous exécutons une configuration en standalone dans laquelle simulator et service sont dans le même process. Dans ce cas, l'appel du simulateur va vers LocalAssetServiceConnector.Get(). Celui ci vérifie d'abord le cache et si l'asset n'est pas trouvé là bas, il appelle alors AssetService.Get(). Le service AssetService récupère l'asset depuis le stockage persistant et le fais passer au code du simulateur.
Maintenant, supposons que nous exécutons une configuration en grille dans laquelle le service d'asset opère sur d'autres machines. Comme précédemment, le code du simulateur appelle Scene.AssetService.Get(). Cette fois, l'appel est routé vers RemoteAssetServiceConnector.Get(), qui dans ce cas hérite de OpenSim/Services/Connectors/AssetServiceConnector.
AssetServiceConnector.Get() génère un appel HTTP vers http://yourassetserver/assets/assetId, où assetId est l'id de l'asset requis.
Celui ci saute à travers le réseau et est traité par OpenSim/Server/Handlers/Asset/AssetServerConnector. Il utilise son propre AssetServerGetHandler pour déballer la requête HTTP et appelle AssetService pour récupérer la donnée. Si l'asset est trouvé, alors il retourne l'asset en tant que XML prêt pour la dépaquetage par AssetServiceConnector. Si l'asset manque, alors il renvoie un code de statut HTTP 404.
Configuration
Les connecteurs sont configurés dans les fichiers de configuration de OpenSimulator. Pour les standalones, la configuration est dans bin/config-include/Standalone.ini. Les utilisateurs de standalone n'ont jamais besoin de changer ce fichier. Pour les utilisateurs de grille, la configuration est dans bin/config-include/Grid.ini et GridCommon.ini. Dans le cas de la grille, GridCommon.ini (apres avoir copié GridCommon.ini.example) est l'endroit où l'utilisateur spécifie les URLs pour chaque service de grille.
Standalone
Jetons un oeil dans Standalone.ini. Vous verrez qu'il y a une section Modules avec les lignes
[Modules] AssetServices = "LocalAssetServicesConnector" InventoryServices = "LocalInventoryServicesConnector" NeighbourServices = "LocalNeighbourServicesConnector" ...
C'est l'endroit où les connecteurs sont spécifiés pour chaque service. Comme vous pouvez le voir, le service asset est désigné pour utiliser LocalAssetServicesConnector.
Un peu plus bas, vous pouvez voir la section
[AssetService] LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService"
C'est l'endroit où nous disons à OpenSimulator quelles DLL charger pour le service des processus entrant de asset.
Grille
Comparez ceci avec Grid.ini.
[Modules] AssetServices = "RemoteAssetServicesConnector" InventoryServices = "RemoteXInventoryServicesConnector" GridServices = "RemoteGridServicesConnector" ...
Dans ce cas, le connecteur du service asset est désigné en tant que classe RemoteAssetServicesConnector.
La section [AssetService] n'est pas dans ce fichier car nous ne chargeons pas une classe de service directement (vu que le service est hébergé à distance). A la place, nous avons besoin de spécifier l'URL où le service d'asset est trouvé. Comme ceci sera différent pour différentes installations de grille il est dans le fichier GridCommon.ini qui est configurable par l'utilisateur.
[AssetService] ... ; ; change this to your grid-wide asset server ; AssetServerURI = "http://myassetserver.com:8003"
References
Pour une vision plus élargie mais un peu obsolète de la documentation sur les services et connecteurs, voir OpenSim Services and Service Connectors
Voir Services pour un résumé des services.