Как передать данные от подписчика в службе WCF другому консольному приложению?

#c# #.net #wcf #publish-subscribe #wcf-callbacks

#c# #.net #wcf #опубликовать-подписаться #wcf-обратные вызовы

Вопрос:

Я написал приложение-службу WCF и библиотеку классов ( Logger.dll ). Я написал код, используя шаблон публикации — подписки.

В библиотеке классов передача данных осуществляется как путем публикации с использованием делегатов и событий. И он получает данные, подписываясь на события в приложении-службе WCF. Итак, после размещения приложения-службы мне нужно передать данные из службы WCF в другое консольное приложение. Как я могу передавать данные при подписке на события в службе WCF другому консольному приложению?Кто-нибудь знает, как это сделать?

Logger.dll

 public class Data
{
    public string ID { get; set; }
    public string Description { get; set; }
}

public delegate void LogHandler(Data log);

public class ClsSub
{
    public event LogHandler OnDataRetrieved;

    public void LoadData()
    {
        DataTable dt = GetData();

        foreach (DataRow row in dt.Rows)
        {
            Data logdata = new Data();
            if (row["Description"].ToString().Contains("User found"))
            {
                logdata.ID = row["UserID"].ToString();
                logdata.Description = row["Description"].ToString();
            }
            
            if (row["Description"].ToString().Contains("User not found"))
            {
                logdata.ID = row["UserID"].ToString();
                logdata.Description = row["Description"].ToString();
            }

            if (OnDataRetrieved != null)
            {
                OnDataRetrieved(logdata);
            }
        }
    }

    private DataTable GetData()
    {
        var result = new DataTable();
        result.Columns.Add("UserID", typeof(string));
        result.Columns.Add("Description", typeof(string));
        result.Rows.Add("user1", "description1");
        result.Rows.Add("user2", "description2");
        return resu<
    }
}

public class ClsMain
{
    public event LogHandler OnDataRetrieved;

    public void ReadData()
    {
        ClsSub sub = new ClsSub();
        sub.OnDataRetrieved  = OnDataRetrieved;
        sub.LoadData();
    }
}
 

Служба WCF

Iservice1.cs

 Using Logger;

[ServiceContract(CallbackContract = typeof(IDataServiceCallBack))]
public interface IDataService
{
    [OperationContract(IsOneWay = true)]
    void RetrieveLogData();
}

[ServiceContract]
public interface IDataServiceCallBack
{
    [OperationContract(IsOneWay = true)]
    void OnLoggerData(Data log);
}
 

Service1.svc.cs

 public class Service1 : IDataService
{
    public IDataServiceCallBack callBack
    {
        get
        {
            return OperationContext.Current.GetCallbackChannel<IDataServiceCallBack>();
        }
    }
    
    public void RetrieveLogData()
    {
        ClsMain main = new ClsMain();
        main.OnDataRetrieved  = ClsMain_OnDataRetrieved;
        main.ReadData();
    }

    private static void ClsMain_OnDataRetrieved(Data log)
    {
        // I am getting the data when the publisher publishes something.
        // I need to send this data to another console application.

        //Console.WriteLine(log.ID   " "   log.Description);
    }
}
 

Я получаю данные, когда издатель что-то публикует, а подписчик подписывается на событие в службе WCF. Возможно ли передать эти данные в другое консольное приложение?Кто-нибудь знает, как это сделать?

Комментарии:

1. Кто-нибудь знает, как это сделать?