2016-08-08 7 views
1

私はインターネット上のどこかでホストされている別の安らかなサービスによってデータプッシュを読み取るために使われるRestful WCFサービスを持っています。他のサービスでJsonデータプッシュを読み取る方法を公開する必要があります。WCFプッシュ通知メッセージ受信時の運用契約タイプ?

[ServiceContract] 
public interface ITestService 
{ 
    [OperationContract] 
    [WebInvoke(Method = "GET", 
     ResponseFormat = WebMessageFormat.Json)] 
    string GetData(string JsonData); 
} 

GETメソッドでプッシュメッセージを受け取れますか?また、プッシュサービスは大量のデータを一度に送信できます。どうすれば私のサーバが大量のデータでもうまく動作するように制限することができます。

よろしく

答えて

1

私は別のRESTfulなサービスがインターネット上にホストされている によるデータのプッシュを読み取るために使用されるRESTfulなWCFサービスを提供しています。

"プッシュ"はおそらく間違った単語です。それはここであなたがそれを使用している方法とは異なる意味を持つサーバープッシュを呼び起こします。もっと正確に言えば、別のサービスが呼び出して、あるデータを渡すサービスがあります。

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文字列を処理する必要があります。 MyDataには、あなたのJSONペイロードに対応し、C#型である

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

:これを行うための最も一般的な方法は、JSONのシリアライズをサポートするC#の型を定義することです。 JSONは、あなたのメソッドで利用可能になるMyDataのインスタンスに完全に非直列化されます。

+0

ありがとうございます。私のWCFサービスは一度に大量のデータを取得できます。それは私のサーバーがDOSの問題を取得しないようにそれを制限する方法はありますか? –

+0

@ EhsanHafeez通常どおりに行うこと以外に、あなたのサービスに対するddosの攻撃については何もできません:http://linuxgazette.net/126/cherian.html –

関連する問題