C# 接收推送通知消息时的WCF操作合同类型?

C# 接收推送通知消息时的WCF操作合同类型?,c#,wcf,push-notification,C#,Wcf,Push Notification,我有一个Restful WCF服务,它将用于读取internet上某个地方托管的另一个Restful服务推送的数据。我必须公开一个方法来读取另一个服务推送的Json数据 [ServiceContract] public interface ITestService { [OperationContract] [WebInvoke( Method = "GET", ResponseFormat = WebMessageFormat.Json )] strin

我有一个Restful WCF服务,它将用于读取internet上某个地方托管的另一个Restful服务推送的数据。我必须公开一个方法来读取另一个服务推送的Json数据

[ServiceContract]
public interface ITestService
{
    [OperationContract]
    [WebInvoke( Method = "GET",
        ResponseFormat = WebMessageFormat.Json )]
    string GetData(string JsonData);
}
在GET方法中接收推送消息可以吗?推送服务还可以一次发送大量数据。我如何限制它,使我的服务器即使在处理大容量数据时也能正常工作

问候

我有RESTfulWCF服务,它将用于读取推送的数据 另一个Restful服务托管在互联网上的某处

“推”可能是个错误的词;它让人联想到服务器推送,它的含义与您在这里使用它的方式不同。更准确地说,您有一个服务,另一个服务将调用它,传递一些数据

在GET方法中接收推送消息可以吗

不,不好。GET操作仅传递查询字符串上的数据。对于由JSON组成的非常短的字符串来说,这实际上是很好的(尽管很不寻常),但是较长的字符串可能会违反您正在使用的任何技术堆栈中查询字符串的最大大小限制

使用POST操作可以:

[ServiceContract]
public interface ITestService
{
    [OperationContract]
    [WebInvoke( Method = "POST",
        RequestFormat = WebMessageFormat.Json,
        ResponseFormat = WebMessageFormat.Json,
        UriTemplate = "GetData" )]
    string GetData(string JsonData);
}
但是,您仍然需要手动实际处理JSON字符串。最常用的方法是定义一个支持JSON序列化的c类型:

[ServiceContract]
public interface ITestService
{
    [OperationContract]
    [WebInvoke(Method = "POST", 
        RequestFormat = WebMessageFormat.Json,
        ResponseFormat = WebMessageFormat.Json,
        UriTemplate = "GetData" )]
    string GetData(MyData data);
}

其中MyData是一个c#类型,对应于JSON负载。JSON将被干净地反序列化为MyData的一个实例,该实例将在您的方法中可用

谢谢你,汤姆。我的WCF服务可以立即获取批量数据。是否有办法限制它,使我的服务器不会出现DOS问题。@EhsanHafeez除了正常情况下,您对您的服务上的ddos攻击无能为力: