私はこのプロジェクトに取り組んでいます。そこには、リモートサーバ上のwcfデュプレックスサービスを介して「リアルタイム」でフィードされたデータを取得するウェブサイトがあります。アップデートには約1秒の頻度があり、私はSignalRクライアント側を使ってビューを更新します。 (サービスから入って来る「パケット」があるたびに、私は顧客に通知する)。WCFデュプレックスサービスでSignalRを使用することを検討すべきですか?
現在、デュプレックスサービスの仕組みのために、この解決策にいくつかの問題が発生しています。バックエンドサーバーにデータを提供する「リアルタイム」接続がない場合、サービスは最新のデータベースエントリをクライアントにプッシュするだけです。それはうまくいきますが、私のクライアントの見解はこれを適切に引き受けていないようです。ビューを更新しようとすると、時々更新される値は実際はランダムです。 (デバッグ、値が通知-方法ですべてがある場合)
私はこのような接続を設定する私のコントローラ内のメソッドを呼び出すためにjqueryの/ AJAXを使用して試してみた:
setTimeout(function() {
$.ajax({
type: 'GET',
url: '@Url.Action("ConnectToDataSources", "Fleet")',
cache: false,
success: function (result) {
}
});
}, 1000)
とで私のコントローラ:
public void ConnectToDataSources()
{
UnitContract[] listOfUnitsFromService = UnitClient.GetUnits(false, "", false);
Model = new FleetModel
{
UnitDetails = GenerateUnitDetails(listOfUnitsFromService.ToList()),
};
foreach (UnitDetailsModel unit in Model.UnitDetails)
{
var ods = new OperationDataSource();
var ads = new ActivityStatusDataSource();
ads.Start(unit.UnitId, ActivityReceived, AliveReceived);
ods.Start(DataReceived, unit.UnitId);
_dataSources.Add(ods);
_activityStatusDataSources.Add(ads);
}
}
多くの試行錯誤の末、私はSignalRも同様にバックエンドサービスを変更することを検討しました。 SignalRがサーバーとクライアントの両方で上記の機能を実際に置き換えることができることを正しく理解しましたか?また
、誰もが私はあなたがこの問題を解決する方法を聞くに非常に興味があるセットアップの同じ種類:)
プロトコルが1つで、別のプロトコルがデュアルウェイトランスポートをサポートする任意のプロトコルを使用できる(またはwsDualHttpBindingの場合のようにサポートしない場合もある)ため、「WebSocketはデュプレックスサービスよりも優れている」とは言えません。 WebSocketを含む。この回答が投稿された時点で、WebSocketを介してDuplex WCFをネイティブでサポートするnetHttpBindingがありました。 –
@VitaliyUlantikovこの回答は18ヶ月ですが、私はそれを思い出していません。あなたがそれについてもっと知っていれば、あなたは望むように編集することができます。 – i3arnon