Usługa systemowa
Usługa systemowa Specyficzna aplikacja działająca na komputerze cały czas, nawet bez zalogowania Nie ma dostępu do interfejsu użytkownika Wymaga zainstalowania i skonfigurowania za pomocą panelu Administracyjnego
Tworzymy projekt
Log Ponieważ usługa ma ograniczony interfejs użytkownika, powinna posługiwać się LOG iem Dodajemy do projektu obiekt EventLog
Pusty kod
Inicjalizacja Ustawiamy parametry EventLog w konstruktorze
Metoda OnStart
Metoda OnStop
Inne metody On OnPause - gdy usługa zostanie wstrzymana OnContinue - gdy usługa zostanie wznowiona OnShutdown - gdy system jest zamykany OnCustomCommand - polecenie z menedżera usług OnPowerEvent - zdarzenie zasilania OnSessionChange - zmiana sesji usług zdalnych
Zdarzenie OnTime Tu będziemy realizować logikę usługi Uwaga!!! - to nie może być zwykły Timer z WinForms - nie działa!
Testy Usługę najlepiej testować za pomocą testów jednostkowych Wybieramy polecenie New Test z menu Test
Testy W tej klasie możemy dopisywać metody testowe i je uruchamiać
Instalacja Serwis musi zostać zainstalowany na maszynie docelowej. Można skorzystać z polecenia InstallUtil lub stworzyć Setup
Instalacja Serwis należy dalej skonfigurować.
ADO.NET
Historia Biblioteki specjalizowane. ODBC (Open Database Connectivity) języki niskiego poziomu C++. DAO (Data Access Objects) Visual Basic 3. RDO (Remote Data Objects) Visual Basic 4 Enterprise opakowane ODBC. OLE DB podobne do ODBC z interfejsem COM. ADO (ActiveX Data Objects) OLE DB dostosowane dla języków wysokiego poziomu.
ADO.NET to zestaw klas umożliwiających odczyt i obróbkę danych z różnych źródeł zgodny z platformą.net i posiadający wszystkie jej cechy: wielojęzyczność, zarządzany kod, garbage-collection, kompilator JIT, model w pełni obiektowy.
ADO.NET ActiveX Data Objects.NET Następca ADO (ActiveX Data Objects) Celem ADO.NET jest abstrakcja różnych źródeł danych ADO.NET jest oparte na XML u. ADO.NET jest oparte na trybie bezpołączenia (connection-less)
Przestrzenie nazw System.Data podstawowe klasy System.Data.Common klasy współdzielone przez różne modele dostępu do danych System.Data.OleDb klasy dostępu do różnych baz danych System.Data.SqlClient klasy specjalizowane dla SQL Server System.Data.ODBC klasy specjalizowany pod bazy danych łączone przez ODBC System.Data.SqlTypes klasy z typami danych optymalizowanymi dla SQL Server
Dostawcy danych Dane są dostarczane przez klasy będące dostawcami (providers) Dostępni są dostawcy dla: OLE DB, SQL Server, ODBC, MySQL, ORACLE,.
Dostawcy danych Dostawca danych DataProvider Połączenie Connection Źródło danych Polecenie Command Czytnik danych DataReader Adapter danych DataAdapter
Podstawowe klasy Connection klasa odpowiedzialna za połączenie z bazą danych Command wykorzystywane do wywoływania poleceń dla źródła danych DataReader zbiór danych typu read-only DataAdapter odpowiada za wczytanie danych i ich aktualizację W zależności od dostawcy danych klasy te mają inną implementację.
Connection Podobna do klasy w klasycznym ADO. Zawiera informacje o połączeniu z bazą danych w postaci łańcucha połączenia (connection string). Określa źródło danych, nazwę użytkownika i hasło oraz inne parametry połączenia. Zawiera metody obsługujące połączenie i transakcje.
Command Klasa polecenia jest też podobna do poprzedniczki w ADO. Przechowuje informacje dotyczące poleceń, które mogą być wykonywane, np. w postaci poleceń SQL. Polecenia SQL mogą być parametryzowane. Można się też odwoływać do procedur zapisanych w bazie danych (stored procedures).
DataReader Służy tylko do odczytu danych i to tylko sekwencyjnie nie ma możliwości nawigowania w zbiorze danych. Zaletą jest szybkość działania. Wymaga aktywnego połączenia.
DataAdapter Stanowi łącznik pomiędzy odłączonym źródłem danych i zbiorem danych. Między innymi składają się na niego polecenia umożliwiające pobranie danych, uaktualnienie danych, dodanie danych i ich usunięcie. Jeżeli adapter nie zawiera któregoś z tych poleceń, próba np. aktualizacji danych spowoduje błąd (zostanie zgłoszony wyjątek).
DataAdapter Adapter SELECT Polecenie SQL INSERT Polecenie SQL UPDATE Polecenie SQL DELETE Polecenie SQL
DataSet zbiór danych, jest zawsze rozłączony (disconnected), nie jest zależny od źródła danych (baza danych, dokument XML, plik tekstowy), wymaga pośrednictwa adaptera, może zawierać wiele tabel (relacji), zawiera informacje o powiązaniach.
DataSet Źródło danych Provider DataAdapter DataSet
Przykład
DataSet Zbiór danych DataSet Kolekcja tablic Tables Tablica DataTable Kolekcja kolumn Columns Kolekcja wierszy Rows Kolumna DataColumn Wiersz DataRow
Przykład Do takiego zastosowania należałoby raczej użyć obiektu DataReader.
Uaktualnienie danych
Obsługa XML Dane ze zbioru danych można zapisać do pliku XML Zbiór danych można wczytać z dobrze sformułowanego pliku XML
Zbiory danych z typem Można definiować zbiory danych (DataSet) dostosowane do konkretnych relacji. Wykorzystywany jest mechanizm XML Schema. Odpowiednia klasa jest generowana automatycznie. Ułatwia pisanie programu w inteligentnym środowisku.
Zbiory danych z typem Zbiór danych jest opisywany za pomocą XML Schema Definition (XSD) Automatyczne generowanie XSD
XSD
XSD Po wydaniu polecenia: xsd Employees.xsd /d otrzymamy plik CS zawierający klasę reprezentującą zbiór danych z typem.
Zbiory danych z typem
Typowany DataAdapter Może mieć wiele metod typu Fill lub Get Metody mogą być parametryzowane
DataReader DataReader służy do odczytu kolejnych rekordów, tworzony jest przez obiekt klasy Command, automatycznie przechodzi do kolejnego wiersza, zaczyna w stanie BOF.
DataReader
Zdarzenia Klasy ADO.NET generują zdarzenia. W kodzie można dodać metody zajmujące się obsługą tych zdarzeń.
DataView Reprezentuje różne widoki na dane. Można ograniczyć dostęp do danych.
Wywoływanie poleceń SQL Można za pomocą klasy Command wywołać dowolne polecenie SQL, nie będące kwerendą.
Windows Forms i ADO.NET Większość kontrolek w Windows Forms może zostać skojarzona ze zbiorem danych (DataSet). Bardzo interesująca jest kontrolka DataGrid umożliwiająca edycję danych w postaci arkusza; można ją wykorzystać w oderwaniu od fizycznej bazy danych.
DataGrid
DataGrid
DataGrid
Windows Presentation Foundation
Dotychczasowe technologie w.net 2.0 Funkcjonalność Formularze i kontrolki Grafika 2D Grafika 3D Strumienie wideo Technologia Windows Forms GDI+ DirectX Windows Media Player
.Net 3.0 Funkcjonalność Formularze i kontrolki Grafika 2D Grafika 3D Strumienie wideo Technologia WPF WPF WPF WPF
Windows Presentation Foundation Jest to nowy zbiór funkcji API do tworzenia aplikacji desktopowych integrujący wiele technologii w jednym modelu obiektowym i umożliwiający separację wartswy prezentacji i kodu.
Podstawowe usługi zbiór obiektów rozmieszczających elementy na obszarze (np. kontrolki w formularzu), rozszerzony silnik powiązań z danymi, wbudowany mechanizm stylów umożliwiający tworzenie skórek w aplikacjach
Podstawowe usługi wykorzystanie grafiki wektorowej umożliwiające skalowanie interfejsu aplikacji wspomaganie dla grafiki 2D, 3D, animacji, odtwarzania wideo i dźwięku, bogate API typograficzne, np. dla dokumentów XPS, możliwość współpracy ze starszymi technologiami
Rodzaje aplikacji WPF zwykła aplikacja desktopowa, aplikacja oparta na nawigacji aplikacja desktopowa zachowująca się podobnie jak przeglądarka WWW aplikacja typu XBAP uruchamiana w środowisku przeglądarki
Silverlight technologia pokrewna do WPF umożliwia tworzenie wieloplatformowych aplikacji (Windows, Mac OS X,...) można korzystać z podzbioru klas.net i części technologii WPF
Najważniejsze pakiety PresentationCore Odpowiedzialny za klasy tworzące interfejs użytkownika PresentationFoundation Kontrolki, dodatkowe typy odpowiedzialne za animację, media, dostęp do danych, dostęp do XAML WindowsBase API niższej warstwy, wątki, bezpieczeństwo, konwersja typów, prymitywy
Przestrzenie nazw System.Windows System.Windows.Controls System.Windows.Markup System.Windows.Media System.Windows.Navigation System.Windows.Shapes
Klasa Application najistotniejsze właściwości: Current - dostęp do obiektu klasy z dowolnego miejsca kodu MainWindow - umożliwia pobranie bądź ustawienie głównego okna aplikacji Properties - rodzaj zmiennych globalnych aplikacji StartupUri - strona bądź okno, które ma być otwarte przy starcie aplikacji Windows - kolekcja wszystkich okien należących do aplikacji
Klasa Windows reprezentuje dowolne okno należące do aplikacji (także dialogi)
Program w WPF Projekt w VisualStudio Przestrzenie nazw
Program w WPF Klasa aplikacji
Program w WPF Klasa głównego okna
Program w WPF Działający program
XAML Extensible Application Markup Language Język opisu wyglądu aplikacji oparty na XML [zæ:mɛl] ściśle powiązany z WPF, choć można się bez niego obyć XAML w momencie kompilacji jest zapisywany w postaci binarnej BAML aplikację można stworzyć tylko w XAML
Aplikacja w XAML Opis aplikacji
Aplikacja w XAML Opis okna
Aplikacja w XAML Projekt okna w VisualStudio
Rozdzielenie kodu i projektu interfejsu WPF sugeruje oddzielenie wartstwy projektu interfejsu od kodu XAML opisuje interfejs kod w C# (lub inny) definiuje logikę aplikacji
Separacja kodu i interfejsu interfejs projektuje grafik np. Microsoft Expression Blend logikę biznesową tworzy programista interfejs jest niezależny od rozdzielczości ekranu (resolution independent)
Aplikacja CS i XAML Opis aplikacji
Aplikacja CS i XAML Kod aplikacji
Aplikacja CS i XAML Opis okna
Aplikacja CS i XAML Kod okna
Visual Studio 2008 Typowy projekt w VS2008
Proces kompilacji
Kontrolki WPF
Kontrolki WPF Podobne do kontrolek Windows Forms Właściwości definiowane w XAML Ważną rolę pełnią kontrolki odpowiedzialne za rozmieszczanie innych (layout managers)
Obsługa komunikatów inny niż w Windows Forms komunikat jest iterowany przez wszystkie obiekty w poszukiwaniu odpowiedniej procedury obsługi (handler) różne strategie przesyłania komunikatów
Grafika 2D to WPF zapewnia właściwe odświeżanie grafiki na ekranie System.Windows.Shapes System.Windows.Media.Drawing System.Windows.Media.Visual możliwość tworzenia animacji
SILVERLIGHT
Co to jest Silverlight? Technologia tworzenia bogatych (rich) aplikacji webowych W założeniu wielosystemowa Konkurencja dla Adobe Flash Wywodzi się z Windows Presentation Foundation
Architektura Dane: LINQ Kolekcje Generics Biblioteka bazowa klas Sieć: Web Service Http Request CLR SILVERLIGHT WPF: Control Media UI DLR języki dynamiczne: Python Ruby VBx Jscript Silnik kodu zarządzanego UI Core grafika animacje obrazy tekst Wejście Kontrolki Media DRM Silnik obsługi JavaScript Presentation Core XAML Przeglądarka warstwa sieciowa DOM Skrypty
Funkcjonalność bibliotek kolekcje mechanizm refleksji wyrażenia regularne dostęp do danych LINQ obsługa XML, RSS, JSON
Zdalne wywołania Web Services REST Windows Communication Foundation Services ADO.Net Services
Tworzenie projektu
Tworzenie projektu
Pusty projekt
Pusta aplikacja Opis strony w XAML
Pusta aplikacja Kod aplikacji w C#
Pusta aplikacja
Pusta aplikacja Kod strony w C#
Kontrolki XAML Kontrolki wbudowane
Kontrolki XAML Po zainstalowaniu ToolKit u
Przykład Opis XAML Kod strony Efekt końcowy
Bezpieczeństwo Aplikacje Silverlight działają w obszarze ograniczonego zaufania (sandbox): można otwierać pliki lokalne (tylko przez dialog) od wersji 3 może zapisywać w systemie plików można przechowywać dane w Isolated Storage socket y mogą tylko inicjować połączenia w wersji 4 aplikacje OOB mogą być uznane za zaufane
Wczytanie z pliku
Wczytanie z pliku
Wczytanie z pliku
Isolatad Storage katalog w profilu użytkownika współdzielony przez wszystkie aplikacje identyfikowane poprzez URL aplikacji domyślny limit 1MB na URL niezależne od przeglądarki
Zapis do pliku
Odczyt z pliku
Zwiększenie pojemności
Zapis do pliku w FS
Zapis do pliku w FS
Aplikacje poza przeglądarką Aplikacje można zapisać lokalnie i korzystać jak z aplikacji desktopowej Należy odpowiednio ustawić opcje
Aplikacje poza przeglądarką
Animacja Animacje można tworzyć modyfikując własności elementów, np. przezroczystość Definicja animacji w XAML
Animacja Uruchomienie animacji
Animacja koloru
Animacja koloru
Sterowanie animacją
Sterowanie animacją
Sterowanie animacją
Multimedia Element Media
Obrazy Element Image Nałożenie obrazu na tekst
Obrazy Opcje skalowania Stosowanie maski
Obrazy Maska gradientowa
Powiązanie z danymi Klasa z danymi
Powiązanie z danymi XAML Konstruktor strony
Powiązanie z danymi Efekt
Powiązanie z kolekcją XAML Kod strony
Powiązanie z kolekcją Efekt
Drukowanie od wersji 4.0 klasa PrintDocument można drukować fragment XAML a drukowanie na zasadzie bitmapy