1 / 24

Programowanie Aplikacji Lokalnych .NET

Programowanie Aplikacji Lokalnych .NET. Usługi Monitorowanie aplikacji Konfiguracja. Serwis vs proces. S. moga być uruchamiane na starcie ( automatycznie ) lub na życzenie procesów / recznie przez użytkownika

kirkan
Télécharger la présentation

Programowanie Aplikacji Lokalnych .NET

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Serwisvsproces • S. mogabyćuruchamianenastarcie (automatycznie) lubnażyczenieprocesów/recznieprzezużytkownika • S. jest uruchamianyprzezSCMmożezostaćuruchomionybezzalogowaniaużytkownika • S. sąnadzorowaneprzez system imogąbyćautomatyczniewznawiane w razieupadku • S. niemajądostepu do podsystemuUI (ale możnanapisaćdodatkowyproces, którysie z nimibędziekomunikować) • S. powinnyzapisywaćzdarzenia do logusystemowego • Domyslnykontekstdzialaniadlaserwisu to local_system (możebyćskonfigurowanyjakokontekstodpowiadającudowolnemuużytkownikowi – popodaniuhasł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ądzaniedziałającymserwisem (funkcjonalnośćanalogiczna do oferowanejprzezSCM): ServiceController

  6. Konstrukcja serwisu !!!!Wskazaneabydlapotrzebdebugowania: • serwismógłsięuruchamiaćjakozwykły proces – (np. przyodpowiednimparametrzeprzekazanym do Main – ta bezpośredniouruchamiafunkcjęodpowiadającą wątkowiroboczemu) lub • wydzielić logikę serwisu w postaci oddzielnej biblioteki wykorzystywanej przez serwis oraz konwencjonalną aplikacje testową

  7. (De)Instalacja serwisu • plik .reg • programowyzapis do rejestru • wykonywanaprzezoddzielnąaplikacjęlubinicjowanaprzez Main (w plikuwykonywalnymserwisu) popodaniuodpowiedniegoparamertu • wykorzystanieklasyServiceProcessInstaller/ ServiceInstaller+ InstallUtil [RunInstallerAttribute(true)] public class MyProjectInstaller: Installer{ private ServiceInstallerinstaller; //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ż 30sChangeServiceConfig2+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. Diagnostyka Monitorowanie aplikacji

  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– Dziennikzdarzeń • PrzestrzeńnazwSystem.Diagnostics • KlasaEventLogmyLog • tworzenieprywatnegologu: EventLog.CreateEventSource • zapis do logu: myLog.WriteEntry • programoweprzeglądaniemyLog.Entries • subsrybcjanazdarzeniazapisywane w logu: myLog.EntryWritten += newEntryWrittenEventHandler(MyOnEntryWritten);myLog.EnableRaisingEvents = true;

  13. Monitorowanie aplikacji: • Konfigurowalność • Poziomszczegółowości (konfigurowalnybezrekompilacji) • Różnysposóbprezentacjidlaróznychtypówzdarzeńnp. Błedyzapisujemy do dziennika a wszystkotj.iInformacje, ostrzeżeniaibłędy do loguplikowego • Możliwośćokreślenialokalizacji/rozmiaryplikówloguitd. • Wymagany małynarzut w przypadku normalnej pracy Rozwiązaniagotowe: • 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 • Plikikonfiguracyjne: • ini (przestarzale) • własne pliki xml (serializacja klas) • System.Configuration

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

  19. <configuration> <startup> <supportedRuntime version="v1.1.4322"/> <supportedRuntime version="v1.0.3705"/> <requiredRuntime version="v1.0.3705" safemode="true"/> </startup> <runtime> <developmentModedeveloperInstallation="true"/> <assemblyBindingxmlns="urn:schemas-microsoft-com:asm.v1"> <probing privatePath="bin;bin2\subbin;bin3"/> <dependentAssembly> <assemblyIdentity name="myAssembly" publicKeyToken="32ab4ba45e0a69a1" culture="neutral" /> <bindingRedirectoldVersion="1.0.0.0" newVersion="2.0.0.0"/> </dependentAssembly> </assemblyBinding> </runtime> </configuration>

  20. Rejestr - Narzędzia • RegEdit • RegEdit32

  21. Struktura • Głównegałęzie • HKEY_CLASSES_ROOT • HKEY_CURRENT_USER • HKEY_LOCAL_MACHINE • HKEY_USERS • HKEY_CURRENT_CONFIG • Typywartoś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. przyrestarciesystemu • RegConnectKey – zdalnyrejestr • SetKeySecurity • RegLoadKey, RegSaveKey

  23. API w .NET Namespace Microsoft.Win32 KlasaRegistry Pola (typuRegistryKey): • 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 KlasaRegistryKey Pola: Name, SubKeyCount, ValueCount Metody: • OpenSubKey, Close, • CreateSubKey, DeleteSubKey, DeleteValue, DeleteSubKeyTree, • GetSubKeyNames, GetValue, SetValue, GetValueNames • OpenRemoteBaseKey

More Related