Je n'utilise pas du tout les proxies générés. Je n'ai qu'un assemblage partagé entre mon client et mon serveur qui définit les interfaces de contrat de service + le tour de passe-passe suivant.
// this class can be used to instantiate a unidirectional proxy (one that doesn't require callbacks from the server)
public class UniDirectionalServiceProxy<T> : System.ServiceModel.ClientBase<T> where T : class
{
public UniDirectionalServiceProxy()
{
}
public UniDirectionalServiceProxy(string endpointConfigurationName) :
base(endpointConfigurationName)
{
}
public UniDirectionalServiceProxy(string endpointConfigurationName, string remoteAddress) :
base(endpointConfigurationName, remoteAddress)
{
}
public UniDirectionalServiceProxy(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) :
base(endpointConfigurationName, remoteAddress)
{
}
public UniDirectionalServiceProxy(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
base(binding, remoteAddress)
{
}
// new keyword allows us to supercede the inherited protected member and make it public.
public new T Channel
{
get
{
return base.Channel;
}
}
}
Cela vous semble familier, n'est-ce pas? Construisez cet objet, puis changez simplement vos appels pour utiliser le membre Channel. Vous pouvez également utiliser ChannelFactory pour obtenir le même résultat (je suppose qu'ils ont fait de Channel un membre protégé de ClientBase pour encourager les développeurs à utiliser ChannelFactory), mais je préfère ce mécanisme car vous vous retrouvez avec un seul objet qui encapsule la communication contrôle et les appels à travers le fil. Évidemment, de cette façon vous perdez les méthodes async de svcutil, mais c'est assez facile de vous débrouiller avec les délégués.
C'est ce que nous faisons dans mon magasin. Nous reconstruisons toujours tous les proxies et les références dans Visual Build ... –
Je vote pour cela aussi. Construire l'automatisation est la voie à suivre! –
Avez-vous un exemple d'exécution d'une mise à jour de référence de service WSDL via la commande svcutil? – D3vtr0n