Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło

Wielkość: px
Rozpocząć pokaz od strony:

Download "Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło"

Transkrypt

1 Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 1

2 Wzorce Web Model View Controller Page Controller każda strona ma własny Front Controller jeden uniwersalny, Interpretujący komendy. Template View LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 2

3 Projekt Wzorce projektowe Web Na podstawie: Enterprise Solution Patterns Using Microsoft.NET Page Cache MVC Intercepting Filter Page Controller Front Controller Implementacja Implementacja Pache Cache w ASP.NET Implementacja Page Controller w ASP.NET Implementacja MVC w ASP.NET Implementacja Front Controller w ASP.NET Implementacja Intercepting Filter w ASP.NET LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 3

4 MVC cd Struktura Modelu MVC Kontroler Model Widok LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 4

5 Model pasywny MVC (wg.net) cd MVC Pasywny :Kontroler :Model :Widok obsłużzdarzenie Uzytkownik uaktualnij wyświ etlda ne podajstan LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 5

6 Model aktywny MVC (wg.net) sd MVC Aktyw ny Tylko poinformuj, że zaszła jakaś zmiana! :Model :Widok Uzytkownik obsłużdarzenie poinform uj uaktualnij podajstan stan LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 6

7 Model aktywny - obserwator Rozwiązanie problemu zależności Modelu od reszty modułów za pomocą ogólnego interfejsu obserwatora, który jest realizowany przez pozostałe moduły. cd MVC Obserwator Kontroler «realize» Model «interface» Obserwator + uaktualnij() : void «realize» Widok LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 7

8 Wady i zalety MVC Zalety Wady Wiele widoków różne strony aplikacji webowej mogą używać tych samych obiektów modelu, Zmiany - Interfejs zmienia się dużo częściej od modelu. Nadmierne skomplikowanie dodatkowe warstwy oraz rygor niezależności; intensywne wykorzystanie programowania zdarzeniowego, które jest trudne w debugowaniu. Kosz częstych uaktualnień formularz uaktualnia swój widok w jakimś czasie; gdy model często zmienia swój stan, może zablokować ekran a przez to uniemożliwić pracę dla użytkownika. LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 8

9 Na początek wszystko na stronie 1/2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " Import Namespace="System.Data" %> Import Namespace="System.Data.OleDb" %> <html xmlns=" > <head runat="server"> <title>album płytowy</title> <script language="c#" runat="server"> void Page_Load(object sender, System.EventArgs e) if (!IsPostBack) String selectcmd = "select * from Plyty"; OleDbConnection myconnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source='c:\\Projekty\\svn\\pgui\\LN_2007\\NET\\baza.mdb'"); OleDbDataAdapter mycommand = new OleDbDataAdapter(selectCmd,myConnection); DataSet ds = new DataSet(); mycommand.fill(ds, "plyty"); recordingselect.datasource = ds; recordingselect.datatextfield = "tytul"; recordingselect.datavaluefield = "id"; recordingselect.databind(); Cały kod jest wewnątrz strony ASP.NET void SubmitBtn_Click(Object sender, EventArgs e) String selectcmd = String.Format( "select * from Nagrania where albumid = 0 order by id", (string)recordingselect.selecteditem.value); OleDbConnection myconnection = new OleDbConnection( "Provider=Microsoft.Jet.OLEDB.4.0; Data Source='c:\\Projekty\\svn\\pgui\\LN_2007\\NET\\baza.mdb'"); OleDbDataAdapter mycommand = new OleDbDataAdapter(selectCmd, myconnection); DataSet ds = new DataSet(); mycommand.fill(ds, "nagrania"); MyDataGrid.DataSource = ds; MyDataGrid.DataBind(); protected void recordingselect_selectedindexchanged(object sender, EventArgs e) </script> </head> Kod uruchamiany podczas ładowania strony. Wypełnia danymi listę rozwijalną z płytami. Model + Kontroler? Kod uruchamiany po wciśnięciu przycisku 'Pokaż'. (czyli jest pewien typ kontrolera) Dalszy ciąg tego samego pliku na następnym slajdzie. LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 9

10 Na początek wszystko na stronie 2/2 Kod ASP, który wyświetla kontrolki na formularzu. Prezentacja? <body> <form id="form1" runat="server" method="post"> <div> Album płytowy (Atchitektura Jednolita (brak MVC))</div> <br /> Wybierz płytę:<br /> <asp:dropdownlist ID="recordingSelect" runat="server" Width="332px" OnSelectedIndexChanged="recordingSelect_SelectedIndexChanged" AutoPostBack="True"> </asp:dropdownlist> <asp:button ID="Button1" runat="server" Text="Pokaż" Width="99px" OnClick="SubmitBtn_Click" /> <br /> <br /> <asp:gridview ID="MyDataGrid" runat="server" Width="433px"> </asp:gridview> <br /> </form> </body> </html> Kod ten nie podłącza odpowiednich atrybutów kontrolek do źródeł danych. Zajmuje się tym kod 'kontrolera' odwołując się za pomocą ID LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 10

11 Demo w Microsoft Visual Studio Single Page LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 11

12 Wszystko na stronie - Podsumowanie Zalety Wady Bardzo prosta, Łatwa w implementacji, Łatwo i szybko można wykonać jakiekolwiek zmiany, Kod jest zgromadzony w jednym pliku, przez co mamy nad nim pełną kontrolę. Łatwe kopiuj+wklej Mało pracy! < pozornie, ale dobre do prototypowania Problem z rozdzieleniem zadań między programistów i projektantów HTML, Problemy z powstawaniem błędów, Problem z ponownym użyciem kodu, który zapewnia dostęp do bazy danych. (Na każdej stronie musimy umieszczać kod inicjalizujący połączenie.) LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 12

13 Refaktoring 1 (Model+Kontroler) Widok Code behind w.net każda strona ASP.NET posiada dodatkowy plik z kodem zarządzającym daną stroną ASP. W ten sposób łatwo możemy oddzielić widok od kontrolera-widoku (uwaga, ale nie kontrolera aplikacji). LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 13

14 Diagram klas (Model+Kontroler) Widok class ModelWidok.NET _Default Default.aspx System.Web.UI.Page + Page_Load(object, System.EventArgs) : void + Subm itbtn_click(object, EventArgs) : void + Button1: asp:button + M ydatagrid: asp:gridview + recordingselect: asp:dropdownlist W pliku: Default.aspx.cs W pliku: Default.aspx Uwaga! Ta notacja nie dotyczy słowa kluczowego partial, dla którego powinniśmy raczej podawać atrybuty w jednej klasie, lub ewentualnie lepiej za pomocą asocjacji. LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 14

15 Refaktoring 1 - Widok Co pozostanie w naszym widoku? Plik Default.aspx class ModelWidok.NETa _Default System.Web.UI.Page + Page_Load(object, System.EventArgs) : void + Subm itbtn_click(object, EventArgs) : void <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " Default.aspx + Button1: asp:button + M ydatagrid: asp:gridview + recordingselect: asp:dropdownlist <html xmlns=" > <head runat="server"> <title>untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> Album płytowy (Widok-Kontroler)</div> <br /> Wybierz płytę:<br /> <asp:dropdownlist ID="recordingSelect" runat="server" AutoPostBack="True" Width="332px"> </asp:dropdownlist> <asp:button ID="Button1" runat="server" OnClick="SubmitBtn_Click" Text="Pokaż" Width="99px" /> <br /> <br /> <asp:gridview ID="MyDataGrid" runat="server" Width="433px"> </asp:gridview> </form> </body> </html> LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 15

