2009-09-02 12 views
0

Mon supérieur m'a dit qu'une mauvaise façon d'appeler un service Web ou un service wcf le traitait comme un assembly référencé, c'est-à-dire instancier une classe et appeler les méthodes.Développement sur un service Web

Je ne vois pas d'autre moyen de le faire cependant. Y a-t-il des meilleures pratiques que je suivrai quand j'interagissez avec les services Web externes/services ou est-ce bien:

public class ServiceProxyManager : IServiceProxyManager 
{ 
    private Service1Soap _externalService; 

    public ServiceProxyManager() 
    { 
     _externalService = new Service1SoapClient(); 
    } 
} 

Répondre

2

Il est plus propre si vous injectez le service Web dans le code qui l'utilise. De cette façon, vous pouvez écrire des tests en se moquant de l'interface. J'ai eu beaucoup de succès avec cette approche dans le passé.

Bien sûr quelque chose devra créer une interface du service, mais cela ne doit pas être le code qui appelle en elle ...

+0

Je suis désolé, je ne comprends pas ce que vous signifie en injectant le service Web dans le code qui l'utilise. – TheLearner

+0

Au lieu de le créer dans le constructeur de 'ServiceProxyManager', acceptez-le comme un paramètre. Enveloppez-le dans une interface afin que vous puissiez utiliser tout ce qui "ressemble" au service, y compris les simulacres. –

+0

Oh ok ouais je l'ai fait. Mais sinon pensez-vous que l'appeler comme une classe est bien? – TheLearner

Questions connexes