Co z tą konfiguracją? – część 1

Każde oprogramowanie, które udostępnia użytkownikowi choćby najmniejszą formę personalizacji swoich ustawień, musi posiadać jakiś sposób przechowywania oraz edycji tych ustawień. Zasadniczo możemy wyróżnić dwie metody zapisywania konfiguracji: format binarny oraz format tekstowy.

Format binarny

W tym przypadku zestaw parametrów konfiguracyjnych jest kopią 1:1 binarnej struktury przechowywanej w pamięci podręcznej procesora.

  • Dobre upakowanie danych,
  • Prosty odczyt/zapis – format nie wymaga parsowania,
  • Konieczność zachowania binarnej kompatybilności przy każdej zmianie struktury danych,
  • Arbitralnie ograniczona ilość rekordów konfiguracyjnych (np. alarmów, wykresów, itp.) oraz tekstów,
  • Konieczność używania oraz utrzymywania dedykowanej aplikacji czytającej binarny format danych,
Format tekstowy INI/XML/JSON

Tu dane zostają zapisane w bardziej “ludzkim” formacie. Każdy parametr jest identyfikowany nazwą oraz położeniem w drzewiastej strukturze danych.

  • Elastyczna struktura danych,
  • Możliwość zmiany ustawień nawet przy użyciu zwykłego edytora tekstu,
  • Brak ograniczeń w ilości czy rozmiarze wpisów konfiguracyjnych,
  • Łatwiejsza do zachowania wsteczna kompatybilność,
  • Konieczność stworzenia mechanizmu parsującego tekst i tłumaczącego go na format binarny,
  • Słabe upakowanie danych,
  • Dłuższy czas ładowania,
Co wybrać?/h5>

Ponownie stajemy przed wyborem – czas na porównanie obu metod. Format binarny jest oczywiście prostszy w implementacji po stronie urządzenia. Aby zapisać ustawienia wystarczy zrzucić fragment pamięci np. do pliku. Problemem staje się ich wczytanie po stronie komputera. Poprzedni projekt, HypeFIS, posiadał dedykowany program konfiguracyjny. Z perspektywy czasu to rozwiązanie okazało się być bardzo pracochłonne. Każda, nawet niewielka zmiana kodu w urządzeniu, wymagała zapewnienia kompatybilności od strony aplikacji konfiguracyjnej.

Formaty tekstowe, takie jak XML czy JSON nie stawiają przed nami takich wymagań. Ich addytywna i elastyczna struktura pozwala na łatwe zapewnienie wstecznej kompatybilności. Z drugiej strony będziemy potrzebowali odpowiedniego parsera, który zamieni tekst na format binarny, zrozumiały dla naszych aplikacji. Mniejsze “upakowanie” danych w formacie tekstowym wymusza zastosowanie jakiegoś pojemnego medium, które będzie w stanie przechować konfigurację. W naszym przypadku nie stanowi to najmniejszego problemu, gdyż posiadamy w systemie kartę pamięci SD, która zapewnia ogromną (jak na wymagania konfiguracji) ilość miejsca 🙂

Konkluzja

Doświadczenia poprzednich projektów pokazują jasno, że o ile tylko pozwalają na to warunki, warto wykorzystać elastyczniejszą formę zapisu danych jaką stanowią wszelkie formaty tekstowe. Inwestycja czasu w napisanie odpowiedniego parsera jest rzędy wielkości mniejsza, od tego spędzonego nad utrzymywaniem dedykowanych aplikacji. Wybór jest więc dość jasny 😀

.

Posted in Sto dni w kolorze.