Webes alkalmazások fejlesztése 9. előadás. Webszolgáltatások felhasználása (ASP.NET WebAPI)
|
|
- Natália Szekeres
- 7 évvel ezelőtt
- Látták:
Átírás
1 Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 9. előadás Webszolgáltatások felhasználása (ASP.NET WebAPI) 2016 Giachetta Roberto
2 A webszolgáltatás A webszolgáltatások lehetővé teszik az alkalmazások közötti platformfüggetlen adatcserét a legelterjedtebb modell a REST (Representational State Transfer), amely HTTP protokoll segítségével biztosítja a kommunikációt a szolgáltató megvalósítható ASP.NET WebAPI alapon, a kliens tetszőleges alkalmazás lehet a műveletek nem csak primitív típusokat, de összetett, adatátviteli objektumokat (Data Transfer Object, DTO) is közölhetnek az objektumelvű adatok továbbítására legelterjedtebb a JSON (Javascript Object Notation) formátum ELTE IK, Webes alkalmazások fejlesztése 9:2
3 A kliens Az ASP.NET alapú webszolgáltatásokhoz fogyasztóként az ASP.NET WebAPI Client csomag segítségével férhetünk hozzá A HttpClient típus biztosítja a kapcsolatot HTTP alapú szolgáltatásokhoz mivel a hálózati kommunikáció időigényes, aszinkron függvények segítségével biztosítja a HTTP utasítások futtatását (GetAsync, PutAsync, ) az utasítások eredménye tartalmazza a választ (HttpResponseMessage) amennyiben a művelet sikeres (IsSuccessStatusCode), akkor feldolgozhatjuk a tartalmat (Content) ELTE IK, Webes alkalmazások fejlesztése 9:3
4 A kliens Pl.: using (HttpClient client = new HttpClient()) // kliens példányosítása { HttpResponseMessage response = await client.getasync(" "); // kérés aszinkron végrehajtása if (response.issuccessstatuscode) { HttpContent content = response.content; // tartalom feldolgozása } } // kliens megsemmisítése ELTE IK, Webes alkalmazások fejlesztése 9:4
5 A kliens adatkezelése A tartalom kezelése objektumorientált módon történik, az adattovábbítás formátumát a rendszer kezeli (ahogy az szolgáltató esetén is) az adatátviteli objektum átalakításának (szérializáció) és visszaalításának (deszérializáció) módja a HTTP fejlécinformációk szerint történik HttpClient GetAsync application/ json ApiController Get Deserialize { } Serialize ELTE IK, Webes alkalmazások fejlesztése 9:5
6 A kliens adatkezelése ehhez szükséges, hogy az adatátviteli objektum típusa a kliens és szerver oldalon is megegyezzen (pl. egyazon osztálykönyvtárból vannak meghivatkozva) olvasás esetén csak az adat típusát kell megadnunk, pl.: if (response.issuccessstatuscode) { Product myproduct = await response.content.readasasync<product>(); // tartalom feldolgozása } ugyanakkor lehetőségünk van a tartalmat szöveges (ReadAsStringAsync), vagy bináris formátumban (ReadAsByteArrayAsync), illetve adatfolyamként (ReadAsStreamAsync) kezelni ELTE IK, Webes alkalmazások fejlesztése 9:6
7 A kliens adatkezelése a szérializációt végző típus (MediaTypeFormatter) specializálható, így egyedi üzenetformátumok is kialakíthatóak amennyiben tartalmat is küldünk (pl. POST, DELETE), megadhatjuk annak formátumát, pl.: client.postasync(" ", product, new JsonMediaTypeFormatter()); // az adatot JSON formátumra szérializálja megadhatjuk annak formátumát, pl.: vagy közvetlenül a megfelelő formátumú adatküldést is hívhatjuk, pl.: client.postasjsonasync(" ", product); // az adatot JSON formátumra szérializálja ELTE IK, Webes alkalmazások fejlesztése 9:7
8 A kliens konfigurációja A kliensben konfigurálható a címek előtagja (BaseAddress), a kommunikáció időkorlátja (Timeout), az elküldött üzenetek fejlécének tulajdonságai (DefaultRequestHeaders), és azon belül a tartalom formátuma (DefaultRequestHeaders.Accept), pl.: client.defaultrequestheaders.accept.clear(); client.defaultrequestheaders.accept.add( new MediaTypeWithQualityHeaderValue( "application/json")); // a kliens csak a JSON formátumot fogadja el ELTE IK, Webes alkalmazások fejlesztése 9:8
9 Alapvető adatkezelési műveletek A szolgáltatás sok esetben alapvető adatkezelési műveleteket biztosít, ezek a CRUD műveletek létrehozás (Create), olvasás (Read), módosítás (Update), törlés (Delete) a műveleteknek adott a HTTP megfelelője (létrehozás: POST, olvasás: GET, módosítás: PUT, törlés: DELETE) a válasz kódja létrehozás esetén CREATED (201), többi művelet esetén OK (200), vagy NO CONTENT (204) amennyiben a művelet nem azonnal hajtódik végre, ACCEPTED (202) állapotot jelezhetünk egy RESTful szolgáltatásban a műveleteknek ehhez a sémához kell alkalmazkodnia ELTE IK, Webes alkalmazások fejlesztése 9:9
10 Kliens oldali adatkezelés A kliens oldali adatkezelést kétféleképpen valósíthatjuk meg: szinkron módon: a kliens és a szerver állapota mindig megegyezik aszinkron módon: a kliens és a szerver állapota eltér, és manuálisan szinkronizálható (mentés, betöltés, frissítés) Az aszinkron adatkezelés előnyös, ha a változtatásainkat nem egyenként, hanem csoportosan szeretnénk elmenteni ehhez kliens oldalon követnünk kell a változásokat állapotjelzőkkel (flag), és megjelölnünk, milyen változtatásokat történtek az adatokon (új, módosított, törölt) ELTE IK, Webes alkalmazások fejlesztése 9:10
11 Példa Feladat: Valósítsuk meg az utazási ügynökség épületeit karbantartó asztali alkalmazást. a kliens egy WPF alkalmazás lesz (TravelAgency.Admin), amely egy WebAPI szolgáltatáshoz (TravelAgency.Service) fog csatlakozni a kliens alkalmazást MVVM architektúrában készítjük el, ahol a perzisztencia (TravelAgencyServicePersistence) biztosítja a hálózati kommunikációt az adatátvitelhez külön típust hozunk létre (BuiltingDTO), és egy külön osztálykönyvtárba helyezzük el (TravelAgency.Data), amely megosztásra kerül mindkét projekt számára ELTE IK, Webes alkalmazások fejlesztése 9:11
12 Példa Tervezés (architektúra): «WPF application» Admin «WebAPI application» Service «Class Library» Data ELTE IK, Webes alkalmazások fejlesztése 9:12
13 Példa Tervezés (szolgáltatás): a szolgáltatásban egy vezérlő (BuildingsController) biztosítja a CRUD műveleteket hozzáadásnál visszaküldjük a hozzáadott épületet módosításnál és törlésnél ellenőrizzük a kapott azonosítót Data::BuildingDTO «property» + CityId() :Int32 + Comment() :String + Features() :Int32? + Id() :Int32 + LocationX() :Double + LocationY() :Double + Name() :String + SeaDistance() :Int32 + ShoreId() :Int32? ApiController Controllers::BuildingsController - _entities :ITravelAgencyEntities + BuildingsController() + BuildingsController(ITravelAgencyEntities) - ~BuildingsController() + DeleteBuilding(Int32) :IHttpActionResult # Dispose(Boolean) :void + GetBuildingForCity(Int32) :IHttpActionResult + GetBuildings() :IHttpActionResult + PostBuilding(BuildingDTO) :IHttpActionResult + PutBuilding(BuildingDTO) :IHttpActionResult -_entities IDisposable «interface» Models:: ITravelAgencyEntities DbContext Models:: TravelAgencyEntities ELTE IK, Webes alkalmazások fejlesztése 9:13
14 Példa Tervezés (kliens): a kliens aszinkron adatkezelést biztosít, a modell (ITravelAgencyModel) felügyeli a kliensbeli állapotot állapotjelzőkkel (DataFlag), ez alapján tudjuk mentéskor a megfelelő műveletet elvégezni a perzisztencia (ITravelAgencyPersistence) feladata az adatok betöltése, mentése és konvertálása aszinkron műveletekkel az új épületeknek létrehozunk egy ideiglenes azonosítót (a megkülönböztetés végett), amely helyett a szerver visszaad egy végleges azonosítót ELTE IK, Webes alkalmazások fejlesztése 9:14
15 Példa Tervezés (kliens): «interface» Model::ITravelAgencyModel + CreateBuilding(BuildingDTO) :void + DeleteBuilding(BuildingDTO) :void + LoadAsync() :Task + SaveAsync() :Task + UpdateBuilding(BuildingDTO) :void «property» + Buildings() :IReadOnlyList<BuildingDTO> Exception PersistenceUnavailableException + PersistenceUnavailableException(String) + PersistenceUnavailableException(Exception) «interface» ITravelAgencyPersistence + CreateBuildingAsync(BuildingDTO) :Task<Boolean> + DeleteBuildingAsync(BuildingDTO) :Task<Boolean> + ReadBuildingsAsync() :Task<IEnumerable<BuildingDTO>> + UpdateBuildingAsync(BuildingDTO) :Task<Boolean> TravelAgencyModel TravelAgencyServicePersistence - _client :HttpClient ELTE IK, Webes alkalmazások fejlesztése 9:15
16 Példa Megvalósítás (TravelAgencyModel.cs): public async Task SaveAsync() { // az állapotjelzőnek megfelelő műveletet // végezzük el switch (_buildingflags[building]) { case DataFlag.Create: result = await _persistence.createbuildingasync(building); break; case DataFlag.Delete: } ELTE IK, Webes alkalmazások fejlesztése 9:16
17 Példa Megvalósítás (TravelAgencyPersistence.cs): public async Task<Boolean> CreateBuildingAsync( ){ HttpResponseMessage response = await _client.postasjsonasync("api/buildings/", building); // az értékeket azonnal JSON formátumra // alakítjuk building.id = (await response.content.readasasync<buildingdto>()).id; // a válaszüzenetben megkapjuk a végleges // azonosítót } ELTE IK, Webes alkalmazások fejlesztése 9:17
18 Adatkonverzió Az adatkötés során lehetőségünk van átalakítani (konvertálni) az adatot a megjelenítés és a kötött tartalom között vannak alapértelmezett átalakítások (pl. szöveg/szám) alkalmazhatunk egyedi konverziót (az IValueConverter interfész megvalósításával) cél (címke) függőségi tulajdonság (felirat) adatkötés forrás (szövegdoboz) tulajdonság (szöveg) konverzió ELTE IK, Webes alkalmazások fejlesztése 9:18
19 Adatkonverzió Az IValueConverter interfész biztosítja a Convert és ConvertBack műveleteket, amelyek elvégzik a transzformációt az átalakítás paraméterezhető (ConverterParameter) figyelembe veszi a nyelvi környezetet (ConverterCulture) cél Convert ConvertBack forrás A konverziót a kötésnél adjuk meg, általában erőforrásból betöltve: {Binding Path=, Converter=, ConverterParameter=, ConverterCulture= } ELTE IK, Webes alkalmazások fejlesztése 9:19
20 Adatkonverzió Pl.: class StringToIntConverter : IValueConverter // egyszerű szám-szöveg átalakító { public object Convert(object value, ){ return value.tostring(); } // átalakítás szöveggé } public object ConvertBack(object value, ){ return Convert.ToInt32(value); } // átalakítás számmá ELTE IK, Webes alkalmazások fejlesztése 9:20
21 Adatkonverzió Pl.: <Window xmlns:local="clr-namespace:myapp"> <Window.Resources> <local:stringtointconverter x:key="converter" /> <! az átalakító, mint erőforrás --> </Window.Resources> <TextBox Text="{Binding Path=, Converter={StaticResource converter} }" /> <!-- szövegdoboz, amely az adatkötéshez felhasználja az átalakítót --> ELTE IK, Webes alkalmazások fejlesztése 9:21
22 Adatkonverzió hibakezelése Az átalakítás során hiba léphet fel (pl. a megadott szöveg nem konvertálható számmá), amelyet megfelelően kell kezelnünk a konvertáláskor nem keletkezhet kivétel amennyiben a cél értékét nem tudjuk létrehozni (a Convert műveletben), akkor jelezzük, hogy nem kell végrehajtani a kötést (Binding.DoNothing) amennyiben a forrás tulajdonságot nem tudjuk beállítani (a ConvertBack műveletben), akkor visszaadjuk a beállítatlan függőségi értéket (DependencyProperty.UnsetValue) a beállítási hiba azonnal jelentkezik a felületen is (alapértelmezetten piros keretben) ELTE IK, Webes alkalmazások fejlesztése 9:22
23 Adatkonverzió hibakezelése Pl.: class StringToIntConverter : IValueConverter // egyszerű szám-szöveg átalakító { public object ConvertBack(object value, ){ try { return Convert.ToInt32(value); } catch { // elfogjuk a kivételt return DependencyProperty.UnsetValue; } // jelezzük a sikertelen beállítást } // átalakítás számmá } ELTE IK, Webes alkalmazások fejlesztése 9:23
24 Ellenőrzések adatkonverzióval A hibakezeléssel egybekötött átalakító használható ellenőrzések végrehajtására is nem is szükséges konvertálnia a tartalmat, csupán ellenőrzi az adat meglétét, formátumát Pl.: class CheckConverter : IValueConverter // formátum ellenőrző átalakító { public object Convert (object value, ){ return value; } // nem végzünk semmilyen átalakítást ELTE IK, Webes alkalmazások fejlesztése 9:24
25 Ellenőrzések adatkonverzióval } public object ConvertBack(object value, ){ if (value == Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA- Z]\.)+[a-zA-Z]{2,9})$")){ // ha nem egyezik az formátum // reguláris kifejezésével return DependecyObject.UnsetValue; // akkor jelezzük a hibát } return value; // különben nem csinálunk semmit } ELTE IK, Webes alkalmazások fejlesztése 9:25
26 Többszörös kötés és konverzió Lehetőségünk van egy függőségi tulajdonságra több tulajdonságot is kötni (MultiBinding) több egyszerű kötés (Binding) gyűjteménye csak megfelelő konverzióval (IMultiValueConverter) jeleníthetőek meg az adatok tömbként fogadja (a kötés sorrendjében) az adatokat, és ugyanebben a sorrendben kell visszaadnia függőségi tulajdonság többszörös adatkötés konverzió tulajdonság tulajdonság ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 9:26
27 Többszörös kötés és konverzió Pl.: <TextBlock> <TextBlock.Text> <!-- szöveg összetett megadása --> <MultiBinding Converter=" "> <!-- többszörös kötés átalakítóval --> <Binding Path=" " /> <Binding Path=" " /> <!-- tetszőleges sok kötést adunk meg --> </MultiBinding> </TextBlock.Text> </TextBlock> ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 9:27
28 Többszörös kötés és konverzió Pl.: class MyMultiConverter : IMultiValueConverter { public object Convert(object[] values, ){ // egy tömbben kapjuk meg az értékeket, a // megadott kötések sorrendjében } public object[] ConvertBack(object value, ){ // egy tömbben szolgáltatjuk vissza az // eredményt, ismét a megadott sorrendben } } ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 9:28
29 Példa Feladat: Valósítsuk meg az utazási ügynökség épületeit karbantartó asztali alkalmazást. a jobb megjelenítés érdekében használjunk adatkonverziót a kliens oldalán, szükség lesz: a tengerpart távolság átalakítására (SeaDistanceConverter) a tengerpart típus átalakítására (ShorteTypeConverter) a jellemzők átalakítására (FeatureConverter, FeatureDisplayConverter) módosítjuk az adatátviteli típust (BuildingDTO) is, hogy az kifejezőbb legyen a megjelenítés számára, és felveszünk két további segédtípust (CityDTO, FeatureDTO) ELTE IK, Webes alkalmazások fejlesztése 9:29
30 Példa Tervezés (adatátvitel): BuildingDTO + BuildingDTO() + Equals(Object) :Boolean «property» + Id() :Int32 + Name() :String + City() :CityDTO + SeaDistance() :Int32 + ShoreId() :Int32? + Features() :FeatureDTO[] + LocationX() :Double + LocationY() :Double + Comment() :String CityDTO + Equals(Object) :Boolean + ToString() :String «property» + Id() :Int32 + Name() :String FeatureDTO + Convert(Int32?) :FeatureDTO[] + Convert(FeatureDTO[]) :Int32? «property» + Id() :Int32 + IsAvailable() :Boolean ELTE IK, Webes alkalmazások fejlesztése 9:30
31 Példa Tervezés (kliens): IValueConverter ViewModel::ShoreTypeConverter IValueConverter ViewModel::FeatureDisplayConverter IValueConverter ViewModel::SeaDistanceConverter IValueConverter ViewModel::FeatureConverter - _model :ITravelAgencyModel - _view :MainWindow - _viewmodel :MainViewModel App Application + App() - App_Startup(object, StartupEventArgs) :void - ViewModel_ExitApplication(object, System.EventArgs) :void - ViewModel_MessageApplication(object, MessageEventArgs) :void -_model «interface» Model::ITravelAgencyModel Window View::MainWindow -_view -_model -_viewmodel ViewModel::MainViewModel - _buildings :ObservableCollection<BuildingDTO> - _cities :ObservableCollection<CityDTO> - _currentbuilding :BuildingDTO - _isloaded :Boolean - _model :ITravelAgencyModel - _selectedindex :Int32 ViewModelBase + MainViewModel(ITravelAgencyModel) - OnExitApplication() :void - OnMessageApplication(String) :void «property» + Buildings() :ObservableCollection<BuildingDTO> + Cities() :ObservableCollection<CityDTO> + CreateBuildingCommand() :DelegateCommand + CurrentBuilding() :BuildingDTO + DeleteBuildingCommand() :DelegateCommand + ExitCommand() :DelegateCommand + IsLoaded() :Boolean + LoadCommand() :DelegateCommand + SaveCommand() :DelegateCommand + SelectedIndex() :Int32 + UpdateBuildingCommand() :DelegateCommand «event» + ExitApplication() :EventHandler + MessageApplication() :EventHandler<MessageEventArgs> ELTE IK, Webes alkalmazások fejlesztése 9:31
32 Példa Megvalósítás (ShoreTypeConverter.cs): public Object Convert(Object value, ) { // ellenőrizzük az értéket // ellenőrizzük a paramétert List<String> shorenames = (parameter as IEnumerable<String>).ToList(); Int32 index = (Int32)value; if (index < 0 index >= shorenames.count) return Binding.DoNothing; } return shorenames[index]; ELTE IK, Webes alkalmazások fejlesztése 9:32
33 Példa Megvalósítás (MainWindow.xaml): <x:array x:key="shoretypearray"> <system:string>homokos</system:string> </x:array> <viewmodel:shoretypeconverter x:key="shoretypeconverter" /> <DataGridTextColumn Header="Tengerpart" Binding="{Binding ShoreId, Converter={StaticResource shoretypeconverter}, ConverterParameter={StaticResource shoretypearray}}" /> ELTE IK, Webes alkalmazások fejlesztése 9:33
34 Adatok titkosítása memóriában A teljes biztonsághoz a memóriában lévő kényes tartalmat is titkosítani kell, mivel az is potenciális támadási felület lehetőség szerint csak a feldolgozás időtartamára szerepeljen titkosítatlan információ a memóriában, egyébként kódolva tároljuk Szövegek titkosított kezelésére szolgál a SecureString típus, amely alapvetően titkosítva tárolja a jelszót, és csak lekéréskor (ToString) dekódolja a grafikus felületen a jelszavak titkosított bekérését a PasswordBox biztosítja, a Password tulajdonság feloldja a titkosítást (amely nem függőségi tulajdonság, így nem köthető) ELTE IK, Webes alkalmazások fejlesztése 9:34
35 Adatok titkosítása memóriában Pl.: <Button Content="Bejelentkezés" Command="{Binding LoginCommand}" CommandParameter="{Binding ElementName=passwordBox}" /> <!-- magát a jelszóbekérőt adjuk át --> LoginCommand = new DelegateCommand(param => { _model.login(username, (param as PasswordBox).Password); // kiolvassuk a titkosított jelszót } ELTE IK, Webes alkalmazások fejlesztése 9:35
36 Adatok betöltése az adatbázisba A szolgáltatás adatbázis struktúrája és adatait létrehozhatónak kód segítségével (Entity Framework Code First) adatok betöltéséhez engedélyeznünk kell adatmigrációt a NuGet csomagkezelő konzolban (enable-migrations), ezzel automatikusan létrejön egy betöltő függvény (Configuration.Seed), amely a paraméterben megadott adatbázisba (context) feltölti az adatokat az ASP.NET Identity (EF) adatbázis is kód alapú, így a felhasználók és csoportok létrehozhatóak ezzel a módszerrel mivel a migrációs eszköz osztályokra keres, mindenképpen szükséges az IdentityContext származtatása ELTE IK, Webes alkalmazások fejlesztése 9:36
37 Adatok betöltése az adatbázisba Pl.: internal sealed class Configuration : { protected override void Seed(MyDbContext context) { // adatbázis feltöltése adatokkal context.customer.add(new Customer { Name = "John Doe" }); context.savechanges(); } ELTE IK, Webes alkalmazások fejlesztése 9:37
38 Példa Feladat: Valósítsuk meg az utazási ügynökség épületeit karbantartó asztali alkalmazást. adjunk lehetőséget képek megtekintésére, hozzáadására, törlésére a képet fájlból töltjük be, majd átméretezzük (kis és nagy méretben, PNG formátumban) a képeket egyedi azonosítóval látjuk el, valamint az épület azonosítójával a biztonság növelésére az adatkezelést authentikációhoz kötjük (ASP.NET Identity segítségével), így a felhasználónak előbb be kell jelentkezniük az alkalmazásba ELTE IK, Webes alkalmazások fejlesztése 9:38
39 Példa Tervezés: létrehozunk egy vezérlőt (BuildingImageController), valamint egy adatátviteli típust (ImageDTO) a képkezeléshez a képeket alapvetően byte tömbként kezeljük, a szolgáltatás nem is ismeri azok képi tartalmát a képbetöltést egy segédtípusban (ImageHandler) végezzük a képek megjelenítéséhez átalakítást végzünk (BuildingImageConverter), ami BitmapImage típusra alakítja a tömböt, ezeket Image vezérlővel jelenítjük meg külön nézetbe szervezzük az épület adatainak megadását (BuldingEditorWindow) ELTE IK, Webes alkalmazások fejlesztése 9:39
40 Példa Tervezés: létrehozunk egy vezérlőt a felhasználó-kezeléshez (AccountController), ebben lehetőséget adunk bejelentkezésre (Login) és kijelentkezésre (Logout) a szolgáltatásban attribútum (Authorize) segítségével korlátozzuk az akciófüggvényekhez való hozzáférést (csak a rendszergazda csoportban lévő felhasználókra) kliens oldalon megjelenik a két új művelet a modellben (LoginAsync, LogoutAsync) a bejelentkezéshez egy külön nézetet (LoginWindow), valamint nézetmodellt (LoginViewModel) hozunk létre ELTE IK, Webes alkalmazások fejlesztése 9:40
41 Példa Tervezés (szolgáltatás): IDisposable «interface» Models::ITravelAgencyEntities -_entities ApiController BuildingsController ApiController CitiesController AccountController ApiController - _usermanager :UserManager<IdentityUser> - _rolemanager :RoleManager<IdentityRole> + AccountController() - ~AccountController() + Login(String, String) :IHttpActionResult + Logout() :IHttpActionResult # Dispose(Boolean) :void ApiController BuildingImagesController - _entities :ITravelAgencyEntities + BuildingImagesController() + BuildingImagesController(ITravelAgencyEntities) - ~BuildingImagesController() + GetImages(Int32) :IHttpActionResult + GetImage(Int32) :IHttpActionResult + PostImage(ImageDTO) :IHttpActionResult + DeleteImage(Int32) :IHttpActionResult # Dispose(Boolean) :void ELTE IK, Webes alkalmazások fejlesztése 9:41
42 Példa Tervezés (kliens): ViewModelBase ViewModel::MainViewModel - _buildings :ObservableCollection<BuildingDTO> - _cities :ObservableCollection<CityDTO> - _isloaded :Boolean - _model :ITravelAgencyModel - _selectedbuilding :BuildingDTO - CancelChanges() :void - DeleteBuilding(BuildingDTO) :void - DeleteImage(ImageDTO) :void - LoadAsync() :void + MainViewModel(ITravelAgencyModel) - Model_BuildingChanged(object, BuildingEventArgs) :void - OnBuildingEditingFinished() :void - OnBuildingEditingStarted() :void - OnExitApplication() :void - OnImageEditingStarted(Int32) :void - SaveAsync() :void - SaveChanges() :void - UpdateBuilding(BuildingDTO) :void «event» + BuildingEditingFinished() :EventHandler + BuildingEditingStarted() :EventHandler + ExitApplication() :EventHandler + ImageEditingStarted() :EventHandler<BuildingEventArgs> «property» + Buildings() :ObservableCollection<BuildingDTO> + CancelChangesCommand() :DelegateCommand + Cities() :ObservableCollection<CityDTO> + CreateBuildingCommand() :DelegateCommand + CreateImageCommand() :DelegateCommand + DeleteBuildingCommand() :DelegateCommand + DeleteImageCommand() :DelegateCommand + EditedBuilding() :BuildingDTO + ExitCommand() :DelegateCommand + IsLoaded() :Boolean + LoadCommand() :DelegateCommand + SaveChangesCommand() :DelegateCommand + SaveCommand() :DelegateCommand + SelectedBuilding() :BuildingDTO + UpdateBuildingCommand() :DelegateCommand -_mainviewmodel App - _editorview :BuildingEditorWindow - _loginview :LoginWindow - _loginviewmodel :LoginViewModel - _mainview :MainWindow - _mainviewmodel :MainViewModel - _model :ITravelAgencyModel ViewModel::ImageHandler + OpenAndResize(String, Int32) :Byte[] Application + App() + App_Exit(object, ExitEventArgs) :void - App_Startup(object, StartupEventArgs) :void - MainViewModel_BuildingEditingFinished(object, EventArgs) :void - MainViewModel_BuildingEditingStarted(object, EventArgs) :void - MainViewModel_ImageEditingStarted(object, BuildingEventArgs) :void - ViewModel_ExitApplication(object, System.EventArgs) :void - ViewModel_LoginFailed(object, EventArgs) :void - ViewModel_LoginSuccess(object, EventArgs) :void - ViewModel_MessageApplication(object, MessageEventArgs) :void -_loginview -_loginviewmodel Window View::LoginWindow ViewModelBase ViewModel::LoginViewModel - _model :ITravelAgencyModel - LoginAsync(PasswordBox) :void + LoginViewModel(ITravelAgencyModel) - OnExitApplication() :void - OnLoginFailed() :void - OnLoginSuccess() :void «event» + ExitApplication() :EventHandler + LoginFailed() :EventHandler + LoginSuccess() :EventHandler «property» + ExitCommand() :DelegateCommand + LoginCommand() :DelegateCommand + UserName() :String ELTE IK, Webes alkalmazások fejlesztése 9:42
43 Példa Tervezés (kliens): Model::TravelAgencyModel - _buildingflags :Dictionary<BuildingDTO, DataFlag> - _buildings :List<BuildingDTO> - _cities :List<CityDTO> - _imageflags :Dictionary<ImageDTO, DataFlag> - _persistence :ITravelAgencyPersistence + CreateBuilding(BuildingDTO) :void + CreateImage(Int32, Byte[], Byte[]) :void + DeleteBuilding(BuildingDTO) :void + DeleteImage(ImageDTO) :void + LoadAsync() :Task + LoginAsync(String, String) :Task<Boolean> + LogoutAsync() :Task<Boolean> - OnBuildingChanged(Int32) :void + SaveAsync() :Task + TravelAgencyModel(ITravelAgencyPersistence) + UpdateBuilding(BuildingDTO) :void «event» + BuildingChanged() :EventHandler<BuildingEventArgs> «property» + Buildings() :IReadOnlyList<BuildingDTO> + Cities() :IReadOnlyList<CityDTO> + IsUserLoggedIn() :Boolean -_persistence «interface» Persistence::ITravelAgencyPersistence Persistence::TravelAgencyServicePersistence - _client :HttpClient + CreateBuildingAsync(BuildingDTO) :Task<Boolean> + CreateBuildingImageAsync(ImageDTO) :Task<Boolean> + DeleteBuildingAsync(BuildingDTO) :Task<Boolean> + DeleteBuildingImageAsync(ImageDTO) :Task<Boolean> + LoginAsync(String, String) :Task<Boolean> + LogoutAsync() :Task<Boolean> + ReadBuildingsAsync() :Task<IEnumerable<BuildingDTO>> + ReadCitiesAsync() :Task<IEnumerable<CityDTO>> + TravelAgencyServicePersistence(String) + UpdateBuildingAsync(BuildingDTO) :Task<Boolean> ELTE IK, Webes alkalmazások fejlesztése 9:43
44 Példa Megvalósítás (BuildingImagesController.cs): [Authorize(Roles = "administrator")] // csak bejelentkezett adminisztrátoroknak public IHttpActionResult PostImage([FromBody] ImageDTO image) { _entities.savechanges(); return Created(Request.RequestUri + image.id.tostring(), image.id); // csak az azonosítót küldjük vissza } ELTE IK, Webes alkalmazások fejlesztése 9:44
45 Példa Megvalósítás (ImageHandler.cs): public static Byte[] OpenAndResize(String path, Int32 height) { BitmapImage image = new BitmapImage(); // kép betöltése image.begininit(); image.urisource = new Uri(path); image.decodepixelheight = height; // megadott méretre image.endinit(); ELTE IK, Webes alkalmazások fejlesztése 9:45
46 Példa Megvalósítás (ImageHandler.cs): PngBitmapEncoder encoder = new PngBitmapEncoder(); // átalakítás PNG formátumra encoder.frames.add(bitmapframe.create(image)); } using (MemoryStream stream = new MemoryStream()) // átalakítás byte-tömbre { encoder.save(stream); return stream.toarray(); } ELTE IK, Webes alkalmazások fejlesztése 9:46
Webes alkalmazások fejlesztése 9. előadás. Webszolgáltatások felhasználása (ASP.NET Core &.NET Framework)
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 9. előadás Webszolgáltatások felhasználása (ASP.NET Core &.NET Framework) Cserép Máté mcserep@inf.elte.hu http://mcserep.web.elte.hu
RészletesebbenWebes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 8. előadás (ASP.NET WebAPI) 2016 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto A webszolgáltatás
RészletesebbenWebes alkalmazások fejlesztése 14. fejezet. Szolgáltatások adatkezelése (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 14. fejezet Szolgáltatások adatkezelése (WCF) Giachetta Roberto A jegyzet az ELTE Informatikai Karának 2016. évi jegyzetpályázatának
RészletesebbenWebes alkalmazások fejlesztése 7. előadás. Autentikáció és autorizáció (ASP.NET Core) Cserép Máté
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 7. előadás Autentikáció és autorizáció (ASP.NET Core) Cserép Máté mcserep@inf.elte.hu http://mcserep.web.elte.hu Autentikáció
RészletesebbenWebes alkalmazások fejlesztése 7. előadás. Autentikáció és autorizáció (ASP.NET)
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 7. előadás Autentikáció és autorizáció (ASP.NET) 2016 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
RészletesebbenWebes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 8. előadás Webszolgáltatások megvalósítása (ASP.NET WebAPI) 2016 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
RészletesebbenWebes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET Core) Cserép Máté
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 4. előadás Megjelenítés és tartalomkezelés (ASP.NET Core) Cserép Máté mcserep@inf.elte.hu http://mcserep.web.elte.hu Nézetek
RészletesebbenWebes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET)
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 4. előadás (ASP.NET) 2016 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Nézetek kezelése Sok esetben
RészletesebbenWebes alkalmazások fejlesztése 10. előadás. Webszolgáltatások tesztelése (ASP.NET Core) Cserép Máté
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 10. előadás Webszolgáltatások tesztelése (ASP.NET Core) Cserép Máté mcserep@inf.elte.hu http://mcserep.web.elte.hu Tesztelés
RészletesebbenWebes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET) Cserép Máté.
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 4. előadás (ASP.NET) Cserép Máté mcserep@inf.elte.hu http://mcserep.web.elte.hu Készült Giachetta Roberto jegyzete alapján
RészletesebbenEseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto
Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése II 12. előadás Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto A jegyzet az ELTE Informatikai Karának 2014.
RészletesebbenWebes alkalmazások fejlesztése 12. fejezet. Szolgáltatás alapú kommunikáció (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 12. fejezet Szolgáltatás alapú kommunikáció (WCF) Giachetta Roberto A jegyzet az ELTE Informatikai Karának 2016. évi jegyzetpályázatának
RészletesebbenEseményvezérelt alkalmazások fejlesztése II 8. előadás. Összetett WPF alkalmazások. Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar
Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése II 8. előadás Összetett WPF alkalmazások Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
RészletesebbenAPI tervezése mobil környezetbe. gyakorlat
API tervezése mobil környezetbe gyakorlat Feladat Szenzoradatokat gyűjtő rendszer Mobil klienssel Webes adminisztrációs felület API felhasználói Szenzor node Egyirányú adatküldés Kis számítási kapacitás
RészletesebbenSzerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22
Szerializáció Tóth Zsolt Miskolci Egyetem 2014 Tóth Zsolt (Miskolci Egyetem) Szerializáció 2014 1 / 22 Tartalomjegyzék 1 Szerializációs Alapfogalmak 2 Szerializációs Megoldások Object Szerializáció XML
RészletesebbenWebes alkalmazások fejlesztése 10. előadás. Szolgáltatás alapú rendszerek megvalósítása (ASP.NET WebAPI) Cserép Máté
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 10. előadás Szolgáltatás alapú rendszerek megvalósítása (ASP.NET WebAPI) Cserép Máté mcserep@inf.elte.hu http://mcserep.web.elte.hu
RészletesebbenWebes alkalmazások fejlesztése 3. előadás. Objektumrelációs adatkezelés (ASP.NET)
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 3. előadás Objektumrelációs adatkezelés (ASP.NET) 2016 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
RészletesebbenWebes alkalmazások fejlesztése 6. előadás. Állapotfenntartás (ASP.NET) 2015 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 6. előadás Állapotfenntartás (ASP.NET) 2015 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto A HTTP
RészletesebbenWCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens
WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens Hozzunk létre egy ASP.NET Empty Web Site projektet! A projekt neve legyen WCFAPP1. Ez
RészletesebbenWebes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése Bevezetés Célkitűzés, tematika, követelmények A.NET Core keretrendszer Cserép Máté mcserep@inf.elte.hu http://mcserep.web.elte.hu
Részletesebben2. Beadandó feladat dokumentáció
2. Beadandó feladat dokumentáció Készítette: Giachetta Roberto E-mail: groberto@inf.elte.hu Feladat: Készítsünk egy Sudoku játékprogramot. A Sudoku egy olyan 9 9-es táblázat, amelyet úgy kell a 0-9 számjegyekkel
RészletesebbenWebes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése Célkitűzés, tematika, követelmények A.NET Core keretrendszer Cserép Máté mcserep@inf.elte.hu http://mcserep.web.elte.hu Célkitűzés
RészletesebbenCREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )
Célok: a Java DB adatbázis-kezelő rendszer használatának ismertetése, adatbázisok használata Java alkalmazásokban - kétrétegű architektúra, egyszerű kliens-szerver architektúra használata hálózati alkalmazásokhoz.
Részletesebben2. Beadandó feladat dokumentáció
2. Beadandó feladat dokumentáció Készítette: Giachetta Roberto E-mail: groberto@inf.elte.hu Feladat: Készítsünk egy Sudoku játékprogramot. A Sudoku egy olyan 9 9-es táblázat, amelyet úgy kell a 0-9 számjegyekkel
RészletesebbenEseményvezérelt alkalmazások fejlesztése II 5. előadás. Windows Forms alkalmazások párhuzamosítása. Giachetta Roberto
Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése II 5. előadás Windows Forms alkalmazások párhuzamosítása Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
RészletesebbenSymfony kurzus 2014/2015 I. félév. Security: authentication, authorization, user provider, role-ok, access control, FOS user bundle
Symfony kurzus 2014/2015 I. félév Security: authentication, authorization, user provider, role-ok, access control, FOS user bundle Authen'ca'on Ez még csak azt dönti el, hogy a rendszer által azonosítóható-e
Részletesebben1. beadandó feladat dokumentáció
. beadandó feladat dokumentáció Készítette: Speeder Feladat: Készítsünk egy blogkezelő honlapot, amelyen a felhasználók saját blogokat vezethetnek. A weblap rendelkezzen az alábbi funkciókkal: A főoldalon
Részletesebben3. Beadandó feladat dokumentáció
3. Beadandó feladat dokumentáció Készítette: Giachetta Roberto E-mail: groberto@inf.elte.hu Feladat: Készítsünk adatbázis alapú, grafikus felületű alkalmazást egy apartmanokkal foglalkozó utazási ügynökség
RészletesebbenJava Programozás 11. Ea: MVC modell
Java Programozás 11. Ea: MVC modell 20/1 B ITv: MAN 2018.03.02 MVC Model-View-Controller A modell-nézet-vezérlő a szoftvertervezésben használatos szerkezeti minta. Az MVC célja elválasztani az üzleti logikát
RészletesebbenModels are not right or wrong; they are more or less useful.
Eötvös Loránd Tudományegyetem Informatikai Kar Szoftvertechnológia 8. előadás Models are not right or wrong; they are more or less useful. (Martin Fowler) 2015 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
RészletesebbenWebes alkalmazások fejlesztése 1. előadás. Webes alkalmazások és biztonságuk
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 1. előadás Webes alkalmazások és biztonságuk 2014.02.10. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
RészletesebbenC# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem
C# nyelv alapjai Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem Objektumorientált programozás C# alapokon tananyag Tartalom Bevezetés Lokális változó Utasítások Szójáték Why do all real
RészletesebbenAdatbázisok webalkalmazásokban
Sapientia - EMTE, Pannon Forrás,,Egységes erdélyi felnőttképzés a Kárpát-medencei hálózatban 2010 A JDBC API A Data Access Object tervezési minta Adatforrás - DataSource JDBC architektúra A JDBC API java.sql
RészletesebbenOOP és UML Áttekintés
OOP és UML Áttekintés Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) OOP és UML Áttekintés 2013 1 / 32 Tartalom jegyzék 1 OOP Osztály Öröklődés Interfész, Absztrakt Osztály Kivétel kezelés
RészletesebbenWebes alkalmazások fejlesztése 3. előadás. Objektumrelációs adatkezelés (Entity Framework) Cserép Máté
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 3. előadás Objektumrelációs adatkezelés (Entity Framework) Cserép Máté mcserep@inf.elte.hu http://mcserep.web.elte.hu Microsoft
Részletesebben3. Beadandó feladat dokumentáció
3. Beadandó feladat dokumentáció Készítette: Hallgató Harald E-mail: haha@inf.elte.hu Feladat: Készítsünk egy Sudoku játékprogramot. A Sudoku egy olyan 9 9-es táblázat, amelyet úgy kell a 0-9 számjegyekkel
RészletesebbenAdabáziselérés ODBC-n keresztül utasításokkal C#-ban
Adabáziselérés ODBC-n keresztül utasításokkal C#-ban 1. Előkészítés Access adatbázis lemásolása, ODBC DSN létrehozása Másoljuk le az alábbiakat: Mit Honnan Hova list.mdb p:\johanyák Csaba\Vizualis programozas\data\
RészletesebbenWebes alkalmazások fejlesztése 6. előadás. Állapotfenntartás (ASP.NET) Állapotfenntartás. Állapotfenntartás. Állapotfenntartás.
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 6. előadás (ASP.NET) 2015 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto A HTTP protokoll A HTTP
RészletesebbenWebes alkalmazások fejlesztése 6. előadás. Állapotfenntartás (ASP.NET Core) Cserép Máté
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 6. előadás Állapotfenntartás (ASP.NET Core) Cserép Máté mcserep@inf.elte.hu http://mcserep.web.elte.hu A HTTP protokoll A HTTP
RészletesebbenJava. Perzisztencia. ANTAL Margit. Java Persistence API. Object Relational Mapping. Perzisztencia. Entity components. ANTAL Margit.
Sapientia - EMTE 2008 Az előadás célja JPA - - perzisztencia ORM - - Objektumrelációs leképzés - Entitásbabok Állandóság Mechanizmus amely során az alkalmazás adatai megőrzésre kerülnek valamely perzisztens
RészletesebbenJava Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor
Java Programozás 4. Gy: Java GUI Tipper, MVC kalkulátor 15/1 B ITv: MAN 2018.03.10 1. Feladat: Tipper Készítsük el a tippelős programunk grafikus változatát. Az üzleti logika kódja megvan, a felület pedig
RészletesebbenC# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18
C# Nyelvi Elemei Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei 2013 1 / 18 Tartalomjegyzék 1 Object 2 Típusok 3 String 4 RegEx Tóth Zsolt (Miskolci Egyetem) C# Nyelvi
RészletesebbenMobil Telefonon Keresztüli Felügyelet Felhasználói Kézikönyv
Mobil Telefonon Keresztüli Felügyelet Felhasználói Kézikönyv Tartalomjegyzék 1. Symbian rendszer...2 1.1 Funkciók és követelmények...2 1.2 Telepítés és használat...2 2. Windows Mobile rendszer...6 2.1
Részletesebben1. ábra Fájl feltöltése 2. ábra Megtekintés
Áttekintés A feladat során egy User control-t (felhasználói vezérlőt) készítünk. A bekért adatok ellenőrzéséhez Validátor vezérlőket használunk. Megismerjük a következő összetett vezérlőket FileUpload,
RészletesebbenWebes alkalmazások fejlesztése 6. előadás. Állapotfenntartás (ASP.NET) Cserép Máté.
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 6. előadás (ASP.NET) Cserép Máté mcserep@inf.elte.hu http://mcserep.web.elte.hu Készült Giachetta Roberto jegyzete alapján
RészletesebbenWebes alkalmazások fejlesztése 6. előadás. Állapotfenntartás (ASP.NET) 2015 Giachetta Roberto
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 6. előadás Állapotfenntartás (ASP.NET) 2015 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto A HTTP
RészletesebbenWebes alkalmazások fejlesztése
Webes alkalmazások fejlesztése 3. gyakorlat Authentikáció, adatok feltöltése Szabó Tamás (sztrabi@inf.elte.hu) - sztrabi.web.elte.hu Authentikáció Manapság már elvárás, hogy a felhasználó regisztrálni
RészletesebbenAccess adatbázis elérése OLE DB-n keresztül
Access adatbázis elérése OLE DB-n keresztül Készítsünk egy grafikus felülető alkalmazást, ami lehetıvé teszi egy Access adatbázisban tárolt hallgatói adatok (EHA, Név, e-mail cím) lekérdezését (összes
RészletesebbenWebes alkalmazások fejlesztése 2. előadás. Webfejlesztés MVC architektúrában (ASP.NET) Webfejlesztés MVC architektúrában Fejlesztés ASP.
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 2. előadás Webfejlesztés MVC architektúrában (ASP.NET) 2015 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
RészletesebbenEseményvezérelt alkalmazások fejlesztése II 4. előadás. Windows Forms alkalmazások architektúrája és tesztelése
Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése II 4. előadás Windows Forms alkalmazások architektúrája és tesztelése 2015 Giachetta Roberto groberto@inf.elte.hu
RészletesebbenObjektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN
Objektum Orientált Programozás 11. Kivételkezelés 44/1B IT MAN B IT v: 2016.05.03 MAN Pici elmélet A Java kivételkezelésének célja a programfutás során keletkezett hibák kiszűrése és megfelelő kezelése.
RészletesebbenBevezető. Servlet alapgondolatok
A Java servlet technológia Fabók Zsolt Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Utolsó módosítás: 2008. 03. 06. Servlet Bevezető Igény a dinamikus WEB tartalmakra Előzmény: CGI Sokáig
RészletesebbenBánsághi Anna anna.bansaghi@mamikon.net. 2015 Bánsághi Anna 1 of 31
ESEMÉNYVEZÉRELT PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 5. ELŐADÁS - ABLAKOK, ERŐFORRÁSOK 2015 Bánsághi Anna 1 of 31 TEMATIKA I. C# áttekintés II. WPF 2015 Bánsághi Anna 2 of 31 II. WPF 1.
RészletesebbenWebszolgáltatások (WS)
Webszolgáltatások (WS) Webszolgáltatások fogalma IBM (lényege) Egy interface, mely a hálózaton keresztül szabványos XML üzenetekkel érhető el és hozzá formálsi XML leírás tartozik. (soap, wsdl) Sun Szoftverelemek,
RészletesebbenSzoftvertechnológia 8. előadás. Szoftverrendszerek tervezése. Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar
Eötvös Loránd Tudományegyetem Informatikai Kar Szoftvertechnológia 8. előadás Szoftverrendszerek tervezése Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Models are not right
RészletesebbenEseményvezérelt alkalmazások fejlesztése I 11. előadás. Szoftverek tesztelése
Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése I 11. előadás Szoftverek tesztelése 2014 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
RészletesebbenOOP #14 (referencia-elv)
OOP #14 (referencia-elv) v1.0 2003.03.19. 21:22:00 Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj. e-mail: aroan@ektf.hu web: http://aries.ektf.hu/~aroan OOP OOP_14-1 - E jegyzet
RészletesebbenWebes alkalmazások fejlesztése. Bevezetés az ASP.NET MVC 5 keretrendszerbe
Webes alkalmazások fejlesztése Bevezetés az ASP.NET MVC 5 keretrendszerbe ASP.NET MVC Framework 2009-ben jelent meg az első verziója, azóta folyamatosan fejlesztik Nyílt forráskódú Microsoft technológia
RészletesebbenObjektumorientált programozás C# nyelven
Objektumorientált programozás C# nyelven 3. rész Tulajdonságok Indexelık Kivételkezelés Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendı anyag vázlatát
RészletesebbenObjektumorientált programozás C# nyelven
Objektumorientált programozás C# nyelven 3. rész Tulajdonságok Indexelők Kivételkezelés Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát
RészletesebbenMVC. Model View Controller
MVC Model View Controller Szoftver fejlesztés régen Console-based alkalmazások Pure HTML weboldalak Assembly, C Tipikusan kevés fejlesztő (Johm Carmack Wolfenstein, Doom, Quake..) Szűkös erőforrások optimális
RészletesebbenElőszó... 13. 1. A Windows alkalmazásfejlesztés rövid története... 15. A Windows életútja... 15 A Windows 8 paradigmaváltása... 16
Előszó... 13 1. A Windows alkalmazásfejlesztés rövid története... 15 A Windows életútja... 15 A Windows 8 paradigmaváltása... 16 A Microsoft megteszi az első lépéseket a fogyasztók felé... 17 A Windows
RészletesebbenWebes alkalmazások fejlesztése 2. előadás. Webfejlesztés MVC architektúrában (ASP.NET Core) Cserép Máté
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 2. előadás Webfejlesztés MVC architektúrában (ASP.NET Core) Cserép Máté mcserep@inf.elte.hu http://mcserep.web.elte.hu Fejlesztés
RészletesebbenModels are not right or wrong; they are more or less useful.
Eötvös Loránd Tudományegyetem Informatikai Kar Szoftvertechnológia 8. előadás Models are not right or wrong; they are more or less useful. (Martin Fowler) Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
RészletesebbenTartalomjegyzék 2. RENDSZER FELÉPÍTÉSE... 3
Tartalomjegyzék 1. BEVEZETŐ... 2 2. RENDSZER FELÉPÍTÉSE... 3 2.1. FELÜLET... 3 2.2. FELHASZNÁLÓI FUNKCIÓK... 4 2.2.1. Modulok... 4 2.2.2. Előzmények... 4 2.2.3. Lekérdezés működése, beállítások... 5 2.2.4.
RészletesebbenC#, OOP. Osztályok tervezése C#-ban
C#, OOP Osztályok tervezése C#-ban OOP Létrehozás (creating) Megszüntetés (destroying) Túlterhelés (overlading) Felsorolás típus (enumerated types) 2 Hajó osztály Sailboat class using System; class Sailboat
RészletesebbenKROMESCH SÁNDOR APP FELHŐ. API-k és Webszolgáltatások a Cloudban. Magyarországi Web Konferencia November 8.
KROMESCH SÁNDOR APP FELHŐ API-k és Webszolgáltatások a Cloudban Magyarországi Web Konferencia 2014 - November 8. Kiindulás: Mobil eszközök 1/2 Mobil eszközök 1. Hordozhatók 2. Könnyen kezelhetők 3. Limitált
RészletesebbenProgramozás II. labor
Programozás II. labor 1. rész Programozási tételek Öröklődés Interfészek Eseménykezelés Kivételkezelés Visszalépéses keresés Programozás II. Programozási tételek OOP alapok ismétlése Öröklődés Öröklődés
RészletesebbenWEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK
WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK Horváth Győző Egyetemi adjunktus 1117 Budapest, Pázmány Péter sétány 1/C, 2.420 Tel: (1) 372-2500/1816 2 Ismétlés Ismétlés 3 Fájl/Adatbázis 3 4 Szerver 2 CGI
RészletesebbenTartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés
Tartalom D Szoftvertechnológia elıadás Architektúra D vs CORBA Példá 2 1987 Dynamic Data Exchange (DDE) Windows 2.0-ban Windows alkalmazások közötti adatcsere Ma is használatos (pl. vágólap) NetDDE NetBIOS
RészletesebbenOOP: Java 8.Gy: Abstract osztályok, interfészek
OOP: Java 8.Gy: Abstract osztályok, interfészek 26/1 B ITv: MAN 2019.04.03 Abszrakt metódus és absztrakt osztály. Gyakran előfordul a tervezés során, hogy egy osztály szintjén tudjuk, hogy valamilyen metódus
RészletesebbenEseményvezérelt alkalmazások fejlesztése II 10. előadás. Objektumrelációs adatkezelés (Entity Framework) Cserép Máté
Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése II 10. előadás (Entity Framework) Cserép Máté mcserep@inf.elte.hu http://mcserep.web.elte.hu Készült Giachetta Roberto
RészletesebbenProgramozás BMEKOKAA146. Dr. Bécsi Tamás 8. előadás
Programozás BMEKOKAA146 Dr. Bécsi Tamás 8. előadás Visszatekintés A Windows Console alkalmazások egy karakteres képernyőt biztosítottak, ahol a kimenet a kiírt szöveg, míg a bemenet a billentyűzet volt.
RészletesebbenSorosítás (szerializáció) és helyreállítás. 1. Bináris sorosítás és helyreállítás. 1.1. Szükséges névterek. 1.2. Attribútumok. 1.3.
Sorosítás (szerializáció) és helyreállítás Cél: a memóriában tárolt adatok egyszerű lemezre mentése és visszatöltése. A sorosítás során létrehozunk egy állományt és egy sorosítást kezelő objektumot. Ez
RészletesebbenWebes alkalmazások fejlesztése 3. előadás. Objektumrelációs adatkezelés (Entity Framework) Cserép Máté.
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 3. előadás Objektumrelációs adatkezelés (Entity Framework) Cserép Máté mcserep@inf.elte.hu http://mcserep.web.elte.hu Készült
RészletesebbenANDROID ALKALMAZÁSFEJLESZTÉS
ANDROID ALKALMAZÁSFEJLESZTÉS Adattárolás SharedPreference Belső - külső tároló PreferenceActivity Felhő alapú tárolás SQLite sicz.mj[tekercs]gmail.com Sicz-Mesziár János 2013. július 3. Shared Preference
RészletesebbenA Java EE 5 plattform
A Java EE 5 platform Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Utolsó módosítás: 2007. 11. 13. A Java EE 5 platform A Java EE 5 plattform A J2EE 1.4 után következő verzió. Alapvető továbbfejlesztési
RészletesebbenQBE Édes Otthon lakásbiztosítás tarifáló webservice. Fejlesztői dokumentáció 1.0.2
QBE Édes Otthon lakásbiztosítás tarifáló webservice Fejlesztői dokumentáció 1.0.2 Az ebben a dokumentumban található információ a FoxArt Kft. tulajdona, és bizalmas anyagként került átadásra. Az anyag
RészletesebbenProgramozás II. ATM példa Dr. Iványi Péter
Programozás II. ATM példa Dr. Iványi Péter 1 ATM gép ATM=Automated Teller Machine Pénzkiadó automata Kezelő szoftvert szeretnénk írni Objektum-orientált módon 2 Követelmények Egyszerre csak egy embert
RészletesebbenOverview. Service. Application Activity Activity 2 Activity 3. Fragment. Fragment. Fragment. Frag ment. Fragment. Broadcast Receiver
ANDROID ALKALMAZÁSFEJLESZTÉS Android komponensek használata Activity Fragment Service Broadcast Recevier sicz- m e s z i a r. j a n o s @ n i k. u n i - o b u d a. h u Sicz-Mesziár János 2015. március
RészletesebbenSzoftvertechnológia alapjai Java előadások
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz e-mail: fandrew@mit.bme.hu tárgy honlap: http://home.mit.bme.hu/~fandrew/szofttech_hu.html A mai előadás tartalma: Miért pont Java?
RészletesebbenHálózatkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Hálózatkezelés / 20
Hálózatkezelés Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) Hálózatkezelés 2013 1 / 20 Tartalomjegyzék 1 Hálózati Alapismeretek 2 System.Net Namespace 3 Socket Kezelés 4 Példa Tóth Zsolt
RészletesebbenSZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő PHP folytatás JDBC, ODBC
SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS A MySQL adatbáziskezelő PHP folytatás JDBC, ODBC ADATBÁZISOK Adatbázis = adott formátum és rendszer szerint tárolt adatok összessége. DBMS feladatai: adatstruktúra (adatbázisséma)
RészletesebbenJava VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07.
Java VI. Öröklődés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07. Java VI.: Öröklődés JAVA6 / 1 Egy kis kitérő: az UML UML: Unified Modelling Language Grafikus eszköz objektum
RészletesebbenGrafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez
Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez Székely István Debreceni Egyetem, Informatikai Intézet A rendszer felépítése szerver a komponenseket szolgáltatja Java nyelvű implementáció
RészletesebbenProgramozási nyelvek Java
Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 13. előadás Throwable Error Exception RuntimeException IOException Saját (általában) Nem ellenörzött kivételek (Unchecked
Részletesebben2011.11.29. JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése
Tartalom Integrált fejlesztés Java platformon JUnit JUnit használata Tesztelési technikák Demo 2 A specifikáció alapján teszteljük a program egyes részeit, klasszikus V-modell szerint Minden olyan metódust,
Részletesebbenwebalkalmazások fejlesztése elosztott alapon
1 Nagy teljesítményű és magas rendelkezésreállású webalkalmazások fejlesztése elosztott alapon Nagy Péter Termékmenedzser Agenda Java alkalmazás grid Coherence Topológiák Architektúrák
RészletesebbenWebes alkalmazások fejlesztése 2. előadás. Webfejlesztés MVC architektúrában (ASP.NET Core) Cserép Máté
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 2. előadás Webfejlesztés MVC architektúrában (ASP.NET Core) Cserép Máté mcserep@inf.elte.hu http://mcserep.web.elte.hu Fejlesztés
RészletesebbenInformatika terméktervezőknek
Informatika terméktervezőknek C# alapok Névterület (namespace) using Osztály (class) és Obejtumok Metódus (function, procedure, method) main() static void string[] arg Szintaxis // /* */ \n \t Névadások
RészletesebbenProgramozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar
Programozás I. 3. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 1 Primitív típusok Típus neve Érték Alap érték Foglalt tár Intervallum byte Előjeles egész 0 8 bit
RészletesebbenA gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.
Vizuális programozás 1. A gyakorlat célja A gyakorlat célja a Könyvtár alkalmazás folytatása az előző gyakorlaton elkészített grafikus felület felhasználásával. Elsőként lemásoljuk az előző gyakorlat eredményeként
RészletesebbenJNDI - alapok. Java Naming and Directory Interface
JNDI - alapok Java Naming and Directory Interface Naming Service Naming service: nevek hozzárendelése objektumokhoz, elérési lehetőség (objektumok/szolgáltatások lokalizálása), információk központosított
RészletesebbenJava. Java Message Service. ANTAL Margit. JMS API technológia. ANTAL Margit. Sapientia - EMTE
Sapientia - EMTE 2008 Az előadás célja Üzenetkommunikációs architektúrák JMS Példák Üzenet gyártó Szinkron üzenetfogyasztó Aszinkron üzenetfogyasztó Üzenetbab (message-driven bean) point-to-point modell:
RészletesebbenJohanyák Zsolt Csaba: Képnézegető program oktatási segédlet
1. Képnézegető program Készítsünk egy egyszerű képnézegető programot JPG képekhez. Az ablak függőlegesen két részre legyen osztva. Baloldalon egy listaablak jelenjen meg, amiben a fájlok nevei láthatók.
RészletesebbenModellező eszközök, kódgenerálás
Modellező eszközök, kódgenerálás Budapesti Műszaki és Gazdaságtudományi Egyetem Hibatűrő Rendszerek Kutatócsoport Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek
RészletesebbenVizuális és eseményvezérelt programozás , II. félév BMF NIK
Vizuális és eseményvezérelt programozás 2006 2007, II. félév BMF NIK Eseménykezelés A képviselő( delegate ) Képviselők C# nyelvi megvalósítása Metódushívás képviselőn keresztül Az esemény ( event ) Esemény
RészletesebbenMŰSZAKI DOKUMENTÁCIÓ. Aleph WebOPAC elérhetővé tétele okostelefonon. Eötvös József Főiskola 6500 Baja, Szegedi út 2.
Telefon: Fax: E-mail: (+36-1) 269-1642 (+36-1) 331 8479 info@ex-lh.hu www.ex-lh.hu Eötvös József Főiskola 6500 Baja, Szegedi út 2. MŰSZAKI DOKUMENTÁCIÓ Aleph WebOPAC elérhetővé tétele okostelefonon Pályázati
RészletesebbenBevezetés Működési elv AJAX keretrendszerek AJAX
AJAX Áttekintés Bevezetés Működési elv AJAX-ot támogató keretrendszerek Áttekintés Bevezetés Működési elv AJAX-ot támogató keretrendszerek Áttekintés Bevezetés Működési elv AJAX-ot támogató keretrendszerek
RészletesebbenEseményvezérelt alkalmazások fejlesztése II 5. előadás. Windows Forms alkalmazások párhuzamosítása. Cserép Máté
Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése II 5. előadás Windows Forms alkalmazások párhuzamosítása Cserép Máté mcserep@inf.elte.hu http://mcserep.web.elte.hu
Részletesebben