Költségnyilvántartó
keretrendszer
.NET alapon
Konzulens: Asztalos Márk
Tartalom
• Specifikáció
 Funkciók
 Architektúra
• Felhasznált technológiák
• Megvalósítás
 Adatbázis
 Szolgáltatás
 Kliens alkalmazások
 Mobil kliens
 Web kliens
• Összefoglalás
 Továbbfejlesztési lehetőségek
2014.06.16.TrajberBarna
2
Specifikáció
• Felhasználók kezelése
 Egyszerű felhasználó
 Adminisztrátor
• Tranzakciók
 Összeg, Valuta, Típus, Dátum, Kategória, [Fizetőeszköz, Megj., Helyszín]
• Fizetési kategóriák
 Bevétel (jövedelem, …)
 Kiadás (élelem, ruházat, egészség, …)
 Semleges (ajándék, …)
• Fizetőeszközök
 Kp., bankkártya, hitelkártya, egyéb
• Kimutatás
 Kategóriák szerint
 Bevétel/kiadás szerint
• Valuta konvertálás
2014.06.16.TrajberBarna
3
Specifikáció - Architektúra
2014.06.16.TrajberBarna
4
https://openexchangerates.org/
RESTful szolgáltatás, JSON adatok:
{
"timestamp": 1319730758,
"base": "USD",
"rates": {
"AED": 3.672626,
"AFN": 48.3775,
"ALL": 110.223333,
"AMD": 409.604993,
/* 160 fx rates available */
"ZMK": 4954.411262,
"ZWL": 322.355011
}
}
Felhasznált technológiák
• Adatbázis
 MSSQL
• Szolgáltatás
 WCF
• Kliens alkalmazások
 Mobil kliens: Windows Phone 8
 Csomagok:
 PropertyChanged.Fody
 Windows Phone Toolkit
 AppBar Utils
 Coding4Fun Toolkit
 Web kliens: ASP.NET MVC 4
 Bootstrap
 Telerik Kendo UI
2014.06.16.TrajberBarna
5
Megvalósítás - Adatbázis
2014.06.16.TrajberBarna
6
Megvalósítás - Szolgáltatás
2014.06.16.TrajberBarna
7
• WCF szolgáltatás
 IIS host-olt
 BasicHTTPBinding kötés a végpontok között
 Mobil klienseknek kedvez (WP8, iOS, Android)
• Megvalósítja az üzleti logikát
 Adatbázis kontextus
 Külön projektben
 Adatbázis Code First technikával létrehozva
 Lazy loading kikapcsolva (WCF miatt)
 Interfész
 ServiceContract (ExpenseService.svc van kiajánlva a klienseknek)
 Parciális interfészek funkciók szerint csoportosítva
 Implementáció
 Interfész megvalósítása parciális fájlokban
 OperationContract metódusok
 Egyedi visszatérési típusokhoz DataContract-ok létrehozása
 Adatbázis műveletek
 LinQ to Entities lekérdezések
 1 adatbázis kontextus  Dispose minta szerint szabadul fel
Megvalósítás – Mobil kliens
2014.06.16.TrajberBarna
8
• Windows Phone 8 platform
• MVVM minta alkalmazása
 ViewModel-ek némelyike PropertyChanged.Fody használatával
• Felület METRO elveknek megfelelően
• Egyéni grafikus komponens (vezérlő) a kimutatáshoz
 Silverlight/WPF kompatibilis
• Felhasználó kezelés
 Megjegyzi a belépett felhasználót
 Isolated Storage-ban tárolja a sikeresen bejelentkezett felhasználó adatait
• Egyedi funkciók
 Új tranzakció felvételekor
 Helymeghatározás (opc.)
 Fotó készítés (opc.)
 Lokalizáció (angol/magyar)
 Valós időben
 LocalizedStrings osztály
 Hozzáférést biztosít a név-érték párokban megadott erőforrásokhoz (fordításokhoz)
 Kibővítve, hogy implementálja az INotifyPropertyChanged interfészt
Mobil kliens
2014.06.16.TrajberBarna
9
Panoráma főoldal
Bejelentkezés – Jelszó emlékeztető
2014.06.16.TrajberBarna
10
Kimutatás Valuta átváltás Tranzakció részletei Új kategória
felvétele (admin)
Megvalósítás – Web kliens
2014.06.16.TrajberBarna
11
• ASP.NET MVC 4 keretrendszer alapokon
• Modell (Model)
 Szolgáltatás biztosítja
