PDF

Transkrypt

PDF
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
Provider
Źródło
danych
DataAdapter
DataSet
Przykład
DataSet
Zbiór danych
DataSet
Kolekcja tablic
Tables
Kolekcja kolumn
Columns
Kolumna
DataColumn
Kolekcja wierszy
Rows
Wiersz
DataRow
Tablica
DataTable
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ść
Technologia
Formularze i kontrolki
Windows Forms
Grafika 2D
GDI+
Grafika 3D
DirectX
Strumienie wideo
Windows Media Player
.Net 3.0
Funkcjonalność
Technologia
Formularze i kontrolki
WPF
Grafika 2D
WPF
Grafika 3D
WPF
Strumienie wideo
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
•
Windows - kolekcja wszystkich okien należących do
aplikacji
StartupUri - strona bądź okno, które ma być otwarte
przy starcie 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
SILVERLIGHT
Biblioteka bazowa klas
Dane:
LINQ
Kolekcje
Generics
Sieć:
Web Service
Http Request
WPF:
Control
Media
UI
CLR
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