16 Zawartość pliku: Default.aspx.cs (czyli Code Behind) Kontroler, który jest jeszcze nadal zintegrowany z modelem, czyli klasami odwołującymi się do bazy danych. Refaktoring 1 - Kontroler+Model using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.OleDb; public partial class _Default : System.Web.UI.Page public void Page_Load(object sender, System.EventArgs e) if (!IsPostBack) String selectcmd = "select * from Plyty"; OleDbConnection myconnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source='c:\\Temp\\baza.mdb'"); OleDbDataAdapter mycommand = new OleDbDataAdapter(selectCmd, myconnection); DataSet ds = new DataSet(); mycommand.fill(ds, "plyty"); recordingselect.datasource = ds; recordingselect.datatextfield = "tytul"; recordingselect.datavaluefield = "id"; recordingselect.databind(); public void SubmitBtn_Click(Object sender, EventArgs e) String selectcmd = String.Format( "select * from Nagrania where albumid = 0 order by id", (string)recordingselect.selecteditem.value); OleDbConnection myconnection = new OleDbConnection( "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\\Temp\\baza.mdb"); OleDbDataAdapter mycommand = new OleDbDataAdapter(selectCmd, myconnection); DataSet ds = new DataSet(); mycommand.fill(ds, "nagrania"); MyDataGrid.DataSource = ds; MyDataGrid.DataBind(); LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 16

17 Demo w Visual Studio: Proces refaktoringu projektu Single Page. LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 17

18 Refaktoring 2 - Zadanie 1 Stworzyć pełny Model-Widok-Kontroler na podstawie poprzedniego wzoru. Przenieść fragment związany z pobieraniem danych z bazy do osobnej klasy. class MVC.NET Kontroler ModelWidok.NET::_Default System.Web.UI.Page + Page_ Load(obj ect, System.EventArgs) : void + Subm itbtn_ Cli ck(object, EventArgs) : void Model BramaDoBazy + Bram adobazy() + dajnagrani a(string) : DataSet + dajplyty() : DataSet Widok ModelWidok.NET::Default.aspx + Button1: asp:button + M ydatagri d: asp:gri dvi ew + recordi ngsel ect: asp:dropdownlist LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 18

19 Co mógłby zawierać kontroler? using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; Tu odwołujemy się do modelu z prośbą o udostępnienie informacji o stanie zbioru z płytami. public partial class _Default : System.Web.UI.Page public void Page_Load(object sender, System.EventArgs e) if (!IsPostBack) recordingselect.datasource = BramaDoBazy.dajPlyty(); recordingselect.datatextfield = "tytul"; recordingselect.datavaluefield = "id"; recordingselect.databind(); Tu odwołujemy się do modelu z prośbą o udostępnienie stanu dotyczącego konkretnej płyty: (string)recordingselect.selecteditem.value public void SubmitBtn_Click(Object sender, EventArgs e) MyDataGrid.DataSource = BramaDoBazy.dajNagrania((string)recordingSelect.SelectedItem.Value); MyDataGrid.DataBind(); LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 19

20 Dla leniwych... (rozwiązanie) using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.OleDb; Tworzymy nową klasę i umieszczamy ją w folderze: App_Code public class BramaDoBazy public BramaDoBazy() public static DataSet dajplyty() String selectcmd = "select * from Plyty"; OleDbConnection myconnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source='c:\\Temp\\baza.mdb'"); OleDbDataAdapter mycommand = new OleDbDataAdapter(selectCmd, myconnection); DataSet ds = new DataSet(); mycommand.fill(ds, "plyty"); return ds; public static DataSet dajnagrania(string albumid) String selectcmd = String.Format( "select * from Nagrania where albumid = 0 order by id", albumid); OleDbConnection myconnection = new OleDbConnection( "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\\Temp\\baza.mdb"); OleDbDataAdapter mycommand = new OleDbDataAdapter(selectCmd, myconnection); DataSet ds = new DataSet(); mycommand.fill(ds, "nagrania"); return ds; Tworzymy obiekt DataSet, który będzie przechować STAN SESJI. Synchronizujemy stan sesji ze STANEM MODELU. W naszym przypadku stan modelu jst w bazie danych. LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 20

21 Page Controller - wprowadzenie Odseparowaliśmy model od widoku, czyli interfejs użytkownika od logiki biznesowej. Teraz pora na dodanie dynamicznej nawigacji pomiędzy stronami. Często wciśnięcie tego samego przycisku może poprowadzić użytkownika do różnych stron w następnym kroku. Kasowanie a w kliencie pocztowym nie zaprowadzi użytkownika do strony startowej, lecz najczęściej wyświetli następną wiadomość. Walidacja danych wprowadzonych w formularzu może w wyniku wyświetlić komunikat o błędzie lub przejść do następnego kroku procesu. Itp. Jak zapewnić aby wszystkie strony zawierały wspólny nagłówek Rozwiązanie: można zastosować wzorzec Page Controller z uwzględnieniem dziedziczenia. LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 21

22 Page Controller class Page Controller Model + Logika Biznesowa: Page Controller - Obsluz zadanie HT T P (request): - Uaktualnij m odel i zdecyduj o nastepnym widoku: Widok - Wygeneruj HT M L: LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 22

23 Eliminacja duplikacji kodu W celu wyeliminowania powtarzających się fragmentów kodu (np. walidacji) można zastosować kontroler bazowy. class Kontroler Bazowy KontrolerBazowy - Wspolna funkcjonalnosc (m etody): KontrolerStrony_1 - Funkcje specyficzne dla strony 1: KontrolerStrony_2 - Funkcje specyficzne dla strony 2: LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 23

24 A automatyczne testy? Problem: Aby przetestować musielibyśmy uruchamiać serwer aplikacji... class KontrolerBazowyTesty ModelWidok.NET::_Default System.Web.UI.Page + Page_ Load(obj ect, System.EventArgs) : voi d + Subm itbtn_click(object, EventArgs) : void «partial» ModelWidok.NET::Default.aspx + Button1: asp:b utton + M ydatagri d: asp:gri dv iew + recordi ngsel ect: asp:dropdownlist KontrolerBazowy - Wspolna funkcjonalnosc (m etody): KontrolerStrony_1 - Funkcje specyficzne dla strony 1: KontrolerStrony_2 - Funkcje specyficzne dla strony 2: LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 24

25 A automatyczne testy? Zależy od zapytania HTTP class KontrolerBazowyTesty ModelWidok.NET::_Default System.Web.UI.Page + Page_ Load(obj ect, System.EventArgs) : voi d + Subm itbtn_click(object, EventArgs) : void Teraz aby utworzyć testy automatyczne kontrolera nie musimy symulować żądań HTTP (Request) «partial» Nie zależy od zapytania HTTP ModelWidok.NET::Default.aspx + Button1: asp:b utton + M ydatagri d: asp:gri dv iew + recordi ngsel ect: asp:dropdownlist KontrolerBazowy - Wspolna funkcjonalnosc (m etody): KontrolerStrony_1 - Funkcje specyficzne dla strony 1: KontrolerStrony_2 - Funkcje specyficzne dla strony 2: LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 25

