"Naked" dependent Service question.

40 views
Skip to first unread message

Olivier Spinelli

unread,
May 28, 2014, 3:17:34 AM5/28/14
to civik...@googlegroups.com
Une question d'Antoine Raquillet:

J'ai une petite question concernant yodii (encore)
C'est quoi un service wrappé ?
(rapport à la property ServiceWrapped de IService ReferenceInfo)
(*IsIServiceWrapped)

Réponse :

Soit une dépendance est la pure interface (IDeliveryService service) soit elle est wrappée dans un IService<T>, (IService<IDeliveryService> service).

Dans ce cas, le wrapper expose le status du service (Running, Stopped, etc.) et peut aussi exposer l'API de contrôle (Start(), Stop()). Le service est accessible via la propriété T IService<T>.Service { get; }, mais, en pratique, le IService<T> est aussi lui-même, en fait, un T.
En castant: (T)(IService<T> ) <==> T, on a le Service T car le IService<T> est l'objet de proxy du Service généré dynamiquement.

Dans Yodii, on a décliné (spécialisé) IService<T> en:

- IOptionalService<T>

- IOptionalRecommendedService<T>

- IRunnableService<T>

- IRunnableRecommended<T>

- IRunning<T>

Afin que la définition même de la dépendance spécifie le Requirement (Optional,..., Running).
Ces wrappers permettent d'éviter l'utilisation d'un attribut, assez moche dans le cas de l'injection par constructeur (ce que Yodii supportera) puisqu'il devrait être poser sur le paramètre.
Lorsque qu'une dépendance n'est pas wrappée dans un IXXXService<T>, elle est alors « Naked » (c'est le terme que l'on a retenu pour Yodii) et celui-ci est considéré comme étant une dépendance de facto « Running ».
Je pense que « Naked » est plus clair que « Wrapped ».

Voilou.


Olivier Spinelli
Gérant
Tél. : 06.20.41.47.14
[signature]
10 rue Mercoeur - 75011 Paris
Tél. : 01.84.16.19.99
www.invenietis.com<http://www.invenietis.com/>

image001.png

Jean-loup KAHLOUN

unread,
May 28, 2014, 5:25:23 AM5/28/14
to civik...@googlegroups.com

 

J’aime cette partie-là :

« mais, en pratique, le IService<T> est aussi lui-même, en fait, un T.

En castant: (T)(IService<T> ) <==> T, on a le Service T car le IService<T> est l’objet de proxy du Service généré dynamiquement. »

 

C’est à ce moment-là qu’on se dit « mais qu’est-ce que c’est que ce bordel ?... »

 

Très bonne idée cette spécialisation de IService en IOptionalService, IRunnableService etc…

Vivement qu’on intègre ça dans Civikey.

 

Jean-Loup

 

 

From: civik...@googlegroups.com [mailto:civik...@googlegroups.com] On Behalf Of Olivier Spinelli
Sent: mercredi 28 mai 2014 09:18
To: 'civik...@googlegroups.com'
Subject: [civikey-dev] "Naked" dependent Service question.

 

Une question d’Antoine Raquillet:

 

J'ai une petite question concernant yodii (encore)

C'est quoi un service wrappé ?

(rapport à la property ServiceWrapped de IService ReferenceInfo)

(*IsIServiceWrapped)

 

Réponse :

 

Soit une dépendance est la pure interface (IDeliveryService service) soit elle est wrappée dans un IService<T>, (IService<IDeliveryService> service).

 

Dans ce cas, le wrapper expose le status du service (Running, Stopped, etc.) et peut aussi exposer l'API de contrôle (Start(), Stop()). Le service est accessible via la propriété T IService<T>.Service { get; }, mais, en pratique, le IService<T> est aussi lui-même, en fait, un T.

En castant: (T)(IService<T> ) <==> T, on a le Service T car le IService<T> est l’objet de proxy du Service généré dynamiquement.

 

Dans Yodii, on a décliné (spécialisé) IService<T> en:

-          IOptionalService<T>

-          IOptionalRecommendedService<T>

-          IRunnableService<T>

-          IRunnableRecommended<T>

-          IRunning<T>

 

Afin que la définition même de la dépendance spécifie le Requirement (Optional,…, Running).

Ces wrappers permettent d’éviter l’utilisation d’un attribut, assez moche dans le cas de l’injection par constructeur (ce que Yodii supportera) puisqu’il devrait être poser sur le paramètre.

Lorsque qu’une dépendance n’est pas wrappée dans un IXXXService<T>, elle est alors « Naked » (c’est le terme que l’on a retenu pour Yodii) et celui-ci est considéré comme étant une dépendance de facto « Running ».

Je pense que « Naked » est plus clair que « Wrapped ».

 

Voilou.

 

 

Olivier Spinelli

Gérant
Tél. : 06.20.41.47.14

signature


10 rue Mercoeur - 75011 Paris
Tél. : 01.84.16.19.99

Reply all
Reply to author
Forward
0 new messages