• Felület (View)
 HTML5
 HTML helperek
 LocalStorage használata
 Reszponzív design
 Bootstrap és Kendo UI támogatással
 AJAX-osan betöltődő parciális nézetek
• Vezérlők (Controllers)
 BaseController  a többi Controller őse
 Felhasználó adatainak tárolása
 Jogosultság kezelés
 Kérések előtt ellenőrzi, hogy be vagyunk-e lépve
 OnActionExecuting override (IActionFilter)
 Többi vezérlő kommunikál a szolgáltatással és kiszolgálja a nézeteket
• Felhasználó kezelés
 Típusos Session kezeléssel
Web kliens
2014.06.16.TrajberBarna
12
Főoldal
2014.06.16.TrajberBarna
13
Kimutatások
2014.06.16.TrajberBarna
14
Új tranzakció Tranzakció áttekintő
Valuta konvertálás
Új kategória (admin)Kategóriák
Összefoglalás
2014.06.16.TrajberBarna
15
• Elért eredmények
 Kapcsolódó .NET technológiák megismerése
 Adatbázis kialakítása
 Stabil WCF szolgáltatás
 Platform független
 Kliensek (ASP.NET MVC, WP8)
 Letisztult, átlátható felület
 Újabb kliensekkel bővíthető (pl. Java, iOS, Android)
 Valóban használható költségnyilvántartó keretrendszer jött létre
• Továbbfejlesztési lehetőségek
 Megnövelt biztonság
 Optimalizáció
 Mobil hálózati forgalom csökkentése
 Új funkciók
 Ismétlődő tételek
 Hatékonyabb vállalati támogatás
 Részletesebb szűrési lehetőségek
 Másfajta kimutatások
2014.06.16.TrajberBarna
16
Köszönöm a figyelmet!
Kérdések
• Biztonság?
 Jelenleg BasicHttpBinding WCF kötés a szolgáltatás és kliensek között
 Windows Phone 8 kliens csak ezt támogatja
 HTTP és HTTPS felett
 Text és MTOM kódolás
 WsHttpBinding
 Jobb lenne, mert alapértelmezetten titkosított SOAP üzenetek
 WS-* támogatás: WS-Addressing, WS-Security and WS-ReliableMessaging
 WP8 kliens nem támogatja
 Megoldás
 Felhasználók védelme: Jelszó MD5 hash-elten kerül a szerverhez
 Biztonság növelése
 HTTPS végpontok (kliens és szerver is)
 Biztonságos BasicHttpBinding használat
 TransportWithMessageCredentials biztonsági opció bekapcsolása a WCF
konfigurációban
 Kliens oldali titkosítás (tranzakciók és felhasználói adatok)
2014.06.16.TrajberBarna
17
Kérdések
• Hogyan működik kisvállalati környezetben a költségnyilvántartás? Van
lehetőség mondjuk cég szinten összegezni a havi költségeket?
 Céges felhasználói fiók
 Kimutatás szűrési lehetőségek: minden tétel mutatása, évenkénti, havi, heti, napi
tételek
 Web kliens: kör és oszlopdiagram a kategóriánként csoportosítva
 Mobil kliens: kördiagram kategóriánként csoportosítva
 Hatékonyabb vállalati támogatáshoz
 Új felhasználói szintek (alkalmazott, főnök)
 Lekérdezhető és összesíthető legyen az alkalmazottak által bevitt tétel
 Ügyfelek szerinti csoportosítás
2014.06.16.TrajberBarna
18
Kérdések
• Értékesítés?
 Főleg technológiai ismerekedés, tanulás céljából készült
 Mobil kliens Windows Phone Store-ba?
 Sikeresebb értékesítéshez
 Új funkciók: ismétlődő tételek, együttműködő fiókok
 Megnövelt biztonság
 Hálózati forgalom optimalizálás (mobil kliensnél fontos)
2014.06.16.TrajberBarna
19

