Dire que j'ai contrat de service WCF comme celui-ciWCF Duplex contrat
[ServiceContract(CallbackContract = typeof(ICallback1),
SessionMode = SessionMode.Required)]
public interface IService1
{
// some methods
}
La mise en œuvre de service a InstanceContextMode.Single
fixé pour InstanceContextMode
et ICallback1
est quelque chose comme
public interface ICallback1
{
[OperationContract]
void Report(int someValue);
}
Maintenant, côté client, je peux avoir une classe les implements ICallback1 aiment
class Callback1 : ICallback1
{
public void Report(int someValue)
{
// alert client
}
}
et je créer référence de service client comme celui-ci
Service1Client serviceClient = new Service1Client(new InstanceContext(new CallBack1()));
qui fonctionne très bien. Maintenant, le problème est que j'ai quelques clients qui ne sont pas intéressés par le rappel, donc je pensais que je ne demande pas d'implémenter l'interface de rappel pour ces clients, donc j'essayé
Service1Client serviceClient = new Service1Client(null);
et
Service1Client serviceClient = new Service1Client(new InstanceContext(null));
les deux ont rapporté que le parameter cannot be null
. Ma question est, comment puis-je créer une référence de service sans passer un objet de rappel si le client n'est pas intéressé par le rappel. La seule exigence est que tous les clients doivent parler au même service mais sinon je peux restructurer le service. Des pensées ?
EDIT:
J'ai aussi essayé SessionMode = SessionMode.Allowed
pour ServiceContract au lieu de SessionMode.Required
, mais cela n'a pas aidé non plus.
Cela semble impossible tant que cela fait partie du contrat. –
Le contrat de rappel peut-il être facultatif? –
En termes simples, le rappel est défini comme une partie du contrat de service, c'est constant. Configurer tout le reste ne change pas le contrat, il semble donc impossible. –