Der Hauptunterschied besteht darin, dass Sie mit PersistentConnection kein RPC ausführen können, sondern nur Rohdaten senden können. Also anstatt Nachrichten vom Server so zu senden
Clients.All.addNewMessageToPage(name, message);
Sie müssten ein Objekt mit Connection.Broadcast()
oder senden, Connection.Send()
und dann müsste der Client entscheiden, was damit geschehen soll. Sie können beispielsweise ein Objekt wie folgt senden:
Connection.Broadcast(new {
method: "addNewMessageToPage",
name: "Albert",
message: "Hello"
});
Und auf dem Client, anstatt einfach zu definieren
yourHub.client.addNewMessageToPage = function(name, message) {
// things and stuff
};
Sie müssten einen Rückruf hinzufügen, um alle eingehenden Nachrichten zu verarbeiten:
function addNewMessageToPage(name, message) {
// things and stuff
}
connection.received(function (data) {
var method = data.method;
window[method](data.name, data.message);
});
Sie müssten in der OnReceived
Methode die gleiche Art des Versands auf der Serverseite durchführen . Sie müssten dort auch die Datenzeichenfolge deserialisieren, anstatt die stark typisierten Objekte wie bei Hub-Methoden zu empfangen.
Es gibt nicht viele Gründe, PersistentConnection anstelle von Hubs zu wählen. Ein Grund, der mir bekannt ist, ist, dass es möglich ist , vordefinierten JSON über PersistentConnection zu senden , was mit Hubs nicht möglich ist. In bestimmten Situationen kann dies ein relevanter Leistungsvorteil sein.
Beachten Sie außerdem dieses Zitat aus der Dokumentation :
Auswahl eines Kommunikationsmodells
Die meisten Anwendungen sollten die Hubs-API verwenden. Die Connections-API kann unter folgenden Umständen verwendet werden:
Abhängig von Ihrer Nachrichtenstruktur erhalten Sie möglicherweise auch kleine Leistungsvorteile durch die Verwendung von PersistentConnection.
Vielleicht möchten Sie sich die SignalR-Beispiele ansehen, insbesondere dies hier.