SimpleXpense-prezi

  • 1.
  • 2.
    Tartalom • Specifikáció  Funkciók Architektúra • Felhasznált technológiák • Megvalósítás  Adatbázis  Szolgáltatás  Kliens alkalmazások  Mobil kliens  Web kliens • Összefoglalás  Továbbfejlesztési lehetőségek 2014.06.16.TrajberBarna 2
  • 3.
    Specifikáció • Felhasználók kezelése Egyszerű felhasználó  Adminisztrátor • Tranzakciók  Összeg, Valuta, Típus, Dátum, Kategória, [Fizetőeszköz, Megj., Helyszín] • Fizetési kategóriák  Bevétel (jövedelem, …)  Kiadás (élelem, ruházat, egészség, …)  Semleges (ajándék, …) • Fizetőeszközök  Kp., bankkártya, hitelkártya, egyéb • Kimutatás  Kategóriák szerint  Bevétel/kiadás szerint • Valuta konvertálás 2014.06.16.TrajberBarna 3
  • 4.
    Specifikáció - Architektúra 2014.06.16.TrajberBarna 4 https://openexchangerates.org/ RESTfulszolgáltatás, JSON adatok: { "timestamp": 1319730758, "base": "USD", "rates": { "AED": 3.672626, "AFN": 48.3775, "ALL": 110.223333, "AMD": 409.604993, /* 160 fx rates available */ "ZMK": 4954.411262, "ZWL": 322.355011 } }
  • 5.
    Felhasznált technológiák • Adatbázis MSSQL • Szolgáltatás  WCF • Kliens alkalmazások  Mobil kliens: Windows Phone 8  Csomagok:  PropertyChanged.Fody  Windows Phone Toolkit  AppBar Utils  Coding4Fun Toolkit  Web kliens: ASP.NET MVC 4  Bootstrap  Telerik Kendo UI 2014.06.16.TrajberBarna 5
  • 6.
  • 7.
    Megvalósítás - Szolgáltatás 2014.06.16.TrajberBarna 7 •WCF szolgáltatás  IIS host-olt  BasicHTTPBinding kötés a végpontok között  Mobil klienseknek kedvez (WP8, iOS, Android) • Megvalósítja az üzleti logikát  Adatbázis kontextus  Külön projektben  Adatbázis Code First technikával létrehozva  Lazy loading kikapcsolva (WCF miatt)  Interfész  ServiceContract (ExpenseService.svc van kiajánlva a klienseknek)  Parciális interfészek funkciók szerint csoportosítva  Implementáció  Interfész megvalósítása parciális fájlokban  OperationContract metódusok  Egyedi visszatérési típusokhoz DataContract-ok létrehozása  Adatbázis műveletek  LinQ to Entities lekérdezések  1 adatbázis kontextus  Dispose minta szerint szabadul fel
  • 8.
    Megvalósítás – Mobilkliens 2014.06.16.TrajberBarna 8 • Windows Phone 8 platform • MVVM minta alkalmazása  ViewModel-ek némelyike PropertyChanged.Fody használatával • Felület METRO elveknek megfelelően • Egyéni grafikus komponens (vezérlő) a kimutatáshoz  Silverlight/WPF kompatibilis • Felhasználó kezelés  Megjegyzi a belépett felhasználót  Isolated Storage-ban tárolja a sikeresen bejelentkezett felhasználó adatait • Egyedi funkciók  Új tranzakció felvételekor  Helymeghatározás (opc.)  Fotó készítés (opc.)  Lokalizáció (angol/magyar)  Valós időben  LocalizedStrings osztály  Hozzáférést biztosít a név-érték párokban megadott erőforrásokhoz (fordításokhoz)  Kibővítve, hogy implementálja az INotifyPropertyChanged interfészt
  • 9.
  • 10.
    2014.06.16.TrajberBarna 10 Kimutatás Valuta átváltásTranzakció részletei Új kategória felvétele (admin)
  • 11.
    Megvalósítás – Webkliens 2014.06.16.TrajberBarna 11 • ASP.NET MVC 4 keretrendszer alapokon • Modell (Model)  Szolgáltatás biztosítja • Felület (View)  HTML5  HTML helperek  LocalStorage használata  Reszponzív design  Bootstrap és Kendo UI támogatással  AJAX-osan betöltődő parciális nézetek • Vezérlők (Controllers)  BaseController  a többi Controller őse  Felhasználó adatainak tárolása  Jogosultság kezelés  Kérések előtt ellenőrzi, hogy be vagyunk-e lépve  OnActionExecuting override (IActionFilter)  Többi vezérlő kommunikál a szolgáltatással és kiszolgálja a nézeteket • Felhasználó kezelés  Típusos Session kezeléssel
  • 12.
  • 13.
  • 14.
    2014.06.16.TrajberBarna 14 Új tranzakció Tranzakcióáttekintő Valuta konvertálás Új kategória (admin)Kategóriák
  • 15.
    Összefoglalás 2014.06.16.TrajberBarna 15 • Elért eredmények Kapcsolódó .NET technológiák megismerése  Adatbázis kialakítása  Stabil WCF szolgáltatás  Platform független  Kliensek (ASP.NET MVC, WP8)  Letisztult, átlátható felület  Újabb kliensekkel bővíthető (pl. Java, iOS, Android)  Valóban használható költségnyilvántartó keretrendszer jött létre • Továbbfejlesztési lehetőségek  Megnövelt biztonság  Optimalizáció  Mobil hálózati forgalom csökkentése  Új funkciók  Ismétlődő tételek  Hatékonyabb vállalati támogatás  Részletesebb szűrési lehetőségek  Másfajta kimutatások
  • 16.
  • 17.
    Kérdések • Biztonság?  JelenlegBasicHttpBinding WCF kötés a szolgáltatás és kliensek között  Windows Phone 8 kliens csak ezt támogatja  HTTP és HTTPS felett  Text és MTOM kódolás  WsHttpBinding  Jobb lenne, mert alapértelmezetten titkosított SOAP üzenetek  WS-* támogatás: WS-Addressing, WS-Security and WS-ReliableMessaging  WP8 kliens nem támogatja  Megoldás  Felhasználók védelme: Jelszó MD5 hash-elten kerül a szerverhez  Biztonság növelése  HTTPS végpontok (kliens és szerver is)  Biztonságos BasicHttpBinding használat  TransportWithMessageCredentials biztonsági opció bekapcsolása a WCF konfigurációban  Kliens oldali titkosítás (tranzakciók és felhasználói adatok) 2014.06.16.TrajberBarna 17
  • 18.
    Kérdések • Hogyan működikkisvállalati környezetben a költségnyilvántartás? Van lehetőség mondjuk cég szinten összegezni a havi költségeket?  Céges felhasználói fiók  Kimutatás szűrési lehetőségek: minden tétel mutatása, évenkénti, havi, heti, napi tételek  Web kliens: kör és oszlopdiagram a kategóriánként csoportosítva  Mobil kliens: kördiagram kategóriánként csoportosítva  Hatékonyabb vállalati támogatáshoz  Új felhasználói szintek (alkalmazott, főnök)  Lekérdezhető és összesíthető legyen az alkalmazottak által bevitt tétel  Ügyfelek szerinti csoportosítás 2014.06.16.TrajberBarna 18
  • 19.
    Kérdések • Értékesítés?  Főlegtechnológiai ismerekedés, tanulás céljából készült  Mobil kliens Windows Phone Store-ba?  Sikeresebb értékesítéshez  Új funkciók: ismétlődő tételek, együttműködő fiókok  Megnövelt biztonság  Hálózati forgalom optimalizálás (mobil kliensnél fontos) 2014.06.16.TrajberBarna 19

Editor's Notes

  • #7 Célszerűen a szolgáltatást futtató szerveren fut Code First technikával készült Kiinduló entitás: User A felhasználókhoz kapcsolódó legfontosabb entitások a tranzakciók és az ehhez kapcsolódó kiegészítő táblák Kategóriák 2 szinten (szülő – gyerek viszonyban) A felhasználók beállításait (nyelv, alapvaluta, valuta konvertálás) szintén adatbázisban tároljuk Ismétlődő tételek kezelése a jövőben
  • #8 Lazy loading helyett Eagerly és Explicitly loading
  • #11 Kimutatás: WP8Charting egyedi class library: Canvas-on jeleníti meg a kördiagramot Kategória felvétel és törlés csak admin-oknak Tranzakciók: kiadás/bevétel, opcionális fotó/helyszín/megjegyzés Helyszínválasztás: Bing térkép Valuták: openexchangerates forrásból
  • #12 Nem használtam az MVC authentikációs szolgáltatását Kliens oldali szkriptek nagy hangsúlyban
  • #16 Elsősorban otthoni felhasználóknak Kisebb vállalatoknak is hasznos lehet
  • #18 MTOM is a mechanism for transmitting large binary attachments with SOAP messages as raw bytes, allowing for smaller messages.