Powody do używania CAS Assembly Declarations Głównie z trzech powodów używamy CAS Assembly Declarations: 1. Aby zapewnić, że runtime nigdy nie uruchomi aplikacji bez uprawnień do pożądanych zasobów. 2. Do stworzenia tzw. “piaskownicy” dla naszej aplikacji po to, aby atakujący nie mógł nią manipulować 3. Aby zweryfikować, że aplikacja może być uruchomiona z ograniczeniami dostępu CASKlasy dla uprawnień CAS CAS może ograniczyć dostęp do różnego rodzaju zasobów: plików, folderów, drukarek, dostępu ...
Nasze aplikacje często potrzebują informacji na temat np. uruchomionych procesów lub ilość podłączonych urządzeń magazynujących itp. Ponad to często może okazać się przydatne zareagowanie na uruchomienie jakiegoś procesu. Do realizacji tego typu zadań możemy wykorzystać w .NET Framework klasy Process czy też Windows Management Instrumentation (WMI). Analiza procesów Do wyświetlenia wszystkich aktualnie uruchomionych procesów możemy użyć statycznej metody Process.GetProcesses. Poniższy kod przedstawia wyk...
W tej lekcji zostanie opisane używanie standardowych oraz własnych liczników wydajności (performance counters).Monitorowanie liczników Windows zawiera bardzo dużo performance counterów, które umożliwiają monitorowanie systemu operacyjnego w czasie rzeczywistym. Możemy obejrzeć countery za pomocą wbudowanych mechanizmów Windowsa. W tym celu należy: 1. Klikamy start->Prawym przyciskiem myszy na Komputer-> Zarządzaj 2. W narzędziach systemowych rozwijamy zakładkę wydajność 3. Rozwijamy narzędzia m...
Systemowy podgląd zdarzeń (np. event log)jest repozytorium informacji o systemie operacyjnym, czynnościach aplikacji i błędach. Przykładowo znajdują się tam informacje o starcie systemu, czy jego zamknięciu. Aplikacje informują np. o zmianie ważnych ustawień. Korzystanie z systemowego podglądu zdarzeń jest alternatywą dla tworzenia własnych plików, dodatkowo wspierane jest przez .NET Framework, dzięki czemu nie musimy pisać dużo własnego kodu, aby z niego korzystać. Dziennik systemu WindowsRejestrowanie ...
Ogólnie o 70-562 Celem egzaminu numer 70-562 jest potwierdzenie kompetencji w zakresie programowania aplikacji internetowych za pomocą ASP.NET na platformie .NET 3.5. Jak czytamy na stronie poświęconej egzaminowi profil idealnego kandydata do zdania tego egzaminu to osoba pracująca w średnich-dużych zespołach z dwu-, trzyletnim doświadczeniem w dziedzinie tworzenia aplikacji webowych. Prócz tego egzamin obejmuje wszystkie zagadnienia dotykające tematyki webaplikacji, między innymi:Dostęp do danych za pom...
Zazwyczaj aby stworzyć instalator dodajemy projekt instalacji do projektu. No ale . NET Framework pozwala zaimplementować swój własny niestandardowy instalator. W ćwiczeniu pierwszym pod tym rozdziałem w training kit jest przedstawione stworzenie standardowego instalatora w drugim natomiast niestandardowego. Jako, że certyfikat 70-536 nie obejmuje tematyki tworzenia standardowych instalatorów omówmy sobie ten drugi typ.Tworzenie niestandardowego instalatora Jeżeli potrzebujemy większej kontroli nad proce...
W tej lekcji opiszemy sposoby korzystania z plików konfiguracyjnych oraz narzędzi do konfigurowania .NET FrameworkaKonfiguracja ustawień .NET Framework’a Możemy skonfigurować ustawienia .NET używając do tego pliku konfiguracyjnego .config. Przykładowo, .NET domyślnie uruchamia aplikację używając tej wersji .NET, w której została zbudowana. Aby umożliwić aplikacji uruchomienie się w innej wersji Frameworka wystarczy, że dodamy jedną sekcję do pliku konfiguracyjnego: 1: Do określania gdzie runtime ...
Przechowywanie ustawień aplikacji, czy ustawień połączenia z bazą danych (ang. connection string), to częsty wymóg. Zapisywanie ich “na sztywno” w kodzie aplikacji jest złą praktyką. Na szczęście .NET Framework udostępnia nam zestaw klas, które ułatwiają przechowywanie tych ustawień w specjalnych plikach XML. Mamy dwa główne typy takich plików:Globalny plik Machine.config, który jest wspólny dla wszystkich aplikacji korzystających z .NET Framework, Plik
Dzisiaj króciutki rozdział o usługach windows. Windows Service jest procesem uruchomionym w tle bez interfejsu i we własnej sesji użytkownika. Usługa może być uruchomiona automatycznie, podczas startu komputera, nawet bez zalogowania użytkownika. Sam windows ma kilkadziesiąt usług np. Workstation, World Wide Web Publishing. Usługi windows funkcjonują inaczej niż inne typu projektów.Skompilowany plik wykonywalny usług musi być zainstalowany przed instalacją projektu aby mógł on funkcjonować w sensowny sp...
Jak używać domeny aplikacji do uruchomienia Assemblies z ograniczonymi uprawnieniami Ograniczenie uprawnień domeny aplikacji może znacznie ograniczyć ryzyko, że assemblies, której używamy nie wykona żadnych złośliwych działań. Training kit przytacza taki przykład: Kupujemy assembly od kogoś i używamy jej do komunikacji z bazą danych. Jakiś gość znajduję lukę w kupionej assembly i używa do skonfigurowania “spyware’owej” aplikacji, która uruchamia się automatycznie przy starcie. W momencie gdy uży...
Application domain jest mechanizmem podobnym do procesu w systemie operacyjnym. Wykorzystywana jest do rozdzielenia uruchomionych aplikacji jedna od drugiej, tak, aby nie wpływały na siebie wzajemnie. Zastosowanie tej techniki pozwala wywoływać zewnętrzne obiekty assemblies zapewniając wydajność i warstwę bezpieczeństwa. W każdej chwili można zamknąć domenę aplikacji i zwolnić zajmowane zasoby. Dodatkowo można ograniczyć przywileje tak uruchomionej aplikacji, minimalizując ryzyko tego, że wykrycie podatn...
Dzisiaj chciałbym opowiedzieć o zarządzaniu wątkami. Zaimplementowanie wielu wątków które działają w tle nie jest rzeczą trudną. Lecz rzeczywista aplikacja musi mięć możliwość pauzowania, przerwania, wznawiania wątku czy też korzystania z wyników po zakończeniu jego przetwarzania. Tutaj możemy natrafić na konflikt zasobów a uniknięcie ich może nieraz okazać się skomplikowaną sztuką. Przejdę lepiej już do konkretów bo w dzisiejszym artykule jest dużo kodu do analizy a i teorii nie mało.Uruchamianie i zatr...
Zaczynamy rozdział nr 7 w naszym Training Kicie, który będzie dotyczył wątków. Od tej pory przejdziemy z tematów łatwiejszych do nieco trudniejszych:) Dziś wpis bardzo krótki, wprowadzający tylko do wątków. Po co nam wątki? Dzięki wątkom możemy np. uruchomić jakiś kod w tle, nie blokując w międzyczasie innych czynności naszego programu. Jednak używanie wielowątkowości jest dosyć skomplikowane i w pewnych określonych sytuacjach zamiast zwiększać wydajność, zmniejsza ją. No ale oczywiście więcej mamy plusó...
Często w pracy z grafiką pojawia się potrzeba dodania tekstu. Może to być np. opis, czy nota autorska. Jeżeli chcemy dodać sformatowany tekst do obrazka należy wykonać kilka kroków.Utworzenie obiektu Graphics W tym celu w aplikacji Windows Forms wywołujemy metodę this.CreateGraphics(). Możemy też utworzyć wspomniany obiekt z bitmapy za pomocą metody Graphics.FromImage(bitmap). 1: Graphics g = this.CreateGraphics(); Utworzyć obiekt Font.Klasa Font oferuje 13 różnych konstruktorów wywołania. Najprostszą ...
Dzisiaj wyjątkowo krótki wpis. Powiemy sobie o tym jak wyświetlić, stworzyć i zapisać rysunek. Żeby nie przedłużać wstępu od razu lecimy z tematem.The Image and Bitmap Classes System.Drawing.Image jest klasą abstrakcyjną która umożliwia nam tworzenie, ładowanie, modyfikacje oraz zapis obrazka do formatu .bmp, .jpg oraz .tif. Klasy tej można użyć do stworzenia rysunku, wykresu, zmiany rozmiaru obrazka czy też dodania np. znaku wodnego itd. Klasa Image jest abstrakcyjna dlatego do stworzenia jej instancji ...
Wraz z dzisiejszym artykułem, w naszym training kicie rozpoczyna się rozdział nr 6, który skupia się na grafice. Na dobry początek dostajemy 3-stronnicową tabelkę opisującą najczęściej używane klasy, które pomagają nam w .NET’owym rysowaniu. Nie będę ich opisywał, ale przynajmniej wymienię. Klasy, które zawarte są w przestrzeni System.Drawing to m.in: Bitmap. Brush, Brushes, ColorConverter, ColorTranslator, Font, FontConverter, FontFamily, Graphics, Icon, IconConverter, Image, ImageAnimator, Imag...
Niestandardowa serializacja pozwala na zwiększenie kontroli nad tym procesem. Dzięki niej możemy także osiągnąć kompatybilność między różnymi wersjami przekształcanych wcześniej obiektów. Mamy dwie metody przeprowadzenia takiej operacji: implementacja interfejsu ISerializable, oraz odpowiadanie na występujące zdarzenia.Implementacja ISerializable Wykorzystując interfejs oraz dodając atrybut Serializable możemy nadpisać domyślny mechanizm frameworka. Wymusza to na nas jednak kilka czynności:Implementacja ...
Pojęcie serializacji oraz jej zastosowanie mam nadzieje, że jest Wam znane chociażby z poprzedniego artykułu Daniela. Dzisiaj postaram się przedstawić serializacje za pomocą formatera XML. .NET Framework zawiera kilka bibliotek do odczytu i zapisu plików XML. My zajmiemy się tą z przestrzeni nazw System.Xml.Serialization. Za pomocą serializacji XML możemy zapisać niemal każdy obiekt do pliku tekstowego a następnie odczytać go w kilku linijkach kodu. Serializacji XML można użyć do przesyłania stanów obie...
Witam w kolejnej lekcji z cyklu 70-536. Dzisiaj powiemy sobie troszkę o serializacji.Co to jest serializacja? Serializacja, która mieści się w przestrzeni System.Runtime.Serialization, jest to proces przekształcania obiektu do liniowej sekwencji bajtów, które mogą być przechowywane lub przekazywane.Odwrotnym procesem do serializacji jest deserializacja.Jak serializować obiekt Poniższy kod prezentuje jak serializować obiekty. Aby kod zadziałał musimy dołączyć przestrzenie nazw System.IO oraz System.Runtim...
Kolekcje generyczne są bezpieczną (ang. type-safe), szybką i wydajną (ang. performance) wersją ich nie-generycznych odpowiedników. Przykładowo List, Dictionary, Queue, Stack, SortedList i SortedDictionary są odpowiednikami zwykłych kolekcji. Różnica polega na tym, że korzystając z typów generycznych podajemy parameter, który jest zamieniany na nazwę typu podczas kompilacji. W ten sposób można użyć każdego typu, ale tylko wcześniej określonego. W innym wypadku otrzymamy błędy już przy kompilacji. Namiastk...