Witam , tworze aplikacje WCF, i mam taki problem. Mianowicie:
- Mam podłączonych do servera WCF kilku klientów
- gdy jeden z klientów zmienia dane na serverze chce aby kazdy pozostały klient dowiedzial sie o tym. W tym momencie to dziala tak ze callback wraca tylko do klienta ktory wywolal funkcje.
/// <summary>
/// service interface
/// </summary>
[ServiceContract(SessionMode = SessionMode.Required, CallbackContract = typeof(IServiceClassCallback))]
public interface IServiceClass
{
/// <summary>
/// Gets the tags.
/// </summary>
[OperationContract(IsOneWay = true)]
void GetTag();
[OperationContract(IsOneWay = true)]
void ChangeTag(Tag tag);
}
/// <summary>
/// callback interface
/// </summary>
public interface IServiceClassCallback
{
[OperationContract(IsOneWay = true)]
void ReceiveTag(Tag tag);
}
/// <summary>
/// main service class
/// </summary>
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class ServiceClass : IServiceClass
{
/// <summary>
/// Gets the callback.
/// </summary>
public IServiceClassCallback Callback
{
get
{
return OperationContext.Current.GetCallbackChannel<IServiceClassCallback>();
}
}
/// <summary>
/// Gets the tags.
/// </summary>
public void GetTag()
{
Callback.ReceiveTag(TagHolder.Tag);
EventHolder.LogRequested(DateTime.Now +" Requested Tag");
}
/// <summary>
/// Changes the tag.
/// </summary>
/// <param name="tag">The tag.</param>
public void ChangeTag(Tag tag)
{
TagHolder.Tag.TimeStamp = tag.TimeStamp;
TagHolder.Tag.Quality = tag.Quality;
TagHolder.Tag.Value = tag.Value;
Callback.ReceiveTag(TagHolder.Tag);
EventHolder.OnTagChanged(tag);
EventHolder.LogRequested(DateTime.Now + " Tag changed");
}
to kod servera. Kiedy jeden z klientow wywola ChangeTag, chce zeby kazdy pozostaly podłączony klient otrzymal dokladnie ten sam callback. Jak to zrobic?