Osnova přednášky n
Programové prostředky řízení
n
C# – .NET technologie
n n n
Pavel Balda Západočeská univerzita v Plzni, FAV, KKY
Windows Forms ASP.NET XML Webové služby ADO.NET
2
Windows Forms n
n
n
n
n
Jmenný prostor System.Windows.Forms
Windows Forms (formuláře) – nová platforma pro vývoj aplikací založená na .NET Frameworku (společná pro všechny jazyku CLR) Vhodné pro vývoj lokálních aplikací nebo jako lokální uživatelské rozhraní k distribuovaným aplikacím Spojují jednoduchost tvorby formulářů z dřívějšího Visual Basicu a výkonnost z knihovny MFC v C++ Založeny na událostním programování. Obslužné metody událostí se registrují formou delegátů Umožňují svázat ovládací prvky formulářů s datovými zdroji 3
Třídy v System.Windows.Forms lze rozdělit do následujících kategorií n Control, UserControl a Form n
n
Ovládací prvky (Controls) umožňují vytvářet bohaté uživatelské prostředí n
n
Zadávání dat: TextBox, ComboBox, …. Zobrazování dat: Label, ListView …. Volání příkazů: Button, …
Komponenty (Components) nejsou odvozeny od třídy Control, ale poskytují též vizuální informaci n
n
Většina tříd v tomto jmenném prostoru je odvozena od třídy Control (ovládací prvek). Control implementuje společné chování všech ovládacích prvků, které lze vkládat do formulářů Form. Formuláře Form představují okna v aplikaci
Menu, MenuItem, ContextMenu, ToolTip, ErrorProvider, Help, HelpProvider, …
Obecná dialogová okna (Common Dialog Boxes) – dávají aplikaci konzistentní uživatelské rozhraní s jinými aplikacemi n
Soubory: OpenFileDialog, SaveFileDialog, fonty: FontDialog, tisk: PageSetupDialog, PrintPreviewDialog, PrintDialog zprávy: MessageBox 4
1
WinForms – Ovládací prvky
WinForms – Komponenty
Control
System.Object Mnoho dalších tříd…
System.MarhalByRefObject
ButtonBase
System.ComponentModel.Component ColumnHeader CommonDialog ColorDialog FileDialog FontDialog
DataGridTableStyle
ErrorProvider
StatusBarPanel
HelpProvider
Timer
ImageList Menu
PageSetupDialog
ContextMenu
PrintDialog
MainMenu
DataGridColumnStyle
NotifyIcon
MenuItem
ToolBarButton ToolTip
MonthCalendar
RadioButton
PictureBox
PrintPreviewDialog
DataGrid
PrintReviewControl
ThreadExceptionDialog
DateTimePicker
ProgressBar
PropertyGrid
GroupBox
ScrollBar
UpDownBase
Abstraktní třída
DataGridTextBoxColumn
Konkrétní třída
ListBox CheckedListBox
WinForms – Příklad vytvoření aplikace
n
n
Návrh rozložení ovládacích prvků, v tomto případě následujících tříd n System.Windows.Forms.Label n System.Windows.Forms.TextBox n System.Windows.Forms.Button n System.Windows.Forms.Timer Umístěním ovládacích prvků se generují jejich deklarace: private private private private private private private private
StatusBar TabControl TextBoxBase RichTextBox TextBox DataGridTextBox
DomainUpDown
ToolBar
NumericUpDown
TrackBar
UserControl Legenda:
TreeView
Abstraktní třída
Panel TabPage
Konkrétní třída
6
WinForms – Vlastnosti objektů
File/New/Project/Visual C# Projects/Windows Application
n
VScrollBar
Form
Splitter
Třída jiného jmenného prostoru
DataGridBoolColumn
5
n
HScrollBar
ListControl ComboBox
n
ContainerControl
CheckBox
LinkLabel Legenda:
ScrollableControl
MdiClient
Label
Control
ListView
Button
n
Pro každý vložený objekt se nastavují jeho vlastnosti (Properties) Z grafického návrhu se automaticky vygeneruje funkce InitializeComponent() volaná v konstruktoru n
System.Windows.Forms.Label SPLabel; System.Windows.Forms.Label PVLabel; System.Windows.Forms.Label MVLabel; System.Windows.Forms.TextBox SP; System.Windows.Forms.TextBox PV; System.Windows.Forms.TextBox MV; System.Windows.Forms.Button StartButton; System.Windows.Forms.Timer timer1;
n
7
private void InitializeComponent() { this.components = new System.ComponentModel.Container(); this.timer1 = new Timer(this.components); this.SPLabel = new Label(); this.PVLabel = new Label(); this.MVLabel = new Label(); this.SP = new TextBox(); this.PV = new TextBox(); this.MV = new TextBox(); this.StartButton = new Button(); this.SuspendLayout(); /* inicializace vlastností vytvořených objektů */ /* přidání všech ovlád. prvků do this.Controls */ }
Funkce zkácena a vypuštěna plně kvalifikovaná jména z System.Windows.Forms 8
2
WinForms – Události objektů n
n
Při manipulaci, zpracovávají ovládací prvky zprávy, na jejichž základě vyvolávají události definované jako delegáty ve svých třídách Pro zachycení a zpracování zprávy se musí udělat: n n n
n
n
n
Vytvořit metodu třídy zachycující danou událost Založit novou instanci delegáta inicializového touto metodou Zaregistrovat delegáta u veřejné události ovládacího prvku
Pro tlačítko StartButton je po dvojkliku na Click (obr. vpravo) vytvořena prázdná metoda n
n
WinForms – Formuláře
n
private void Start_Click(object sender, System.EventArgs e) { }
n
Do InitializeComponent() je přidáno n
Základním třídou pro vytváření aplikací Windows Forms je třída Form (formulář) Do něj lze umisťovat standardní ovládací prvky, např. menu, stavové řádky, nástrojové lišty a je kontejnerem pro ovládací prvky Podle typu aplikace může nabývat různých podob: n
this.StartButton.Location = new System.Drawing.Point(176, 136); this.StartButton.Name = "StartButton"; this.StartButton.Size = new System.Drawing.Size(96, 32); this.StartButton.TabIndex = 3; this.StartButton.Text = "Start"; this.StartButton.Click += new System.EventHandler(this.Start_Click);
n
n
Dialogové okno – nejjednodušší typ (viz předchozí příklad) SDI (Single Document Interface) aplikace – umožňuje v daný čas pracovat s jedním souborem (dokumentem). Příkladem je program Notepad MDI (Multiple Document Interface) aplikace – pracuje současně s několika dokumenty. Příkladem je Word, Excel nebo vývojové prostředí Visual Studia .NET Explorer type – aplikace podobná programu Windows Explorer; vlevo stromová struktura, vpravo detailní informace k vybrané položce
9
WinForms – GDI+ n
n n n
(1/2)
GDI+ (Graphics Device Interface) je výrazným rozšířením Win32 API funkcí GDI Jednotný přístup z celého .NET Frameworku Jmenné prostory System.Drawing a System.Drawing.Drawing2D 2-D rozšíření n
n n
n
n
n
n
10
Alfa-míchání (Alpha-blending) – nastavení průhlednosti objektu od úplné (255) až po nulovou (0). Dostupné pro všechny primitivy GDI+ Anti-aliasing – „vyhlazování“ zubatých křivek využíváním různých odstínů pera Gradientní a texturové výplně – přechod z jedné barvy do jiné, vyplnění opakující se texturou Kardinální spline křivky – hladké napojení spline křivek procházejících množinou bodů s různým „napětím“ křivky Měřítkovatelné regiony (scalable regions) – možnost aplikace libovolné grafické transformace (např. rotace, posun, zvětšení) na regiony známé z GDI Transformace – definované pomocí transformační matice (třída Matrix). Každému objektu lze nastavit metodou Transform vytvořený objekt typu Matrix. Transformace je aplikována při každém vykreslení objektu A další rozšíření … 11
WinForms – GDI+ n
Podpora práce s obrázky n
n
n
(2/2)
Nativní formáty – zabudovaná podpora nejpoužívanějších typů obrázků, např. .jpeg, .png, .gif, .bmp, .tiff, .exif a .icon Zpracování obrazu – provádění typických operací jako změna jasu, kontrastu, vyvážení barev, rozmazání, rotace, oříznutí apod.
Typografická podpora n
n n
ClearType fonty a Anti-aliasing – odstranění „kostrbatosti“ znaků patrné zejména na LCD monitorech Textury a fonty – texturami lze vyplňovat i plochy jednotlivých znaků Unicode – plná podpora standardu Unicode 3.0
12
3
WinForms – GDI+: Příklad n
ASP.NET - Motivace
Nejjednodušší příklad – vykreslení úsečky přes formulář n
n n
n
private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { System.Drawing.Pen myPen = new System.Drawing.Pen(System.Drawing.Color.Red); System.Drawing.Graphics formGraphics = this.CreateGraphics(); formGraphics.DrawLine(myPen, 0, 0, 200, 200); myPen.Dispose(); formGraphics.Dispose(); } Metoda Form1_Paint() je obslužná metoda události formuláře Paint() U grafických objektů je slušné je po skončení práce uvolnit zavoláním metody Dispose(). Jsou totiž náročné na systémové zdroje (resources).
Obecné schéma komunikace přes internet pomocí HTTP (původně) 1. 2. 3. 4. 5.
n
Klient má požadavek na server Klient vyšle požadavek na server (na zobrazení stránky s daným URL) Server tento požadavek přijme a zpracuje Server v odpovědi pošle požadovanou stránku Klient stránku přijme a zobrazí ve svém prohlížeči
Největší nevýhoda: Statické řešení. Postupně doplněno o: n n n
Skripty na straně klienta – Java Script, VB Script, … Skripty na straně serveru – CGI (Common Gateway Interface), PHP, … Dynamické generování stránek na straně serveru Request
1
2
HTTP Klient
Internet
Web Server
4
HTTP
5
Server
3
Response *.htm
13
14
ASP.NET – Začlenění do IIS n
n
Jmenný prostor System.Web
ASP.NET je technologie vytváření webových aplikací spolupracujících s webovým serverem firmy Microsoft - IIS Aplikace vytvořené v ASP.NET běží v řízeném kódu pod .NET Frameworkem a lze je vytvářet ve všech jazycích v CLR. n
n
n
Požadavek vyslaný klientem je zpracován v IIS a je filtrován pomocí rozšíření IIS – ASP.NET ISAPI (aspnet_isapi.dll). Pokud projde filtrem je zpracování předáno do .NET, kde je vytvořena instance třídy HttpApplication, která dále posílá požadavky jednotlivým modulům s rozhraním IHttpModule, které mohou požadavky modifikovat Dále HttpApplication vytváří objekty tříd s rozhraním IHttpHandler a posílá jim požadavek ve formě HttpContext. Třída Page je jedním z HTTP handlerů
n
Jmenný prostor System.Web obsahuje třídy a rozhraní pro komunikaci mezi prohlížečem a serverem n
n n
n
HttpRequest – obsahuje hodnoty vyslané klientem v požadavku na server (request) HttpResponse – jsou v ní uložena data HTTP výstupu pro klienta HttpServerUtility – poskytuje pomocné funkce pro zpracování požadavků na server Dále jsou obsaženy třídy pro n
Server
Request HTTP Klient
Internet HTTP Response
Microsoft Internet Information Server (IIS)
ASP.NET ISAPI
n n
ServerApp.DLL HTTPApplication
n n
*.htm
Manipulaci s „cookies“ Přenos souborů Výjimky HTTP protokolu Řízení výstupní cache Uchování stavu aplikace
DB 15
16
4
WebForms n n
Webové formuláře jsou programovatelné webové stránky Webové formuláře se skládají z n n n
n
WebForms – HTML ovládací prvky System.Object System.Web.UI.Control
Značek jazyka HTML Kódu zpracovávaného na straně serveru Serverových ovládacích prvků (Server Side Controls)
HtmlInputControl
Serverové ovládací prvky n
n n
n n
n
Mají vlastnost runat="server" n
Na straně serveru jsou reprezentovány instancemi tříd V okamžiku posílání formuláře klientovi na HTTP požadavek jsou do odpovědi převedeny na HTML značky Převod závisí na typu prohlížeče klienta !!! Snadná programová manipulace, nastavování vlastností, zpracování událostí podobné jako ve WinForms Pamatují si svůj stav mezi jednotlivými požadavky na stránku
n
Oddělení serverového kódu od obsahu stránky – třída Page
n
I HTML ovládací prvky s runat="server" jsou reprezentovány třídami
n
System.Web.UI.HtmlControls
HtmlControl
HtmlAnchor
HtmlInputCheckBox
HtmlButton
HtmlInputFile HtmlInputHidden
Serverový kód lze psát v jakémkoliv jazyku CLR, nejčastěji v C#
HtmlContainerControl
HtmlInputButton
HtmlImage
HtmlForm HtmlGenericControl
HtmlInputImage
HtmlSelect
HtmlInputRadioButton
HtmlTable
Legenda:
HtmlInputText
HtmlTableCell
Třída jiného jmenného prostoru
HtmlTableRow
Abstraktní třída
HtmlTextArea
Konkrétní třída
17
18
WebForms – ASP.NET ovládací prvky
Webové služby
System.Web.UI.WebControls
System.Object System.Web.UI.Control
n
Repeater n
WebControl Button
AdRotator
CheckBox
Calendar
DataGrid
ValidationSummary
ListControl
n
n
DataList
RadioButton HyperLink
BaseDataList
n
CheckBoxList
Image ImageButton
BaseValidator
n
DropDownList
Label
CompareValidator
ListBox
LinkButton
CustomValidator
RadioButtonList
Panel
RangeValidator
n n
Komponentový přístup pro Web přes standardní protokoly jako HTTP a SMTP Data jsou přenášena ve formátu XML (eXtensible Markup Language) nebo SOAP (Simple Object Access Protocol) Spojení mezi Webovou službou a jejím konzumentem (klientem) je volné a je založeno na asynchronním zpracování zpráv Webové služby samy poskytují popis svých funkcí (datové typy, návratové hodnoty, …) Klient nemusí znát popis rozhraní, ale může si ho zjistit Data jsou přenášena způsobem nezávislým na platformě, pomocí XML XML je základním stavebním kamenem na platformě .NET Webové služby se nekopírují a neinstalují na lokální počítač. Proto se nabízejí otázky: n
TableCell
n
Table
RegularExpressionValidator
TextBox
RequiredFieldValidator
TableHeaderCell TableRow
n
19
Existuje někde služba, kterou potřebuji? Kde? Jak se se službou komunikuje a jaké funkce nabízí? Jakým způsobem službu vyvolat a jak předávat a získávat data? 20
5
Webové služby - Zveřejnění
ADO.NET
Základní operace s Webovými službami: n Publikování služby. Po naprogramování je třeba dát službu ve známost na internetu. Existují dvě specifikace: n
n
n
Popis služby. Víme-li, kde se služba nachází, zajímá nás, jak se s ní komunikuje. n
n
Universal Description, Discovery and Integration (UDDI) – podobné jako vyhledávací služby některých webových portálů specializované na publikování a vyhledávání web služeb SOAP Discovery (Disco) – vytváří seznam služeb dostupných na webovém serveru nebo serverech
n n n
n n
n n n
Web Service Description Language (WSDL) – popisuje gramatiku XML pro popis služby. Obsahuje popis všech metod a jejich parametrů dané služby. Na jeho základě generují nástroje Visual Studia .NET tzv. Proxy třídu používanou klientskými aplikacemi pro komunikaci s web službou.
Přenosové protokoly. Používají se již existující internetové protokoly HTTP, HTTPS nebo SMTP. Pro tyto protokoly jsou otevřeny TCP/IP porty ve všech firewallech. Pro volání metod a předání dat lze využívat i SOAP.
Přístup k datům uloženým zejména v databázích Zcela přepracovaná verze ADO (ActiveX Data Object) pro platformu .NET Podporuje provádění transakcí na odpojených datech
Silná podpora XML se stala součástí ADO.NET Architektura sestává ze dvou skupin tříd: datové komponenty a „zprostředkovávací“ komponenty (managed provider components) Datové komponenty – nesou data, získaná z různých zdrojů, včetně relací n
n
Není udržováno trvalé spojení aplikace s databází Práce na kopiích dat, po opětném připojení se databáze aktualizuje provedenými změnami
Třídy DataSet, DataTable, DataRow, DataColumn, DataRelation
Managed provider komponenty – zprostředkovávají styk s datovým zdrojem n n
n
Základními funkcemi jsou operace Select, Update, Insert a Delete DataAdapter – třída, umožňující propojení datových komponent se skutečným zdrojem dat DataReader, Command a Connection
21
ADO.NET - Architektura Komponenty pro odpojená řešení
Command
Command
Command
ADO.NET - DataSet
Komponenty pro odpojená řešení
DataSet Datové Komponenty
DataSet
Command
22
DataReader Command
Connection
Managed Provider Komponenty
Connection
DataAdapter
Databáze, soubory…
Datové sklady 23
DataRelationCollection
DataTableCollection
DataRelation DataSet DataSet
DataTable DataSet DataSet
ConstraintCollection
DataRowCollection
Constraint DataSet DataSet
DataRow DataSet DataSet
DataColumnCollection
DataSet DataSet DataSet 24
6