26 A automatyczne testy? class KontrolerBazowyTesty ModelWidok.NET::_Default System.Web.UI.Page + Page_ Load(obj ect, System.EventArgs) : voi d + Subm itbtn_click(object, EventArgs) : void CodeBehind pełni rolę pośredniego model prezentacji, wykonujący transformację elementów z postaci HTTP na postać z dziedziny aplikacji. «partial» ModelWidok.NET::Default.aspx + Button1: asp:b utton + M ydatagri d: asp:gri dv iew + recordi ngsel ect: asp:dropdownlist KontrolerBazowy - Wspolna funkcjonalnosc (m etody): Kontroler uniwerslany, niezależny od samego zapytania HTTP. KontrolerStrony_1 - Funkcje specyficzne dla strony 1: KontrolerStrony_2 - Funkcje specyficzne dla strony 2: LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 26

27 Zalety Page Controller - Podsumowanie Ograniczenia Prostota ponieważ każda strona jest zarządzana przez własny kontroler. Wzorzec jest zalecany dla stron ze stosunkowo prostą nawigacją. Jest wzorcem wbudowanym i zalecanym przez.net Zastosowanie kontrolera bazowego zwiększa ponowne użycie kodu. Rozszerzalność bardziej złożona logika może być delegowana do oddzielnych klas pomocniczych. Rozdzielenie zadań programisty od projektanta www. Jeden kontroler dla każdej strony sprawdza się gdy mamy w miarę statyczną strukturę stron aplikacji oraz nawigacji między nimi. Głębokie zależności dziedziczenia które mogą prowadzić do trudnych do utrzymania i rozwoju projektów. W klasycznej postaci nie umożliwia wykonywania automatycznych testów. Kontroler zależy od zawartości formularza na stronie, czyli od specyficznych pól zawartych w obiekcie Request. Dopiero zastosowanie dodatkowego kontrolera dedykowanego do samego ASP.NET. LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 27

28 Założenia do Front Controller Problem: Jaka jest najkorzystniejsza architektura dla skomplikowanej aplikacji Web aby osiągnąć wysoki wskaźnik ponownego użycia kodu oraz elastyczności przy jak najmniejszym duplikowaniu kodu. Problem: Wspólna funkcjonalność jest dzielona przez wiele widoków. Potrzebna jest centralizacja tej logiki aby uniknąć powtarzania się kodu. Problem: Zbiór widoków wykorzystuje te same dane. Najkorzystniejszym rozwiązaniem jest scentralizowane pobieranie danych. Czyli unikamy powtarzania się kodu odpowiedzialnego za pobieranie danych w poszczególnych widokach. Problem: Automatyczne testowanie. Testować chcemy nie tylko model, ale także kontroler. LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 28

29 Front Controller - Wprowadzenie W Page Controller: mamy jednego potomka wszystkich stron, ale którego funkcjonalność z czasem rozrasta się do bardzo dużych rozmiarów, aby uniknąć warunków w klasie bazowej musimy budować skomplikowane i złożone struktury dziedziczenia, zarządza JEDNĄ stroną, czyli trudno jest nam zrealizować zarządzanie nawigacją, czyli logikę aplikacji, zarządza jedną stroną a więc trudno jest w jednym miejscu zrealizować WSPÓLNĄ część funkcjonalności aplikacji (komunikaty, bezpieczeństwo, itp.) przywiązanie strony, formularza do konkretnego URLa, również wprowadza ograniczenie do aplikacji (wyobraźmy sobie np. kreator, gdzie potrzebne byłyby operacje warunkowe w kontrolerze bazowym) LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 29

30 Front Controller - Wprowadzenie Rozwiązanie: Filtracja wszystkich zapytań przez JEDEN główny kontroler. Front Kontroler jest realizowany w dwóch częściach: Handler (obsługa) oraz hierarchi akcji (Concrete Command) Zadania Handlera: Pobranie parametrów bezpośrednio z zapytania HTTP. Selekcja akcji (komendy, command) do ruchomienia. Komendy są częścią kontrolera. Zaleta: Po zakończeniu operacji przez komendę wybiera ona widok do wyświetlenia. scentralizowane zarządzanie bezpieczeństwo wątkowe możliwość konfiguracji LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 30

31 Struktura i scenariusz Front Controllera Struktura Scenariusz LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 31

32 Implementacja W.Net implementacja jest skomplikowana ze względu na wbudowany i ściśle zintegrowany ze środowiskiem wzorzec Page Controllera. Potrzebna jest budowa całego silnika Front Controllera. Należy stosować tylko i wyłącznie dla faktycznie rozbudowanych systemów. Zakładamy, że potrzebujemy stworzyć dwie strony z wspólnym nagłówkiem. LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 32

33 Kod klasy bazowej using System; using System.Web.UI; using System.Web.UI.WebControls; public class BasePage : Page protected Label ; protected Label sitename; virtual protected void PageLoadEvent(object sender, System.EventArgs e) protected void Page_Load(object sender, System.EventArgs e) if (!IsPostBack) string name = Context.User.Identity.Name; .text = DatabaseGateway.RetrieveAddress(name); sitename.text = "Micro-site"; PageLoadEvent(sender, e); #region Web Form Designer generated code override protected void OnInit(EventArgs e) // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // InitializeComponent(); base.oninit(e); /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() this.load += new System.EventHandler(this.Page_Load); #endregion LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 33

34 Projekt obiektu Handler using System; using System.Web; public class Handler : IHttpHandler public void ProcessRequest(HttpContext context) Command command = CommandFactory.Make(context.Request.Params); command.execute(context); public bool IsReusable get return true; using System; using System.Collections.Specialized; public class CommandFactory public static Command Make(NameValueCollection parms) string sitename = parms["site"]; Command command = new UnknownCommand(); if (sitename == null sitename.equals("micro")) command = new MicroSite(); else if (sitename.equals("macro")) command = new MacroSite(); return command; using System; using System.Web; public interface Command void Execute(HttpContext context); LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 34

35 Konfiguracja Handlera Plik konfiguracyjny: <httphandlers> <add verb="*" path="page*.aspx" type="handler,frontcontroller" /> </httphandlers> LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 35

36 Komendy LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 36

37 RedirectingCommand using System; using System.Web; public abstract class RedirectingCommand : Command private UrlMap map = UrlMap.SoleInstance; protected abstract void OnExecute(HttpContext context); public void Execute(HttpContext context) OnExecute(context); string url = String.Format("0?1", map.map[context.request.url.absolutepath], context.request.url.query); context.server.transfer(url); LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 37

38 UrlMap public class UrlMap : IConfigurationSectionHandler private readonly NameValueCollection _commands = new NameValueCollection(); public const string SECTION_NAME = "controller.mapping"; public static UrlMap SoleInstance get return (UrlMap)ConfigurationSettings.GetConfig(SECTION_NAME); object IConfigurationSectionHandler.Create(object parent, object configcontext, XmlNode section) return (object)new UrlMap(parent, configcontext, section); private UrlMap() /*no-op*/ public UrlMap(object parent, object configcontext, XmlNode section) try XmlElement entrieselement = section["entries"]; foreach (XmlElement element in entrieselement) _commands.add(element.attributes["key"].value, element.attributes["url"].value); catch (Exception ex) throw new ConfigurationException("Error while parsing configuration section.", ex, section); public NameValueCollection Map get return _commands; <controller.mapping> <entries> <entry key="/patterns/frontc/3/page1.aspx" url="actualpage1.aspx" /> <entry key="/patterns/frontc/3/page2.aspx" url="actualpage2.aspx" /> </entries> </controller.mapping> LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 38

