Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Programowanie Aplikacji Lokalnych.NET Usługi Monitorowanie aplikacji Konfiguracja.

Podobne prezentacje


Prezentacja na temat: "Programowanie Aplikacji Lokalnych.NET Usługi Monitorowanie aplikacji Konfiguracja."— Zapis prezentacji:

1 Programowanie Aplikacji Lokalnych.NET Usługi Monitorowanie aplikacji Konfiguracja

2 Serwis vs proces S. moga być uruchamiane na starcie (automatycznie) lub na życzenie procesów/recznie przez użytkownika S. jest uruchamiany przez SCM może zostać uruchomiony bez zalogowania użytkownika S. są nadzorowane przez system i mogą być automatycznie wznawiane w razie upadku S. nie mają dostepu do podsystemu UI (ale można napisać dodatkowy proces, który sie z nimi będzie komunikować) S. powinny zapisywać zdarzenia do logu systemowego Domyslny kontekst dzialania dla serwisu to local_system (może być skonfigurowany jako kontekst odpowiadającu dowolnemu użytkownikowi – po podaniu hasła)

3 Panel SCM

4 Konstrukcja serwisu Przestrzeń nazw: System.ServiceProcess Watek roboczy + uruchamiany w OnStart() public partial class Service1 : ServiceBase { public Service1() {InitializeComponent(); } protected override void OnStart(string[] args) { // TODO: Add code here to start your service. } protected override void OnStop() { // TODO: Add code here to perform any tear-down} } Inne: CanStop, CanPauseAndContinue, OnPause, OnContinue

5 Konstrukcja serwisu static class Program { static void Main() { ServiceBase[] ServicesToRun; // possible more than one service object. For example, // ServicesToRun = new ServiceBase[] {new Service1(), // new MySecondUserService()}; // ServicesToRun = new ServiceBase[] { new Service1() }; ServiceBase.Run(ServicesToRun); } zarządzanie działającym serwisem (funkcjonalność analogiczna do oferowanej przez SCM): ServiceController

6 Konstrukcja serwisu !!!!Wskazane aby dla potrzeb debugowania: serwis mógł się uruchamiać jako zwykły proces – (np. przy odpowiednim parametrze przekazanym do Main – ta bezpośrednio uruchamia funkcję odpowiadającą wątkowi roboczemu) lub wydzielić logikę serwisu w postaci oddzielnej biblioteki wykorzystywanej przez serwis oraz konwencjonalną aplikacje testową

7 (De)Instalacja serwisu plik.reg programowy zapis do rejestru wykonywana przez oddzielną aplikację lub inicjowana przez Main (w pliku wykonywalnym serwisu) po podaniu odpowiedniego paramertu wykorzystanie klasy ServiceProcessInstaller/ ServiceInstaller + InstallUtil [RunInstallerAttribute(true)] public class MyProjectInstaller: Installer{ private ServiceInstaller installer; //private ServiceProcessInstaller installer; public MyProjectInstaller(){ installer = new ServiceInstaller(); //installer = new ServiceProcessInstaller (); installer.Account =ServiceAccount.LocalSystem; installer.StartType = ServiceStartMode.Manual; installer.ServiceName = "Hello-World Service 1"; Installers.Add(installer); }

8 Zmiany w Windows Vista/7 Failure Detection and Recovery – w przypadku problemu ze startem SCM moze restartować serwis lub podjąc inna akcję ChangeServiceConfig2+ SERVICE_CONFIG_DELAYED_AUTO_START_INFO Delayed autostart – autostart jest wykonywany z opóznieniem ChangeServiceConfig2+ SERVICE_CONFIG_DELAYED_AUTO_START_INFO Preshutdown Notifications – uprzedzenie że zamykanie serwisu może trwać dłużej niż 30s ChangeServiceConfig2+ SERVICE_CONTROL_PRESHUTDOWN Service Isolation : ChangeServiceConfig2+ SERVICE_CONFIG_SERVICE_SID_INFO Sesja 0 jest teraz wyłącznie używana przez serwisy (dawniej do niej trafial pierwszy logujący się użytkownik)– serwis nie moze wysłac messedza systemowego do aplikaci ani vversa. Nie mozna wyswietlić dialogu inaczej niż WTSSendMessage. Serwis może izolować do swojego (via SID) użytku obiekty takie jak pliki klucze rejestru.

9 Monitorowanie aplikacji Diagnostyka

10 EventLog – dziennik zdarzeń

11 EventLog – realizacja Jednolity sposób raportowania - System rejestruje zdarzenia w logu 3 predefiniwane logi System/Security/Application – możliwość twornia własnych logów systemowych Różne klasy zdarzeń (Error/Warning/Information) Możliwość filtrowania po aplikacji/sortowanie itd. Konfigurowalne zachowanie np. maks. rozmiar rozmiar/okres po którym następuje nadpisywanie zdarzeń możliwość eksportu/importu dziennika (np. z innej maszyny) (np można określić jakie zdarzenia i dla jakich obiektów są notowane w dzienniku security) Możliwość zasubskrybowania przez aplikację zdarzeń wpisywanych do określonego logu przez inne aplikacje

12 EventLog – Dziennik zdarzeń Przestrzeń nazw System.Diagnostics Klasa EventLog myLog tworzenie prywatnego logu: EventLog.CreateEventSource zapis do logu: myLog.WriteEntry programowe przeglądanie myLog.Entries subsrybcja na zdarzenia zapisywane w logu: myLog.EntryWritten += new EntryWrittenEventHandler(MyOnEntryWritten); myLog.EnableRaisingEvents = true;

13 Monitorowanie aplikacji: Konfigurowalność Poziom szczegółowości (konfigurowalny bez rekompilacji) Różny sposób prezentacji dla róznych typów zdarzeń np. Błedy zapisujemy do dziennika a wszystko tj.iInformacje, ostrzeżenia i błędy do logu plikowego Możliwość określenia lokalizacji/rozmiary plików logu itd. Wymagany mały narzut w przypadku normalnej pracy Rozwiązania gotowe: Log4net Logging & Instrumentation Application Block

14 Debugowanie: system.diagnostics.debugger IsAttached Break IsLogging Log system.diagnostics.debug Write, WriteIf, WriteLine, WriteLineIf Własny listener System.Diagnostics.Trace.Listeners.Add(myListener);

15 Instrumentacja: Udostępnienie na poziomie performace monitora/ WMI/MOM charakterystyk obiektów (aplikacji) oraz zdarzeń. Zastosowania: Monitorowanie dostępności Monitorowanie wielkości charakteryzujących działanie aplikacji Monitorowanie zdarzeń i komunikatów aplikacji Dynamiczna konfiguracja i kontrola System.Management.Instrumentation

16 Konfiguracja

17 Konfiguracja aplikacji Pliki konfiguracyjne: ini (przestarzale) własne pliki xml (serializacja klas) System.Configuration

18 ConfigurationManager od.NET 2.0 wykorzystuje SampleApp.exe.config ConfigurationManager.AppSettings[nazwa] inne sekcje: SectionInformation PropertyInformation ElementInformation ContextInformation ConfigurationSectionGroup własne sekcje: GetSection

19

20 Rejestr - Narzędzia RegEdit RegEdit32

21 Struktura Główne gałęzie HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USERS HKEY_CURRENT_CONFIG Typy wartości: BINARY, DWORD, DWORD_LITTLE_ENDIAN, DWORD_BIG_ENDIAN, EXPAND_SZ, LINK, MULTI_SZ, NONE, RESOURCE_LIST, SZ

22 API RegOpenKeyEx RegEnumKeyEx, RegEnumValueEx RegQueryInfoKey, RegQueryValueKey RegSetValueKey RegCreateKeyEx, RegDeleteKeyEx RegReplaceKey – mod. przy restarcie systemu RegConnectKey – zdalny rejestr SetKeySecurity RegLoadKey, RegSaveKey

23 API w.NET Namespace Microsoft.Win32 Klasa Registry Pola (typu RegistryKey ): ClassesRoot - HKEY_CLASSES_ROOT. CurrentConfig - HKEY_CURRENT_CONFIG. CurrentUser - HKEY_CURRENT_USER DynData - HKEY_DYN_DATA. LocalMachine - HKEY_LOCAL_MACHINE. PerformanceData -HKEY_PERFORMANCE_DATA. Users - HKEY_USERS.

24 API w.NET Namespace Microsoft.Win32 Klasa RegistryKey Pola: Name, SubKeyCount, ValueCount Metody: OpenSubKey, Close, CreateSubKey, DeleteSubKey, DeleteValue, DeleteSubKeyTree, GetSubKeyNames, GetValue, SetValue, GetValueNames OpenRemoteBaseKey


Pobierz ppt "Programowanie Aplikacji Lokalnych.NET Usługi Monitorowanie aplikacji Konfiguracja."

Podobne prezentacje


Reklamy Google