Zajmuję się tworzeniem aplikacji komputerowej i ta aplikacja wymaga pewnych informacji do uruchomienia, ale nie zmienia żadnej z tych informacji (dane muszą być ładowane przy każdym uruchomieniu aplikacji, ale dane nigdy się nie zmieniają). Dane muszą być przechowywane na tym samym komputerze, na którym działa aplikacja (pamięć po stronie klienta?).
Lepiej jest również, jeśli użytkownik nie może łatwo zmienić tych informacji (zakładając, że nie ma dużej wiedzy informatycznej).
Jak mam przechowywać tego rodzaju informacje? Lokalna baza danych? XML przesyłany z aplikacją?
Używam WPF.
Odpowiedzi:
Plik binarny byłby oczywistą odpowiedzią, ale zależy od tego, w jaki sposób go ładujesz - równie dobrze możesz ułatwić sobie życie, jeśli możesz.
XML może być dobrym wyborem, ponieważ istnieją wbudowane metody w C # do odczytu tego. Możesz dodać sumę kontrolną do swoich danych, aby jeśli użytkownik ją zmieni, suma kontrolna nie będzie już zgodna (musisz dodać czek, aby upewnić się, że suma kontrolna jest poprawna)
Lokalna baza danych może powodować więcej problemów, ponieważ istnieją inne zależności, które wymagają dostępu do niej
źródło
Jeśli dane nigdy się nie zmieniają i są tylko do odczytu , po prostu umieść je w pliku kodu jako listę stałych.
Jeśli te dane różnią się w zależności od wdrożenia, plik zewnętrzny jest w porządku.
.Net ma wbudowane pliki .config (App.Config). Należy ich używać, ponieważ istnieją standardowe sposoby (wbudowane w środowisko) do odczytywania z nich informacji.
Użyj plików konfiguracyjnych na wypadek, gdyby ustawienie musiało się zmienić (nigdy nie mów nigdy), ponieważ są to tylko pliki tekstowe (Xml). Jeśli istnieją poufne informacje, w razie potrzeby można zaszyfrować ustawienie.
źródło
Zawsze możesz dodać plik do projektu i ustawić jego typ kompilacji, aby
Embedded Resource
był osadzony bezpośrednio w samej aplikacji.Alternatywnie plik, który jest zaszyfrowany i umieszczony w dostępnej lokalizacji.
źródło
Jeśli nie chcesz, aby użytkownik nawet zerknął na dane, powinieneś serializować je do pliku danych binarnych.
Tylko aplikacja zna długość fragmentów do odczytania z niego.
Nie znam C #, ale w Javie utworzyłbyś taki plik:
... i czytają to tak:
źródło