39 Page Cache Aby przyspieszyć wyświetlanie stron, które wymagają długiego czasu do generacji możemy je na jakiś czas przechowywać w pamięci podręcznej. Brak w cache Znajdujący się w cache LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 39

40 MicroSite using System; using System.Web; public class MicroSite : RedirectingCommand protected override void OnExecute(HttpContext context) string name = context.user.identity.name; context.items["address"] = WebUsersDatabase.RetrieveAddress(name); context.items["site"] = "Micro-Site"; LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 40

41 MacroSite using System; using System.Web; public class MacroSite : RedirectingCommand protected override void OnExecute(HttpContext context) string name = context.user.identity.name; context.items["address"] = MacroUsersDatabase.RetrieveAddress(name); context.items["site"] = "Macro-Site"; LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 41

42 Dostęp do danych... using System; using System.Data; using System.Data.SqlClient; public class WebUsersDatabase public static string RetrieveAddress(string name) string address = null; String selectcmd = String.Format("select * from webuser where (id = '0')", name); SqlConnection myconnection = new SqlConnection("server=(local);database=webusers;Trusted_Connection=yes"); Dla Micro-Site: Dla Macro-Site: SqlDataAdapter mycommand = new SqlDataAdapter(selectCmd, myconnection); DataSet ds = new DataSet(); mycommand.fill(ds, "webuser"); if (ds.tables["webuser"].rows.count == 1) DataRow row = ds.tables["webuser"].rows[0]; address = row["address"].tostring(); return address; Warstwa Modelu... using System; using System.Data; using System.Data.SqlClient; public class MacroUsersDatabase public static string RetrieveAddress(string name) string address = null; String selectcmd = String.Format("select * from customer where (id = '0')", name); SqlConnection myconnection = new SqlConnection("server=(local);database=macrousers;Trusted_Connection=yes"); SqlDataAdapter mycommand = new SqlDataAdapter(selectCmd, myconnection); DataSet ds = new DataSet(); mycommand.fill(ds, "customer"); if (ds.tables["customer"].rows.count == 1) DataRow row = ds.tables["customer"].rows[0]; address = row[" "].tostring(); return address; LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 42

43 Front Controller Wady i Zalety Zalety: Wady: Większa elastyczność (np. poprzez plik konfiguracyjny) Uproszczone widoki (bez obsługi akcji) Gotowe na rozbudowę i modyfikacje Mapowanie URL (ukrycie nazw stron przed użytkownikiem) Bezpieczeństwo wątkowe Obniżona wydajność Zwiększone skomplikowanie kodu, pogorszona czytelność i odkrywalność Front Controller jest zaimplementowany w ASP.NET trudne testowanie w oddzieleniu od serwera aplikacji Brak weryfikacji nieprawidłowych URL (ponieważ znajduje się to tylko w pliku konfiguracyjnym) LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 43

44 Page Cache - implementacja W.NET wzorzec Page Cache jest wbudowany w serwer aplikacji. <%@ OutputCache Duration="60" VaryByParam="none" %> <html> <script language="c#" runat="server"> void Page_Load(Object sender, EventArgs e) TimeMsg.Text = DateTime.Now.ToString("G"); </script> <body> <h3>using the Output Cache</h3> <p>last generated on: <asp:label id="timemsg" runat="server"/> </body> </html> LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 44

45 Wzorzec Łańcuch Filtrów (Filter Chain) Struktura Typowy scenariusz LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 45

46 Przykładowe zastosowanie Filtry przechwytują zdarzenia Przed... i Po.. (Before... i After...) Analiza nagłówków Analiza pól Uruchomienie logiki Zwrócenie nagłówków Zwrócenie treści LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 46

47 Interakcja Dziękuję za uwagę. Chcemy być coraz lepsi! Jeżeli coś cię zainteresowało napisz a: Jeżeli coś cię bardzo znudziło napisz a: Jeżeli zauważyłeś błąd napisz a: LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 47

Projektowanie Graficznych Interfejsów Użytkownika. Robert Szmurło

Projektowanie Graficznych Interfejsów Użytkownika. Robert Szmurło Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło 1 Wzorce Web Model View Controller Page Controller każda strona ma własny Front Controller jeden uniwersalny, Interpretujący komendy. Template

Bardziej szczegółowo

Wzorce prezentacji internetowych

Wzorce prezentacji internetowych Wzorce prezentacji internetowych 1. Model kontrolera widoku (Model View Controller). 2. Kontroler strony (Page Controller). 3. Kontroler fasady (Front Controller). 4. Szablon widoku (Template View). 5.

Bardziej szczegółowo

Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło

Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 1 Wzorce Projektowe Nie ma złotego środka spełniającego wszystkie wymagania.

Bardziej szczegółowo

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner 2013-03-11

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner 2013-03-11 Poznaj ASP.NET MVC Kamil Cieślak Microsoft Student Partner 2013-03-11 Agenda Czym jest ASP.NET MVC? Wzorzec MVC ASP.NET MVC vs inne frameworki Bazy danych w ASP.NET MVC Jak zacząć? 2 Czym jest ASP.NET

Bardziej szczegółowo

Projektowanie Graficznych Interfejsów Użytkownika. Robert Szmurło

Projektowanie Graficznych Interfejsów Użytkownika. Robert Szmurło Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło 1 Wzorce Projektowe Nie ma złotego środka spełniającego wszystkie wymagania. skala projektu liczba deweloperów stopień skomplikowania Wzorzec

Bardziej szczegółowo

Architektura MVC w ASP.NET. Autor wykładu: Marek Wojciechowski

Architektura MVC w ASP.NET. Autor wykładu: Marek Wojciechowski Architektura MVC w ASP.NET Autor wykładu: Marek Wojciechowski Modele programistyczne ASP.NET Web Forms Komponentowy interfejs użytkownika (kontrolki) Programowanie wizualno-zdarzeniowe Klasyczna składnia

Bardziej szczegółowo

ASP.NET MVC. Grzegorz Caban grzegorz.caban@gmail.com. 20 stycznia 2009

ASP.NET MVC. Grzegorz Caban grzegorz.caban@gmail.com. 20 stycznia 2009 ASP.NET MVC Grzegorz Caban grzegorz.caban@gmail.com 20 stycznia 2009 Agenda Przyczyna powstania Co to jest ASP.NET MVC Architektura Hello World w ASP.NET MVC ASP.NET MVC vs ASP.NET WebForm Przyszłość framework'a

Bardziej szczegółowo

Wzorce logiki dziedziny

Wzorce logiki dziedziny Wzorce logiki dziedziny 1. Wzorce logiki dziedziny skrypt transakcji (Transaction Script), brama tabeli (Table Data Gateway), model dziedziny (Domain model), strategia (Strategy), moduł tabeli (Table Module),

Bardziej szczegółowo

Infrastruktura aplikacji WWW

Infrastruktura aplikacji WWW ASP.NET WebForms Infrastruktura aplikacji WWW Gotowe rozwiązania architektoniczne i szkielety aplikacji zwalniają twórców aplikacji z implementacji infrastruktury, zwiększając ich produktywność Stanowy,

Bardziej szczegółowo

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1 1 LINQ 1 1. Cel zajęć Celem zajęć jest zapoznanie się z technologią LINQ oraz tworzeniem trójwarstwowej aplikacji internetowej. 2. Zadanie Proszę przygotować aplikację WWW, która: będzie pozwalała na generowanie

