2011-09-01 6 views
3

Je développe une application .NET (WinForms, .NET Framework 4.0) et j'ai besoin d'appeler une méthode à partir d'un service Web.Travailler avec les services Web

Le problème est que le service Web du client n'est accessible que depuis l'intérieur de son réseau. Donc au moment du développement, je ne peux pas y accéder, donc je peux l'ajouter comme une référence.

Comment dois-je procéder? Dois-je créer une sorte de réplique de ce service Web sur mon réseau? Quelle serait la meilleure option?

Répondre

1

J'obtiendrais le WSDL et j'en écrirais une maquette que je pourrais appeler de mon côté. Je lui ferais alors retourner les données que je m'attendais et ensuite je lui donnerais des données que je n'attendais pas.

Ensuite, lorsque vous le déployez (devrait) être ok mais vous auriez besoin d'exécuter des tests d'intégration.

L'alternative c'est de leur dire d'ouvrir un port pour que vous puissiez l'utiliser afin que vous puissiez écrire le s/ware.

+0

Merci! Pourriez-vous s'il vous plaît fournir plus de détails? – maephisto

0

Vous pouvez répliquer le service Web qui renvoie des données factices.

+0

merci! qu'est-ce que tu comprends par réplique? – maephisto

+0

@ Maephisto, même WSDL, données fictives. –

0

Je placerais l'appel au service dans une couche d'abstraction distincte, cela vous permettrait de fournir une implémentation différente si vous le souhaitez pendant le test.

Par exemple. Quelque chose dans le sens de ..

public interface IXYZServiceInvoker 
{ 
    SomeData SomeServiceCall(); 
}  

public class SomeServiceInvoker : IXYZServiceInvoker 
{ 
    public void SomeServiceCall() 
    { 
      //Calls a real service  
    }   
}  

public class FakeServiceInvoker : IXYZServiceInvoker 
{ 
    public SomeData SomeServiceCall() 
    { 
      //returns some dummy/test data  
    } 
}