Pracuję nad aplikacją sieci Web ASP.NET, która używa dużej liczby skryptów JavaScript po stronie klienta, aby umożliwić użytkownikowi np. Zmianę kolejności list metodą przeciągania i upuszczania, wyszukiwanie elementów do dodania do listy (np. sugestie w pasku wyszukiwania Google), usuwania pozycji z listy itp.Utrzymywanie spójności między JavaScriptem a modelami obiektów w języku C#
Mam "klasę" JavaScript, której używam do przechowywania każdego elementu listy po stronie klienta jako oraz informacje o tym, jakie działanie wykonał użytkownik na przedmiocie (dodawanie, edycja, usuwanie, przenoszenie). Jedyny moment, w którym strona zostanie opublikowana na serwerze, to fakt, że użytkownik, tuż przed przesłaniem strony, szereguje wszystkie informacje o zmianach wprowadzonych w JSON i zapisuje je w ukrytych polach na stronie.
To, czego szukam, to ogólne porady dotyczące tego, jak budować moje zajęcia w języku C#. Myślę, że może być miło mieć klasę w języku C#, która pasuje do kodu JavaScript, więc mogę po prostu zreformować JSON na instancje tej klasy. Wydaje się jednak nieco dziwne, że mamy klasy po stronie serwera, które bezpośrednio powielają klasy JavaScript i istnieją tylko w celu obsługi implementacji interfejsu JavaScript.
To jest pytanie abstrakcyjne. Po prostu szukam wskazówek od innych, którzy zrobili podobne rzeczy w zakresie utrzymywania pasujących modeli obiektów po stronie klienta i serwera.
Dzięki, że brzmi to jak ciekawy pomysł na użycie RelaxNG. Ostatnio robiłem trochę rzeczy z buforami protokołów Google, które używają własnego języka do zdefiniowania takiej klasy, aby można było następnie wygenerować odpowiednie wersje dla wszystkich języków, w których się pisze. Ciekawe, jak można zastosować taki pomysł w wielu różnych scenariuszach i technologiach. Nie mogę uwierzyć, że nie myślałem o tym wcześniej. –
Ya, myślałem również o protobufs. Zastanawiam się, czy wygenerowany kod pochodzący z protobufs .idl jest użyteczny bez serializera protobufs. Jeśli tak, możesz użyć JsonSerializer w .NET, z kodem C# wygenerowanym przez narzędzie protobufs. – Cheeso
Sugeruje się, żebym porównał serialized wystąpienie klasy C# do statycznego dokumentu zawierającego JSON, który reprezentuje moją strukturę danych. Jeśli pasują, to wiem, że klasa C# ma rację. Następnie porównałbym instancje tej samej klasy w JavaScript do dokumentu JSON i jeśli pasują do siebie, to weryfikuje, czy będę w stanie wymieniać dane z klienta na serwer bez problemów z serializacją i deserializacją. –