Bardziej szczegółowo

Microsoft.NET: LINQ to SQL, ASP.NET AJAX

Microsoft.NET: LINQ to SQL, ASP.NET AJAX Microsoft.NET: LINQ to SQL, ASP.NET AJAX Do realizacji projektu potrzebne jest zintegrowane środowisko programistyczne Microsoft Visual Studio 2008 oraz serwer bazy danych SQL Server Express 2005 (lub

Bardziej szczegółowo

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3 3 ASP.NET MVC Podstawy 1 1. Cel zajęć Celem zajęć jest zapoznanie się z podstawami ASP.NET MVC 2.0 Framework. 2. Zadanie Proszę zbudować prostą aplikację WWW przy zastosowaniu framework a ASP.NET MVC 2.0

Bardziej szczegółowo

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC Akademia MetaPack Uniwersytet Zielonogórski Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC Krzysztof Blacha Microsoft Certified Professional Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC Agenda:

Bardziej szczegółowo

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Wykład 12. Programowanie serwera MS SQL 2005 w C# Wykład 12 Programowanie serwera MS SQL 2005 w C# Budowa procedur składowanych w C# Budowa funkcji składowanych w C# Wykorzystanie funkcji składowanych w C# po stronie klienta Tworzenie typów definiowanych

Bardziej szczegółowo

Wzorce architektoniczne

Wzorce architektoniczne Wzorce architektoniczne Architektura warstwowa, MVP, MVC, MVVM Wojciech Szymecki Wydział Fizyki, Astronomii i Informatyki Stosowanej Uniwersytet Mikołaja Kopernika 23 maja 2014 Architektura warstwowa W

Bardziej szczegółowo

MVC w praktyce tworzymy system artykułów. cz. 1

MVC w praktyce tworzymy system artykułów. cz. 1 MVC w praktyce tworzymy system artykułów. cz. 1 Tworząc różnego rodzaju aplikacje natrafiamy na poważny problem utrzymania dobrej organizacji kodu przejrzystej oraz łatwej w rozbudowie. Z pomocą przychodzą

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 7 Marcin Młotkowski 8 kwietnia 2015 Plan wykładu Z życia programisty, część 1 1 Z życia programisty, część 1 2 3 Z życia programisty, część 2 Model View Controller MVC w

Bardziej szczegółowo

Wprowadzenie do programowania aplikacji mobilnych

Wprowadzenie do programowania aplikacji mobilnych Wprowadzenie do programowania aplikacji mobilnych dr Przemysław Juszczuk dr Przemysław Juszczuk Trochę historii Idea wzorców projektowych wywodzi się jeszcze z wczesnych lat osiemdziesiątych ubiegłego

Bardziej szczegółowo

MasterPage w ASP.NET

MasterPage w ASP.NET MasterPage w ASP.NET Paulo Gliwa Data opracowania: 23 VI 2017 Wstęp. Podczas tworzenia aplikacji internetowych na platformie ASP.NET mamy do użytku wiele przydatnych narzędzi przyśpieszających i ułatwiających

Bardziej szczegółowo

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz Budowa aplikacji wielowarstwowych zastosowanie szablonów Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz Przykład 1 Zastosowanie szablonów Tworzenie kopii projektu typu Web Application o nazwie

Bardziej szczegółowo

Technologie internetowe ASP.NET Core. Paweł Rajba

Technologie internetowe ASP.NET Core. Paweł Rajba Technologie internetowe ASP.NET Core Paweł Rajba pawel@cs.uni.wroc.pl http://itcourses.eu/ Plan wykładu Wprowadzenie Podstawowa aplikacja Usługi i middleware Obsługa błędów Request, Response, ciastka i

Bardziej szczegółowo

ASP.NET. Plan wykładu. Wykład prowadzi: Mikołaj Morzy. SSI - Przykład. Server Side Includes (SSI)

ASP.NET. Plan wykładu. Wykład prowadzi: Mikołaj Morzy. SSI - Przykład. Server Side Includes (SSI) Wykład prowadzi: Mikołaj Morzy ASP.NET Plan wykładu Server Side Includes (SSI) Active Server Pages (ASP) ASP.NET Dostęp do baz danych w aplikacjach ASP.NET Infrastruktura w aplikacjach ASP.NET Web Forms

Bardziej szczegółowo

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,

Bardziej szczegółowo

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W ELBLĄGU INSTYTUT INFORMATYKI STOSOWANEJ Sprawozdanie z Seminarium Dyplomowego Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Bardziej szczegółowo

Programowanie zorientowane obiektowo. Mateusz Kołecki

Programowanie zorientowane obiektowo. Mateusz Kołecki Programowanie zorientowane obiektowo Mateusz Kołecki Plan MVC Wstęp Separacja odpowiedzialnośći Antyprzykład Dobry przykład Wady/zalety MVC MVC to tylko początek - wzorce projektowe Dlaczego chcemy używać

Bardziej szczegółowo

Leszek Stasiak Zastosowanie technologii LINQ w

Leszek Stasiak Zastosowanie technologii LINQ w Leszek Stasiak Zastosowanie technologii LINQ w C# 1. Wstęp - połączenie Do naszych zadań będziemy używać Microsoft Visual Studio 2010. Stwórzmy nowy projekt Windows Form Application. Mając do dyspozycji

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 11 - przegląd wybranych wzorców mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 24 maja 2017 1 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe Wzorce

Bardziej szczegółowo

Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło

Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 1 System.Windows.Forms System.Windows.Forms Core infrastructure podstawowe operacje

Bardziej szczegółowo

Podstawy wzorca MVC 2011-10-18 MODEL KON- TROLER WIDOK. Odpowiada za wyświetlenie danych użytkownikowi. Zawiera dane aplikacji oraz jej logikę.

Podstawy wzorca MVC 2011-10-18 MODEL KON- TROLER WIDOK. Odpowiada za wyświetlenie danych użytkownikowi. Zawiera dane aplikacji oraz jej logikę. Podstawy wzorca MVC MODEL KON- TROLER WIDOK Zawiera dane aplikacji oraz jej logikę. MODEL WIDOK Odpowiada za wyświetlenie danych użytkownikowi KON- TROLER KON- TROLER MODEL WIDOK Jedyna część aplikacji,

Bardziej szczegółowo

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First) Microsoft.NET: ASP.NET MVC + Entity Framework (Code First) Do realizacji projektu potrzebne jest zintegrowane środowisko programistyczne Microsoft Visual Studio 2012. W ramach projektu budowana jest prosta

Bardziej szczegółowo

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia) Program szkolenia: Przygotowanie do nowoczesnego programowania po stronie przeglądarki (HTML5, CSS3, JS, wzorce, architektura, narzędzia) Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania:

Bardziej szczegółowo

Warstwa prezentacji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Warstwa prezentacji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe. Warstwa prezentacji wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe. 1. Definicja warstwy prezentacji - pięciowarstwowy model logicznego rozdzielania zadań 2. Podstawowe przypadki - analiza

Bardziej szczegółowo

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki 2011. Promotor dr inż. Paweł Figat

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki 2011. Promotor dr inż. Paweł Figat Grzegorz Ruciński Warszawska Wyższa Szkoła Informatyki 2011 Promotor dr inż. Paweł Figat Cel i hipoteza pracy Wprowadzenie do tematu Przedstawienie porównywanych rozwiązań Przedstawienie zalet i wad porównywanych

