Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło
|
|
- Krzysztof Michalik
- 7 lat temu
- Przeglądów:
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 1 Wzorce Web Model View Controller Page Controller każda strona ma własny Front Controller jeden uniwersalny, Interpretujący komendy. Template
Bardziej szczegółowoWzorce 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ółowoProjektowanie 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ółowoPoznaj 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ółowoProjektowanie 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ółowoArchitektura 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ółowoASP.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ółowoWzorce 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ółowoInfrastruktura 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ółowo1 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ółowoMicrosoft.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ółowoASP.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ółowoBudowa 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ółowoWykł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ółowoWzorce 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ółowoMVC 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ółowoProgramowanie 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ółowoWprowadzenie 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ółowoMasterPage 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ółowoBudowa 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ółowoTechnologie 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ółowoASP.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ółowoProgramowanie 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ółowoTemat: 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ółowoProgramowanie 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ółowoLeszek 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ółowoProgramowanie 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ółowoProjektowanie 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ółowoPodstawy 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ółowoMicrosoft.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ółowoPrzygotowanie 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ółowoWarstwa 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ółowoGrzegorz 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ółowoLaboratorium 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ółowoDostę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ółowoProjektowanie 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
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ółowoWalidacja 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ółowoZrą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ółowoProjektowanie 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ółowoBudowa 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ółowoMateriał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ółowoRealizacja 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ółowoZaawansowane 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ółowoTworzenie 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ółowoDzisiejszy 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ółowoPodstawy 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ółowoInstrukcja 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ółowoTworzenie 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ółowoMetody 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ółowoPHP 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ółowoBaza 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ółowoZaawansowane 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ółowoAplikacja 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ółowoPolitechnika 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ółowoI.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ółowoapp/ - 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ółowoForum 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ółowoFragmenty 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ółowoInstrukcja 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ółowoREFERAT 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ółowoWzorce 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ółowoModelowanie 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ółowoAutomatyzacja 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ółowomylittlemvc 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ółowoAplikacje 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ółowoMicrosoft.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ółowoEwolucja 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ółowoRysunkowy 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ółowoHP 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ółowoJAX-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ółowoLaboratorium 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ółowoSTWORZENIE 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ółowoEkspert 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ółowoTechnologia 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ółowoProgramowanie 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ółowoZaawansowane 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ółowoProgramowanie 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ółowoWprowadzenie 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ółowoProgramowanie 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ółowoProgramowanie 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ółowoakademia 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ółowoLaboratorium 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ółowoAplikacje 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ółowoDb4o 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ółowoProgramowanie 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ółowoZofia 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ółowoAplikacje 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ółowoProgramowanie 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ółowoapp/ - 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ółowoxmlns: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ółowoBazy 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) 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ółowoDokument 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ółowoProgramowanie 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