我正試圖在兩個服務之間建立連接。 Service1將發送事件通知給service2。WCF兩個服務之間的回調
我想在這兩個服務之間使用回調。 service1將把事件發送到service2,service2將把事件傳遞給客戶端。
是否可以在兩個服務之間使用回調?
我已經查看了wcf回調的示例,但無法找到服務之間的任何服務通信。
任何幫助appreaciated。請參閱下面的服務1的代碼。 我的問題:其他服務的代碼如何與其中的回調看起來像?
還是在這種情況下,其中一個服務的行爲像一個客戶?那該怎麼看?
服務1碼:(接口類)
public interface IMyEvents
{
[OperationContract(IsOneWay = true)]
void Event1();
}
[ServiceContract(SessionMode = SessionMode.Required, CallbackContract = typeof(IMyEvents))]
public interface SampleInterface
{
[OperationContract]
void DoSomethingAndFireEvent();
[OperationContract]
void SubscribeEvent();
}
這是服務類
public class SampleHandlerSimulator : SampleInterface
{
static Action m_Event1 = delegate { Console.WriteLine("Catch");};
public void SubscribeEvent()
{
IMyEvents subscriber = OperationContext.Current.GetCallbackChannel<IMyEvents>();
m_Event1 += subscriber.Event1;
}
public static void FireEvent()
{
m_Event1();
}
public void DoSomethingAndFireEvent()
{
CCStateHandlerSimulator.FireEvent();
}
謝謝您的回答,但我不能讓它運行。我正在使用也是雙工的netnamedpipebinding。我是否必須在兩個服務中實現netnamedpipebinding或者只有一個?你的代碼是否是第二種服務應該如何被推動的例子?因爲如你所見,我已經提供了第一個服務的代碼。而你的代碼不適合我的service1代碼。 – Annonymuze 2012-03-16 09:17:00
我對管道知之甚少,但您只需要在父服務中設置終點,然後在將服務引用添加到子服務後,子服務就會在其配置中反映父服務。我發佈的代碼並不是特定於您的,但它確實會突出顯示您需要的標籤和東西。也許你可以發佈你的父服務app.config? – ldgorman 2012-03-16 14:40:08
PubSub可能會更好,取決於您要完成的工作。我遇到了所有與雙面綁定有關的問題,而且效率並不高。 Pub-Sub的好例子和一個框架可以在這裏找到:http://www.idesign.net/Downloads – PTiddy 2012-03-16 14:59:24