Bardziej szczegółowo

Laboratorium 10 - Web Services

Laboratorium 10 - Web Services Laboratorium 10 - Web Services W ramach laboratorium zapoznamy się z koncepcją Web Service ów (odmiana point-to-point Web Service). W kolejnych krokach utworzony zostanie projekt, w którym wykorzystana

Bardziej szczegółowo

Dostęp do baz danych w ASP.NET.

Dostęp do baz danych w ASP.NET. Ćwiczenie 12 Temat: Dostęp do baz danych w ASP.NET. Kontrolki źródeł danych i wizualizacyjne. Wyświetlanie i edycja danych. Cel ćwiczenia: W ramach ćwiczenie student zapozna się z kontrolkami umożliwiającymi

Bardziej szczegółowo

Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło

Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 1 UCD - User Centered Design 1) User Centered Design Projekt Skoncentrowany

Bardziej szczegółowo

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy - Narzędzie Windows Forms - Przykładowe aplikacje 1 Narzędzia Windows Form Windows Form jest narzędziem do tworzenia aplikacji dla

Bardziej szczegółowo

Walidacja danych w ASP.NET MVC

Walidacja danych w ASP.NET MVC Walidacja danych w ASP.NET MVC 1. Prosta walidacja 2. Walidacja z Data Annotation public ActionResult Edit(Person person) bool blad = false; if(person.name.trim().length == 0) ViewData["Blad1"] = "Nazwisko

Bardziej szczegółowo

Zrąb JavascriptMVC. Krzysztof Płocharz. 6 kwiecień 2009. Uniwersytet Warszawski

Zrąb JavascriptMVC. Krzysztof Płocharz. 6 kwiecień 2009. Uniwersytet Warszawski Uniwersytet Warszawski 6 kwiecień 2009 Spis Treści 1 MVC Jak to wygląda w JavascriptMVC 2 Prawie jak klasy 3 Hierarchia Widoki Kontrolery Modele 4 Struktura katalogów Generatory kodu Generatory dokumentacji

Bardziej szczegółowo

Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło

Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło ZIMA 2008/2009 Projektowanie Graficznych Interfejsów Użytkownika 1 Wymagania na zaliczenie Pierwszy wykład wprowadzajacy. Podstawowe zalecenia

Bardziej szczegółowo

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz Budowa prostej aplikacji wielowarstwowej Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz Konfigurowanie edytora programu za pomocą Tools/Options/Editor Konfigurowanie edytora programu za pomocą

Bardziej szczegółowo

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf Materiały poprawione Rozwiązanie zadania w NetBeans IDE 7.4: Jarosław Ksybek, Adam Miazio Celem ćwiczenia jest przygotowanie prostej aplikacji

Bardziej szczegółowo

Realizacja Aplikacji Internetowych 2013 laboratorium cz. 2 K.M. Ocetkiewicz

Realizacja Aplikacji Internetowych 2013 laboratorium cz. 2 K.M. Ocetkiewicz Realizacja Aplikacji Internetowych 2013 laboratorium cz. 2 K.M. Ocetkiewicz Walidacja po stronie klienta: - w MVC 3 i 4 domyślnie jest włączona także walidacja po stronie klienta - wykorzystuje ona JavaScript

Bardziej szczegółowo

Zaawansowane aplikacje WWW - laboratorium

Zaawansowane aplikacje WWW - laboratorium Zaawansowane aplikacje WWW - laboratorium Przetwarzanie XML (część 2) Celem ćwiczenia jest przygotowanie aplikacji, która umożliwi odczyt i przetwarzanie pliku z zawartością XML. Aplikacja, napisana w

Bardziej szczegółowo

Tworzenie i wykorzystanie usług sieciowych

Tworzenie i wykorzystanie usług sieciowych Ćwiczenie 14 Temat: Tworzenie i wykorzystanie usług sieciowych Cel ćwiczenia: W trakcie ćwiczenia student zapozna się z procedurą tworzenia usługi sieciowej w technologii ASP.NET oraz nauczy się tworzyć

Bardziej szczegółowo

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton Dzisiejszy wykład Wzorce projektowe Visitor Client-Server Factory Singleton 1 Wzorzec projektowy Wzorzec nazwana generalizacja opisująca elementy i relacje rozwiązania powszechnie występującego problemu

Bardziej szczegółowo

Podstawy programowania III WYKŁAD 6

Podstawy programowania III WYKŁAD 6 Podstawy programowania III WYKŁAD 6 Jan Kazimirski 1 Projekt: Katalog książek elektronicznych c.d. 2 Diagram przypadków użycia 3 Iteracja 1 Zaprojektowanie panelu głównego aplikacji Realizacja przypadków

Bardziej szczegółowo

Instrukcja 5 Laboratorium z Podstaw Inżynierii Oprogramowania. Warstwy integracji z bazą danych: Wzorzec DAO Technologia ORM

Instrukcja 5 Laboratorium z Podstaw Inżynierii Oprogramowania. Warstwy integracji z bazą danych: Wzorzec DAO Technologia ORM Instrukcja 5 Laboratorium z Podstaw Inżynierii Oprogramowania Warstwy integracji z bazą danych: Wzorzec DAO Technologia ORM Cel laboratorium 5 Należy wykonać dwie aplikacje zawierające warstwę integracji

Bardziej szczegółowo

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Tworzenie aplikacji Web Alicja Zwiewka. Page 1 Tworzenie aplikacji Web Alicja Zwiewka Page 1 Co to są web-aplikacje? Aplikacja internetowa (ang. web application) program komputerowy, który pracuje na serwerze i komunikuje się poprzez sieć komputerową

Bardziej szczegółowo

Metody Metody, parametry, zwracanie wartości

Metody Metody, parametry, zwracanie wartości Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Metody Metody, parametry, zwracanie wartości Metody - co to jest i po co? Metoda to wydzielona część klasy, mająca

Bardziej szczegółowo

PHP 5 język obiektowy

PHP 5 język obiektowy PHP 5 język obiektowy Wprowadzenie Klasa w PHP jest traktowana jak zbiór, rodzaj różnych typów danych. Stanowi przepis jak stworzyć konkretne obiekty (instancje klasy), jest definicją obiektów. Klasa reprezentuje

Bardziej szczegółowo

Baza danych sql. 1. Wprowadzenie

Baza danych sql. 1. Wprowadzenie Baza danych sql 1. Wprowadzenie Do tej pory operowaliście na listach. W tej instrukcji pokazane zostanie jak stworzyć bazę danych. W zadaniu skorzystamy z edytora graficznego struktury bazy danych, który

Bardziej szczegółowo

Zaawansowane aplikacje internetowe - laboratorium

Zaawansowane aplikacje internetowe - laboratorium Zaawansowane aplikacje internetowe - laboratorium Web Services (część 3). Do wykonania ćwiczeń potrzebne jest zintegrowane środowisko programistyczne Microsoft Visual Studio 2005. Ponadto wymagany jest

Bardziej szczegółowo

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin Czym jest Spring Boot? Spring Boot jest szkieletem aplikacji, opiera się o Spring Framework czyli Framework szeroko

Bardziej szczegółowo

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania 1) Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z podstawowymi elementami obiektowymi systemu Windows wykorzystując Visual Studio 2008 takimi jak: przyciski, pola tekstowe, okna pobierania danych

