2009-10-14 17 views
6

Przeczytałem wiele stwierdzeń, takich jak "nie powinieneś zapychać pliku app.config z ustawieniami niestandardowymi". Jednak miałem wrażenie, że to właśnie jest celem tego pliku?App.Config kontra niestandardowy plik XML

Czy to po prostu coś na preferencje? Czy są jakieś rzeczywiste zalety (inne niż oddzielenie ustawień) przy użyciu niestandardowego pliku XML, zgodnie z plikiem app.config? Jeśli chcesz jawnie oddzielić ustawienia, lepiej użyć niestandardowego ConfigurationSection niż wybrać niestandardowy plik XML?

Chciałbym tu przedstawić innym ludziom przemyślenia na ten temat.

Odpowiedz

5

Niektórzy ludzie mają tendencję do pójścia nieco za burtę na niestandardowych procedurach obsługi sekcji konfiguracji, moim skromnym zdaniem.

Używam ich tylko wtedy, gdy potrzebuję czegoś, co jest bardzo ustrukturyzowane; i to jest używane/pisane przez osoby trzecie (tj. chcę wykonać na nim jakieś ekstrawaganckie zatwierdzenie).

Myślę, że można całkiem szczęśliwie używać app.config/web.config dla wszystkich odpowiednich ustawień i używać oddzielnych plików XML, gdy jest bardzo jasne, że jest to oddzielny składnik aplikacji.

1

App.Config są dobre dla konfiguracji, które są specyficzne dla aplikacji: dobrym przykładem jest ścieżka do bazy danych. Reszta powinna z tego wyjść.

Jedną z rzeczy, które możesz chcieć zrobić, to utworzyć pliki specyficzne dla użytkownika, możesz wtedy użyć niestandardowego xml, który zostanie zapisany w IsolatedStore.

+1

Przypuszczam, że problem dotyczy tego, co jest "specyficzne dla aplikacji".Ponieważ zakładam, że wszystkie ustawienia, których potrzebujesz do swojej aplikacji, są specyficzne dla aplikacji ... – James

5

Spójrz na Application Settings Architecture, app.config jest dla Configration w odniesieniu do aplikacji, to dość ogólny termin jednak. Więc sugeruję, aby spojrzeć w pliki ustawień aplikacji.

Nie będę zapisywać ustawień takich jak "ładowanie bazy danych przy uruchomieniu lub nie" w pliku app.config. Wolę używać Alternatywnej pamięci masowej, takiej jak Ustawienia Aplikacji, nie mylić Konfiguracji Aplikacji z Ustawieniami, nawet jeśli zechcesz to zrobić, Nie rób tego. app.config powinien mieć konfigrację dotyczącą niższego poziomu rzeczy, takich jak połączenie z bazą danych, dostawca członkostwa lub jakakolwiek inna informacja o Krytyce aplikacji.

1

Moim zdaniem uważam app.config za dobry dla ustawień czasu wdrożenia, takich jak lokalizacja bazy danych, adres IP lub lokalizacja krytycznego pliku danych, itp. Ustawienia użytkownika, takie jak czcionka, kolor, preferencje zachowania powinien przejść do innego pliku, który można łatwo utworzyć i zapisać przy pomocy serializacji Xml.

+0

Czy rozważyłbyś to samo rozwiązanie w przypadku komunikatów interfejsu użytkownika itp.? – James

+0

Jeśli wiadomości interfejsu użytkownika są konfigurowane bezpośrednio przez użytkownika, to z pewnością. Ale jeśli myślisz o komunikatach UI w zakresie tłumaczeń językowych, powinieneś zajrzeć do złożeń satelitów i obsługi .NET do lokalizacji. –

2

Większość ustawień zazwyczaj należą do jednej z trzech obozach: Ustawienia

  1. techniczne, które wpływają na zachowanie wewnętrznego kodu, np ciąg połączenia z bazą danych, ścieżka do pliku danych, przełączniki rejestrowania, przełączniki obsługi błędów itp.
  2. Ustawienia biznesowe wpływające na logikę biznesową produktu, np. "Czy użytkownicy mają dostęp do modułu CRM?"
  3. Wartości profilu użytkownika, np. "czy ten użytkownik ma dostęp do modułu CRM?".

Naturalnym miejscem dla typu 1 jest w app.config lub web.config i naturalnym miejscem dla typów 2 i 3 znajduje się w bazie danych.

Powiązane problemy