3.A Configuration et initialisation

Toutes les données pour la plate forme de poker et belote
Répondre
Avatar du membre
France fastgil.com
Le Fou
Le Fou
En ligne : Non
Messages : 4797
Enregistré le : 13 janv. 2007, 15:44
Joueur de Poker : oui
Pseudo Winamax : fastgil.com
Localisation : marseille
Genre :
Olympus Arcade : 11 Top 20 des joueurs de l arcade
Pays :
France (fr)
France
Contact :
    unknown unknown
verseau 

3.A Configuration et initialisation

Message non lu par France fastgil.com » 19 sept. 2011, 11:07

Statistiques

Stats Relax

_________________

Stats Poker/Aracde


_________________
3 Configuration et initialisation orriginal
http://www.spicefactory.org/parsley/doc ... .php#intro

Configuration et initialisation du Cadre Persil comporte habituellement les étapes suivantes:

• Étape 1: Raconter l'Container CIO qui classes, il doit gérer. Cela peut être fait avec MXML, les fichiers XML ou dans ActionScript. Les trois mécanismes seront décrits dans les sections suivantes.

• Étape 2: Configurer les services d'un container comme Dependency Injection ou de messagerie pour chaque classe. Cela peut être fait avec le mécanisme que vous aviez choisi pour l'étape 1 (par exemple avec MXML ou des balises de configuration XML) ou - dans la plupart des cas - idéalement avec AS3 tags métadonnées au sein des classes elles-mêmes.

• Étape 3: Initialisation de la COI Container (généralement sur application de démarrage). Le persil 2, ceci est fait en une ligne dans la plupart des cas. Voir les sections ci-dessous pour des exemples.


3.1 Configuration avec AS3 Metadata

AS3 Metadata Tags peuvent être utilisés pour configurer des services tels que la dépendance par injection ou Messagerie. Elles peuvent être placées sur n'importe quelle classe qui est géré par Persil. Caractéristiques configuré par des balises de métadonnées peuvent être combinées à une configuration en XML ou en MXML. Presque toutes les balises de métadonnées a une MXML correspondants et balise XML de configuration.
Les balises de métadonnées individuels et leurs attributs ainsi que des exemples sont décrits dans les sections correspondantes:


• 4 Dependency Injection •4 Dependency Injection http://www.spicefactory.org/parsley/doc ... .php#intro

• 5 Messaging •5 Messaging http://www.spicefactory.org/parsley/doc ... .php#intro

• 6.1 usines l'utilisant •6.1 Using Factories http://www.spicefactory.org/parsley/doc ... #factories

• 6.2 Asynchronous objet d'initialisation •6.2 Asynchronous Object Initialization

• 6.3 Object Lifecycle Méthodes •6.3 Object Lifecycle Methods http://www.spicefactory.org/parsley/doc ... hp#methods

• 6.4 Méthodes d'observation du cycle de vie•6.4 Lifecycle Observer Methodshttp://www.spicefactory.org/parsley/docs/2.2/m ... p#observer

Compilation des métadonnées personnalisées dans des FSv

Malheureusement, le compilateur mxmlc a un comportement assez incohérent quand il s'agit de décider si des métadonnées personnalisées seront inclus dans le fichier SWF ou non. Si vous utilisez le persil et Spicelib SWCS pour compiler l'application principale, vous (ou votre outil) sera probablement spécifier la bibliothèque avec l'option-l de sorte que la bibliothèque sera compilé dans votre SWF. Dans ce cas, toutes les balises de métadonnées utilisées par Parsley et Spicelib sera inclus automatiquement. Donc, pour l'application principale SWF il n'ya rien que vous avez à faire, sauf si vous avez créé balises de configuration personnalisés que vous souhaitez utiliser en tant que métadonnée AS3.

Pour la compilation de modules ou d'autres fonds souverains où vous (ou vous de l'outil) choisir d'utiliser l'option-El de préciser le CFC Persil elle est différente cependant. Les classes cadre ne sera pas compilé dans votre SWF ensuite (ce qui est destiné le comportement) et, malheureusement, les balises de métadonnées sera pas non plus. Et c'est plutôt un comportement erratique, puisque, pour votre intention d'utiliser le cadre et donc ses balises de configuration de métadonnées ne devrait pas faire la différence si vous compilez les classes de cadres dans le SWF ou non. Donc, lorsque vous utilisez l'option-el, vous devez spécifier explicitement le persil et Spicelib balises de métadonnées. Ceux qui sont assez nombreux (extrait de la Fourmi Persil versions):