Bardziej szczegółowo

I.Wojnicki, PHP. Smarty. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie. 28 marca 2014

I.Wojnicki, PHP. Smarty. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie. 28 marca 2014 Igor Wojnicki (AGH, KIS) Smarty 28 marca 2014 1 / 33 Smarty Igor Wojnicki Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie 28 marca 2014 $Id: smarty.tex,v 1.2 2013/06/22 22:09:45 wojnicki

Bardziej szczegółowo

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji Można wybrać sposób zapisu konfiguracji: YML, XML, PHP

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji Można wybrać sposób zapisu konfiguracji: YML, XML, PHP Baza danych i ORM Struktura Bundle app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji Można wybrać sposób zapisu konfiguracji: YML, XML, PHP src/ - folder zawiera cały kod PHP aplikacji vendor/

Bardziej szczegółowo

Forum Client - Spring in Swing

Forum Client - Spring in Swing Forum Client - Spring in Swing Paweł Charkowski. 0. Cel projektu Celem projektu jest próba integracji Spring Framework z różnymi technologiami realizacji interfejsu użytkownika, oraz jej ocena. Niniejszy

Bardziej szczegółowo

Fragmenty są wspierane od Androida 1.6

Fragmenty są wspierane od Androida 1.6 W androidzie można tworzyć dynamiczne interfejsy poprzez łączenie w moduły komponentów UI z aktywnościami. Moduły takie tworzy się za pomocą klasy Fragment, która zachowuje się jak zagnieżdżone aktywności

Bardziej szczegółowo

Instrukcja laboratoryjna cz.2

Instrukcja laboratoryjna cz.2 Synteza aplikacji biznesowych 2013/2014 Instrukcja laboratoryjna cz.2 Administracja serwisów Microsoft SharePoint Prowadzący: Tomasz Goluch Wersja: 4.1 I. Diagnostyka przy użyciu mechanizmu Developer Dashboard.

Bardziej szczegółowo

REFERAT PRACY DYPLOMOWEJ

REFERAT PRACY DYPLOMOWEJ REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i implementacja środowiska do automatyzacji przeprowadzania testów aplikacji internetowych w oparciu o metodykę Behavior Driven Development. Autor: Stepowany

Bardziej szczegółowo

Wzorce projektowe cz. II. Wzorce projektowe cz. II 1/35

Wzorce projektowe cz. II. Wzorce projektowe cz. II 1/35 Wzorce projektowe cz. II Wzorce projektowe cz. II 1/35 Wzorce projektowe cz. II 2/35 Iterator Przeznaczenie Wzorzec zapewnia sekwencyjny dostęp do elementów obiektu zagregowanego bez ujawniania jego reprezentacji

Bardziej szczegółowo

Modelowanie obiektowe

Modelowanie obiektowe Modelowanie obiektowe ZPO 2018/2019 Dr inż. W. Cichalewski Materiały wykonane przez W. Tylman Diagramy klas Diagramy klas Zawiera informacje o statycznych związkach między elementami (klasami) Są ściśle

Bardziej szczegółowo

Automatyzacja Testowania w WEB 2.0

Automatyzacja Testowania w WEB 2.0 Automatyzacja Testowania w WEB 2.0 Wojciech Pająk, Radosław Smilgin XXIV Jesienne Spotkania PTI Wisła, 20-24 października 2008 Agenda Wprowadzenie do automatyzacji testowania Technologie WEB 2.0 Narzędzia

Bardziej szczegółowo

mylittlemvc Framework MVC dla ASP.NET Autor: Michał Skowronek

mylittlemvc Framework MVC dla ASP.NET Autor: Michał Skowronek mylittlemvc Framework MVC dla ASP.NET Autor: Michał Skowronek 1. Cel projektu Celem projektu było stworzenie frameworka, dzięki któremu byłoby możliwe tworzenie aplikacji internetowych w ASP.NET używając

Bardziej szczegółowo

Aplikacje RMI Lab4

