Mam projekt, który teraz skonfigurowałem z BreezeJS. Nie wiedząc, co się dzieje wewnątrz BreezeJS w pełnym zakresie, ale po prostu zaakceptowałem, że to działa, mam moje przedmioty pokazane na ekranie w zasadzie z tego prostego polecenia.SignalR w połączeniu z Breeze
export function getProjects(projectsObservable, errorObservable)
{
return breeze.EntityQuery.from("Projects")
.using(manager).execute()...then/fail.
}
Teraz chcę, aby była to reakcja na użytkowników, którzy edytują te same elementy za pomocą signalR. Oznacza to, że w tym momencie wywoływane są wywołania zwrotne po zakończeniu javascript mówiące, że obiekt z guid = xxxxxxx się zmienił (klucz to guid).
W jaki sposób mogę użyć Breeze, aby zaktualizować element bez ponownego wysyłania zapytania do serwera, ani nie widzi go jako aktualizacji, która musi zostać wysłana z powrotem na serwer. Remmeber, że właśnie dostałem aktualizację z sygnału r.
Czy w pierwszej kolejności podjąłem inną ścieżkę, czy istnieje powód, aby utworzyć WebApi, jeśli mógłbym tylko zwrócić dane z koncentratora signalR na początku? Czy byłoby łatwiej ustawić to za pomocą Breeze zamiast WebApi?
Po pierwsze, byłaby to prostota i szybki rozwój. Wystarczy podłączyć go od sygnalizatora, aby przesłać dane.Ale masz całkowitą rację, że może lepiej pozwolić klientowi zdecydować, kiedy uzyskać rzeczywiste dane. Pomyślę o tym trochę więcej i jeśli zmienię zdanie, że mój pierwszy pomysł jest lepszy niż twój, to dam ci znać :) –
Muszę powiedzieć, że wraz z rozwojem CQRS ten widok nie jest jedynym poprawnym poglądem. Jeśli wydaję polecenia do mojego serwera, który ostatecznie wysyła mi zdarzenia/lub pełne modele odczytu, to signalr jest doskonałym asynchronicznym mechanizmem zdarzeń i dostarczania obiektów. – Damian
W rzeczywistości byłaby to świetna funkcja z tego samego powodu, co zmiany na bryzy - minimalizowanie liczby roudripów na serwerze. Jeśli korzystasz tylko z sygnalizatorów do powiadomień (co też nie jest darmowe), nadal musisz pobrać wszystkie zmienione obiekty, których twój klient jest zainteresowany, za pośrednictwem api/odata w Internecie, a w nietrywialnych przypadkach będzie to wymagać kilku żądań lub dedykowanej metody pobierania zmiany w jednym przejściu, które z kolei nie mogą być elastyczne/ogólne. Chodzi mi o to, że byłoby miło mieć sposób na (opcjonalne) rozpowszechnianie zestawów zmian nie tylko na serwerze, ale również na subskrybowanych klientach. –