Code : Tout sélectionner

<keep-as3-metadata name="Metadata" />
<keep-as3-metadata name="DefaultProperty" />
<keep-as3-metadata name="Required" />
<keep-as3-metadata name="Event" />
<keep-as3-metadata name="AssignableTo" />
<keep-as3-metadata name="Inject" />
<keep-as3-metadata name="InjectConstructor" />
<keep-as3-metadata name="Factory" />
<keep-as3-metadata name="Init" />
<keep-as3-metadata name="Destroy" />
<keep-as3-metadata name="Observe" />
<keep-as3-metadata name="AsyncInit" />
<keep-as3-metadata name="ManagedEvents" />
<keep-as3-metadata name="MessageDispatcher" />
<keep-as3-metadata name="MessageHandler" />
<keep-as3-metadata name="MessageBinding" />
<keep-as3-metadata name="MessageInterceptor" />
<keep-as3-metadata name="MessageError" />
<keep-as3-metadata name="Command" />
<keep-as3-metadata name="CommandResult" />
<keep-as3-metadata name="CommandError" />
<keep-as3-metadata name="CommandStatus" />
<keep-as3-metadata name="ResourceBinding" />
<keep-as3-metadata name="Selector" />
<keep-as3-metadata name="Target" />
<keep-as3-metadata name="Internal" />
<keep-as3-metadata name="ObjectDefinition" />
Bien sûr, il vous suffit de choisir celles que vous utilisez réellement. Mais il vous faudra pas oublier d'ajouter de nouvelles étiquettes à l'accumulation lorsque vous introduisez un tag nouvelle configuration dans votre application.

Dans le cas où les balises de métadonnées ne se sont pas compilés dans votre SWF Les symptômes sont généralement que plusieurs opérations échouent en silence. Pour les injections exemple ne sera pas exécuté alors si vous en avez spécifié avec l'[Injecter] tag. Quand les choses échouent en silence c'est en général une indication claire que certains ou l'ensemble des balises de métadonnées sont manquants dans le fichier SWF. Parce que si il y avait un autre type de problème, comme un type d'injection où le cadre ne trouve pas de contrepartie pour un objet dans le conteneur, Persil aura toujours une erreur. Elle ne manquera pas en silence sauf si vous précisez la dépendance comme facultatifs.

Cette section a été ajoutée à ce chapitre que par quelques utilisateurs déjà rencontré ce problème.


3.2 Configuration MXML

C'est le seul mécanisme de configuration que Persil (évidemment) ne peuvent être utilisés dans des applications Flex. Tout le reste est disponible pour les applications Flex et Flash.

Supposons que vous souhaitez configurer les deux classes suivantes:

Code : Tout sélectionner

package com.bookstore.service {

class LoginServiceImpl implements LoginService {

    public var timeout:int;
    
    public function login (username:String, password:String) : void {
        // execute service    
    }
    
}
}

Code : Tout sélectionner

package com.bookstore.actions {

class LoginAction {

    [Inject]
    public var service:LoginService
    
    [MessageHandler]
    public function handleLoginEvent (event:LoginEvent) : void {
           service.login(event.username, event.password); 
    } 
    
}
}
Comme vous le voyez plusieurs éléments sont déjà configurés avec des balises de métadonnées. Voir 4 injection de dépendance et 5 de messagerie pour plus de détails sur ces fonctions.

La configuration du fichier MXML

Nous avons maintenant à indiquer au conteneur de gérer ces classes et créer le fichier suivant MXML:

Code : Tout sélectionner

<mx:Object 
    xmlns:mx="http://www.adobe.com/2006/mxml"
    xmlns:services="com.bookstore.services.*"
    xmlns:actions="com.bookstore.actions.*">
    
    <services:LoginServiceImpl timeout="3000"/>
    
    <actions:LoginAction/>
    