Aplikacje RMI   Lab4 Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Lab4 Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych 1 1. Koncepcja budowy aplikacji RMI (aplikacja rozproszonych

Bardziej szczegółowo

Microsoft.NET: Warstwa dostępu do danych (DAL) w aplikacjach ASP.NET Web Forms

Microsoft.NET: Warstwa dostępu do danych (DAL) w aplikacjach ASP.NET Web Forms Microsoft.NET: Warstwa dostępu do danych (DAL) w aplikacjach ASP.NET Web Forms Do realizacji projektu potrzebne jest zintegrowane środowisko programistyczne Microsoft Visual Studio 2008 oraz serwer bazy

Bardziej szczegółowo

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2 Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2 Statyczne strony HTML Wczytanie statycznej strony HTML sprowadza się do odebrania żądania przez serwer, odnalezienia właściwego pliku

Bardziej szczegółowo

Rysunkowy tutorial Możesz swobodnie dystrybuować ten plik jeśli pozostawisz go w nietkniętym stanie. Możesz także cytować jego fragmenty umieszczając w tekście odnośnik http://mbartyzel.blogspot.com Jak

Bardziej szczegółowo

HP Service Anywhere Uproszczenie zarządzania usługami IT

HP Service Anywhere Uproszczenie zarządzania usługami IT HP Service Anywhere Uproszczenie zarządzania usługami IT Robert Nowak Architekt rozwiązań HP Software Dlaczego Software as a Service? Najważniejsze powody za SaaS UZUPEŁNIENIE IT 2 Brak zasobów IT Ograniczone

Bardziej szczegółowo

JAX-RS czyli REST w Javie. Adam Kędziora

JAX-RS czyli REST w Javie. Adam Kędziora JAX-RS czyli REST w Javie Adam Kędziora Webservice Usługa sieciowa (ang. web service) komponent programowy niezależny od platformy i implementacji, dostarczający określonej funkcjonalności. SOAP,UDDI,XML,WSDL

Bardziej szczegółowo

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz Aplikacja internetowa zbudowana w oparciu o środowisko Visual Web Java Server Faces. Zarządzanie obiektami typu SesionBeans, RequestBeen i ApplicationBeans, Laboratorium 1 Wzorce oprogramowania lab1, Okres

Bardziej szczegółowo

STWORZENIE MOBILNEJ APLIKACJI,

STWORZENIE MOBILNEJ APLIKACJI, LABORATORIUM SYSTEMÓW MOBILNYCH STWORZENIE MOBILNEJ APLIKACJI, WYŚWIETLAJĄCEJ AKTUALNĄ POZYCJĘ UŻYTKOWNIKA, LISTĘ WIDOCZNYCH SATELITÓW ORAZ ICH POZYCJĘ I. Temat ćwiczenia Stworzenie mobilnej aplikacji,

Bardziej szczegółowo

Ekspert radzi. mechanizm w enova, umożliwiający wskazanie domyślnej drukarki dla danego stanowiska i wydruku. Strona 1 z 8. Ekspert radzi.

Ekspert radzi. mechanizm w enova, umożliwiający wskazanie domyślnej drukarki dla danego stanowiska i wydruku. Strona 1 z 8. Ekspert radzi. Ekspert radzi mechanizm w enova, umożliwiający wskazanie domyślnej drukarki dla danego stanowiska i wydruku. Strona 1 z 8 Spis treści 1. Zarys rozwiązania...3 1.2 Case study...3 1.3 Wymagania...3 2. Projekt...3

Bardziej szczegółowo

Technologia Programowania 2016/2017 Wykład 4

Technologia Programowania 2016/2017 Wykład 4 Technologia Programowania 2016/2017 Wykład 4 Wzorce projektowe GoF Jakub Lemiesz Wzorce GRASP a wzorce GoF Znamy 9 wzorców GRASP ogólne zasady Na GRASP opierają się klasyczne wzorce GoF Na wzorcach GoF

Bardziej szczegółowo

Programowanie MorphX Ax

Programowanie MorphX Ax Administrowanie Czym jest system ERP? do systemu Dynamics Ax Obsługa systemu Dynamics Ax Wyszukiwanie informacji, filtrowanie, sortowanie rekordów IntelliMorph : ukrywanie i pokazywanie ukrytych kolumn

Bardziej szczegółowo

Zaawansowane aplikacje internetowe - laboratorium Architektura Spring.

Zaawansowane aplikacje internetowe - laboratorium Architektura Spring. Zaawansowane aplikacje internetowe - laboratorium Architektura Spring. Celem ćwiczenia jest przygotowanie prostej aplikacji internetowej wykorzystującej architekturę Spring. Aplikacja składa się z jednego

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych

Bardziej szczegółowo

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca 2009. Norbert Potocki db4o

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca 2009. Norbert Potocki db4o Wprowadzenie - podstawy - technikalia Przydatne wiadomości Wprowadzenie 1 czerwca 2009 Wprowadzenie - podstawy - technikalia Przydatne wiadomości Wprowadzenie = bjects = database for objects w pełni obiektowa

Bardziej szczegółowo

Programowanie poprzez testy z wykorzystaniem JUnit

Programowanie poprzez testy z wykorzystaniem JUnit Programowanie poprzez testy z wykorzystaniem JUnit Programowanie ekstremalne (XP) XP zaproponowano w 1999 (K. Beck: Extreme Programming Explained ) XP dedykowane jest do projektów: O małym lub średnim

Bardziej szczegółowo

Programowanie w języku Java WYKŁAD

Programowanie w języku Java WYKŁAD Programowanie w języku Java WYKŁAD dr inż. Piotr Zabawa Certyfikowany Konsultant IBM/Rational e-mail: pzabawa@pk.edu.pl www: http://www.pk.edu.pl/~pzabawa 26.05.2014 WYKŁAD 13 Refleksja Data Access Object

Bardziej szczegółowo

akademia androida Składowanie danych część VI

akademia androida Składowanie danych część VI akademia androida Składowanie danych część VI agenda 1. SharedPreferences. 2. Pamięć wewnętrzna i karta SD. 3. Pliki w katalogach /res/raw i /res/xml. 4. Baza danych SQLite. 5. Zadanie. 1. SharedPreferences.

Bardziej szczegółowo

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7 Instrukcja 7 Laboratoria 9, 10 Opracowanie diagramów sekwencji dla wybranych przypadków użycia reprezentujących usługi oprogramowania wynikających również z wykonanych diagramów czynności; definicja operacji

Bardziej szczegółowo

Aplikacje WWW - laboratorium

Aplikacje WWW - laboratorium Aplikacje WWW - laboratorium JavaServer Faces Celem ćwiczenia jest przygotowanie aplikacji internetowej z wykorzystaniem technologii JSF. Prezentowane ćwiczenia zostały wykonane w środowisku Oracle JDeveloper

Bardziej szczegółowo

Db4o obiektowa baza danych wersja.net

Db4o obiektowa baza danych wersja.net Wstęp Db4o obiektowa baza danych wersja.net Db4o (database for objects) to obiektowa baza danych na platformę Java i.net. Pełna wersja bazy db4o jest dostępna na dwóch licencjach: open source: pozwala

Bardziej szczegółowo

Programowanie w Ruby

Programowanie w Ruby Programowanie w Ruby Wykład 13 Marcin Młotkowski 16 stycznia 2013 Plan wykładu Testowanie aplikacji w Ruby on Rails Testowanie modeli Testy funkcjonalne: testowanie kontrolerów Testy integracyjne Testowanie

Bardziej szczegółowo

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 2

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 2 Modelowanie i analiza systemów informatycznych 1. Warstwowa budowa systemów informatycznych 2. Model procesu wytwarzania oprogramowania - model cyklu życia oprogramowania 3. Wstęp do modelowania systemów

Bardziej szczegółowo

Aplikacje internetowe i rozproszone - laboratorium

Aplikacje internetowe i rozproszone - laboratorium Aplikacje internetowe i rozproszone - laboratorium Enterprise JavaBeans (EJB) Celem tego zestawu ćwiczeń jest zapoznanie z technologią EJB w wersji 3.0, a w szczególności: implementacja komponentów sesyjnych,

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia. Wprowadzenie teoretyczne.

Bardziej szczegółowo

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji src/ - folder zawiera cały kod PHP aplikacji

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji src/ - folder zawiera cały kod PHP aplikacji Baza danych i ORM Projekt zestaw usług dostępnych pod daną domeną. Aplikacja niezależnie działające programy/serwisy (w obrębie pojektu). Zwyczajowo projekt posiada dwie aplikacje: Frontend Backend Moduł

Bardziej szczegółowo

xmlns:prism=http://www.codeplex.com/prism c. <ContentControl prism:regionmanager.regionname="mainregion" />

xmlns:prism=http://www.codeplex.com/prism c. <ContentControl prism:regionmanager.regionname=mainregion /> 1 Tworzenie Shella a. W pierwszej kolejności tworzymy nowy projekt: WPF Application. Name: Shell SolutionName: PrismApp b. Dodajemy bibliotekę PRISM za pomocą NuGet Managera (dla.net Framework 4.5 Prism

Bardziej szczegółowo

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław 9.06.2015 r.

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław 9.06.2015 r. Bazy danych dla producenta mebli tapicerowanych Bartosz Janiak Marcin Sikora Wrocław 9.06.2015 r. Założenia Stworzyć system bazodanowy dla małej firmy produkującej meble tapicerowane. Projekt ma umożliwić

Bardziej szczegółowo

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Ćwiczenie 1. Kolejki IBM Message Queue (MQ) Ćwiczenie 1. Kolejki IBM Message Queue (MQ) 1. Przygotowanie Przed rozpoczęciem pracy, należy uruchomić "Kreator przygotowania WebSphere MQ" oraz przejść przez wszystkie kroki kreatora, na końcu zaznaczając

Bardziej szczegółowo

Dokument Detaliczny Projektu Temat: Księgarnia On-line Bukstor

Dokument Detaliczny Projektu Temat: Księgarnia On-line Bukstor Koszalin, 15.06.2012 r. Dokument Detaliczny Projektu Temat: Księgarnia On-line Bukstor Zespół projektowy: Daniel Czyczyn-Egird Wojciech Gołuchowski Michał Durkowski Kamil Gawroński Prowadzący: Dr inż.

Bardziej szczegółowo

Programowanie wielowarstwowe i komponentowe

Programowanie wielowarstwowe i komponentowe Programowanie wielowarstwowe i komponentowe JSF 2 wprowadzenie Konfiguracja Eclipse - dodanie szablonu XHTML dla potrzeb JSF 1. Otwórz menu Window/Preferences. Następnie z drzewka wybierz Web/HTML Files/Editor/Templates.

Bardziej szczegółowo