如何从WPF中的webHttpBinding服务调用dualHttpBinding(回调契约)

时间:2014-10-03 15:13:06

标签: c# wpf wcf webhttpbinding wsdualhttpbinding

大家好我在我的应用程序中遇到了一个关于dualHttpBinding和webHttpBinding的问题。这是整体情景

我有一个dotNet和Android应用程序,它使用WCF服务(有三种不同的绑定)。

1. basicHttpBinding - For dotNet app (Service1.svc)
2. webHttpBinding - For Android to access via Rest full service (Service2.svc)
3. dualHttpBinding - For push notification to dotNet app(PushServie.svc)

当Android应用程序使用Servie2中的方法(AddOrderItems)时 - 它会插入到数据库中,并在inturn中显示dotNet应用程序中的消息(推送通知)。为此,我在PushService中使用了CallBackContract,当我尝试从dotNet应用程序访问AddOrderItems方法(在Servie2中)时(我出于测试目的)并且通知消息即将到来,它正常工作。

但我的问题是如何才能知道是否以及何时从Android应用程序调用我的AddOrderItems,以便我必须在dotNet应用程序中显示消息(通过CallBackContract)。

我尝试在调用AddOrderItems方法之后从Servie2.svc调用PushServie.svc方法(CallBackMessagge),但根本没有运气。

以下是Service2和PushService.svc的代码,

    // AddOrderItems method in IService2 which is implemented in Servie2.svc
    [OperationContract]
    [WebInvoke(Method = "POST", UriTemplate = "AddOrderItems", RequestFormat = 
    WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, 
    BodyStyle = WebMessageBodyStyle.Bare)]
    bool AddOrderItems(RequestOrderItemData orderItemData);

并在IPushService中回调方法,该方法在PushService.svc

中实现
    [OperationContract(IsOneWay = true)]
    void DisplayMessage(int orderID, int tableID, string tableName);

以下是PushService中DisplayMessage的代码

 IPushNotificationCallBack Callback
    {
        get
        {
            return  
            OperationContext.Current.GetCallbackChannel<IPushNotificationCallBack>();
        }
    }

和PushService.svc中的方法

public void DisplayMessage(int orderID, int tableID, string tableName)
{
   Callback.DisplayMessage(orderID, tableID, tableName);
}

我试图用谷歌搜索,每个人都说webHttpBindin不支持回调功能。

我担心的是我想从AddOrderItems调用我的DisplayMessage方法。如果可以进行任何修改,我真的很高兴。

据我所知,我已经发布了所有必要的代码,如果有其他需要,请告诉我,我会发布。

任何帮助都非常感谢。

温馨的问候, 内甚

0 个答案:

没有答案