</mx:Object> 
Notez qu'il n'y a même pas une importation unique Persil. Seules les balises d'objet régulières comme celles que vous placez pour tout type de composant ou d'objet en MXML. En plus des balises de métadonnées, vous pouvez utiliser ces balises MXML pour la configuration supplémentaires, comme la valeur du délai dans l'exemple ci-dessus.


Cadre d'initialisation

Finalement, vous avez pour initialiser le conteneur. En supposant que vous avez enregistré la configuration dans BookstoreConfig.mxml, vous pouvez l'initialiser avec:

Code : Tout sélectionner

<parsley:ContextBuilder config="{BookStoreConfig}"/>
Dans de nombreuses applications de la balise simple illustré ci-dessus pourrait être la seule dépendance directe sur le cadre de Persil. Pour initialiser l'application que vous pouvez utiliser [init] balises de métadonnées sur les méthodes de classes qui doivent exécuter une logique de démarrage de l'application. Voir 6.3 Object Lifecycle Méthodes pour les détails.

En théorie, vous pouvez aussi interagir directement avec le contexte Persil:

Code : Tout sélectionner

var context:Context = FlexContextBuilder.build(BookStoreConfig, this);
var initializer:BookStoreInitializer 
    = context.getObjectByType(BookStoreInitializer) as BookStoreInitializer;
initializer.execute();
Mais ce type d'utilisation n'est pas recommandée.
Dans le code de l'application normale, il n'ya généralement pas besoin d'utiliser l'API Persil directement. L'API est principalement pour étendre le cadre ou pour la création de cadres personnalisés autour de persil.

Utilisation de persil

MXML Tags Il existe une variante du mode de configuration MXML indiqué ci-dessus où vous utilisez des balises Persil, au lieu des balises objet normal:

Code : Tout sélectionner

<mx:Object 
    xmlns:mx="http://www.adobe.com/2006/mxml"
    xmlns="http://www.spicefactory.org/parsley">
    
    <mx:Script>
        <![CDATA[
            import com.bookstore.services.*;        
            import com.bookstore.actions.*;        
        ]]>
    </mx:Script>
    
    <Object type="{LoginServiceImpl}">
        <Property name="timeout" value="3000"/>
    </Object>
    
    <Object type="{LoginAction}"/>
    
</mx:Object> 
Ces balises spéciales vous donner quelques caractéristiques supplémentaires qui ne sont pas disponibles pour l'utilisation de tags normale comme dans le premier exemple. Les deux approches ont des avantages et des inconvénients:

Avantages de balises normales MXML:

• Simple et facile à utiliser.
• Pas de connaissance des balises de configuration nécessaires Persil.
• compilateur vérifie pour les types de la valeur des propriétés.

Avantages des tags MXML Persil:

• Permet Constructor Injection. Certains considèrent cela comme le plus propre de toute injection de dépendance en termes d'encapsulation comme vous pouvez créer des catégories immuables de cette façon. Vous ne pouvez pas utiliser l'injection, constructeur avec des balises normal puisque dans ce cas, le compilateur génère le code MXML la création d'objets et persil s'empare seule de l'objet après qu'il a été instancié pour effectuer une configuration supplémentaire. Lorsque l'aide de balises normales vos classes sont tenus d'avoir un constructeur sans argument.

• Permet de définir un objet à la paresse ( <Object lazy="true" type="..."/> ) Ce qui signifie qu'il ne sera pas initialisée et configurée avant la première fois que vous l'utilisez.

• Permet de configurer un objet comme une non-singleton ( <Object singleton="false" type="..."/> ). Cela signifie que chaque fois que cet objet sera récupéré à partir du conteneur ou injectée dans un autre objet, le conteneur va créer une nouvelle instance.

• Permet d'utiliser des balises personnalisées. Persil 2 est facile à étendre. Vous pouvez créer des extensions personnalisées avec une classe unique qui peut ensuite être utilisés comme des métadonnées personnalisées, MXML ou XML. Pour des exemples voir 11 Extension du cadre.
http://www.spicefactory.org/parsley/doc ... .php#intro

:arrow: suite ...



Répondre

Retourner vers « AcoeurS-City-Games »