Ich habe ein Projekt, das ich gerade mit BreezeJS eingerichtet habe. Ich weiß nicht, was in BreezeJS in vollem Umfang vor sich geht, aber ich habe einfach akzeptiert, dass es funktioniert. Ich habe meine Objekte auf dem Bildschirm im Wesentlichen von diesem einfachen Befehl aus gesehen.SignalR kombiniert mit Breeze
export function getProjects(projectsObservable, errorObservable)
{
return breeze.EntityQuery.from("Projects")
.using(manager).execute()...then/fail.
}
Ich möchte jetzt reagieren auf Benutzer, die die gleichen Elemente mit signalR bearbeiten. Das bedeutet, ich habe an dieser Stelle Callbacks ausgelöst Javascript Ende, dass Objekt mit GUID = xxxxxxx hat sich geändert (GUID ist der Schlüssel).
Wie kann ich in Breeze tippen, aktualisieren Sie das Element, ohne es erneut den Server abfragen, noch sieht es als ein Update, das an den Server zurück gesendet werden muss. Denken Sie daran, dass ich gerade das Update von Signal r bekommen habe.
Sollte ich an erster Stelle einen anderen Pfad genommen haben, gibt es einen Grund, ein WebApi zu erstellen, wenn ich nur die Daten vom SignalR Hub am Anfang hätte zurückgeben können? Wäre es einfach, dies mit Breeze anstelle von WebApi einzurichten?
Erstens wäre es Einfachheit und schnelle Entwicklung. Einfach an den Signalgeber anschließen, um Daten zu übertragen.Aber Sie haben absolut Recht, dass es besser sein könnte, den Kunden entscheiden zu lassen, wann er die tatsächlichen Daten erhalten soll. Ich werde ein wenig mehr darüber nachdenken, und wenn ich meine Meinung ändere, dass meine erste Idee besser ist als deine, dann werde ich es euch wissen lassen :) –
Ich muss mit dem Aufstieg von CQRS sagen, dass diese Ansicht nicht die einzig korrekte Ansicht ist. Wenn ich Befehle an meinen Server erhalte, die mir schließlich Ereignisse/oder vollständige Lesemodelle schicken, dann ist der Signalgeber ein großer asynchroner Ereignis- und Objektliefermechanismus. – Damian
Eigentlich wäre dies ein großartiges Feature aus dem gleichen Grund, Brise Changesets ist - Minimierung der Anzahl der Roudrips auf dem Server. Wenn Sie nur Signalgeber für Benachrichtigungen verwenden (was auch nicht frei ist), müssen Sie immer noch alle geänderten Objekte, an denen Ihr Client interessiert ist, über die Web-API/ODATA abrufen. In nicht-trivialen Fällen würde dies mehrere Anfragen oder eine dedizierte Methode erfordern die Änderungen in einem Zug, die wiederum nicht flexibel/generisch sein können. Mein Punkt ist - es wäre schön, eine Möglichkeit zu haben, Changesets nicht nur auf dem Server, sondern auch auf abonnierten Clients (optional) zu propagieren. –