Www.mobile-developer-conference.de /mdc_conference | #mdc12 Tam HANNA Tamoggemon Limited Datenpersistenz mit Windows Phone 7.

Slides:



Advertisements
Ähnliche Präsentationen
Persistente Domänenmodelle mit JPA 2.0 und Bean Validation
Advertisements

M a r c – o l i v e r p a h l Informatik I – Kapitel 7 Klassen und höhere Datentypen Zusammenfassung des Kapitel 7 Küchlin, Weber, Einführung in die Informatik,
Klassen - Verkettete Liste -
Programmierung II Prof. Dr. Michael Löwe
Transaction Synchronization for XML Data in Client Server Web Applications Stefan Böttcher & Adelhard Türling Universität Paderborn.
Kurt Rosenberg. C# für.NET oder.NET für C# is(C# == C++ && Java)? true : false ; reines C# Ausblick Überblick.
Neue Mobilität Frank Prengel Developer Evangelist Developer Platform & Strategy Group Microsoft Deutschland GmbH
1. 2 Microsoft.NET Überblick Dirk Primbs Technologieberater Developer Platform & Strategy Group Microsoft Deutschland GmbH.
MySQL.
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik F Verteilte Software - Java.
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Dipl. Inf. (FH) Paul Mizel Compilerbau.NET Compiler / Codegeneratoren / Skriptsprachen.
Objektrelationales Mapping mit JPA Entity Mapping Jonas Bandi Simon Martinelli.
Java: Dynamische Datentypen
Listen Richard Göbel.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Installation des Add-In SOLVERSTAT
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 9 IO – Streams in Java Sommersemester 2003 Lars Bernard.
Dynamische Webseiten Java servlets.
3.1.4 Leser/Schreiber-Ausschluß (reader/writer exclusion)
F açade P attern By Nicolas Lanquetin. Façade Pattern Structural Pattern Bietet ein gemeinsames Interface, anstatt vieler Interfaces eines Subsystems.
Modulare Programmierung
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Programmierung im Netz und Internet: Einführung in die Programmiersprache Java Teil I 1 Klassen Objekte von.
Uwe Habermann Venelina Jordanova VFP Code in Silverlight Anwendungen ausführen.
WebCast: Managed Smart Tags mit VSTO Jens Häupel.NET Technologieberater Microsoft Deutschland GmbH
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Regular Verbs and “Sein”
Laurie Clarcq The purpose of language, used in communication, is to create a picture in the mind and/or the heart of another.
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 6 Folie 2 Routed Events s.a.
Fesselspiele Data Binding in WPF und Silverlight
Medien zwischen Technologie und Gesellschaft Dozent: Herr Prof. Dr. Manfred Thaller SS 13 Referent: Christian Braun.
OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt.
Automated Software Testing
Martin LöfflerMurat Yilmaz Labor Informationstechnologie.
| DC-IAP/SVC3 | © Bosch Rexroth Pneumatics GmbH This document, as well as the data, specifications and other information set forth in.
| Basel Von der SharePoint Taskliste zum gemanagten Project in Project Server Luca Argentiero Solution Specialist Microsoft
The free XML Editor for Windows COOKTOP Semistrukturierte Daten 1 Vortrag Semistrukturierte Daten 1 COOKTOP The free XML-Editor for Windows
Gameplay Systems I Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung SS 2012 Prof. Dr. phil. Manfred Thaller Referent: Christian Weitz.
ORMapper: NHibernate Henning Eiben
Entity Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Advanced Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Your name Bedeutung von Internet- Technologien Gruppe 1 Andreas Feuerstein Philipp Hochratner Christian Weinzinger.
Jan Hentschel Microsoft Expert Student Partner Windows Azure Windows Azure Windows Azure Mobile Services.
Neno Loje Berater & MVP für Visual Studio ALM und TFS (ehemals VSTS) Hochqualitative Produkte mit Visual Studio & TFS 2010.
Frank Fischer + Bernhard Frank Microsoft Deutschland GmbH.
HandsOn Cloud, Infrastruktur, Architektur, Solution Design SharePoint for Internet Sites: Erfahrung aus der Praxis.
3/28/2017 8:11 PM Visual Studio Tools für Office { Rapid Application Development für Office } Jens Häupel Platform Strategy Manager Microsoft Deutschland.
MVVM in Windows 8 und Windows Phone 8
PresenterCompanyContact Windows Azure ASP.NET Web-Anwendungen schnell und zuverlässig bereitstellen.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 5 Folie 2 ADO.NET s.a:
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 9 Folie 2 ADO.NET (1) Klassen für Zugriffe.
Uwe Habermann Venelina Jordanova Übernahme der Visual FoxPro Geschäftslogik.
You need to use your mouse to see this presentation © Heidi Behrens.
Parallel Programming Thread Synchronization. Heute 1. Lösung zu Assignment 2 2. Erstellen und Starten von Threads in Java 3. Das synchronized Schlüsselwort.
XML IV: Cocoon 2.
Equals, Hashcode und CompareTo Micha Kessler
Dynamische Datentypen
Softwaresponsoren Mediasponsoren. Vorstellung KnowledgeCenter Neue Sprachfeautres in VB 9.0 LINQ to SQL in der Praxis.
Making people work together! Folie 1 NEXPLORE AG Stefan von Niederhäusern Einfache Anwendung der SuisseID durch das Software Development KIT
© All rights reserved. Zend Technologies, Inc. Jenseits von var_dump(): Debugging in ZF Jan Burkl System Engineer.
Design Patterns Ein Muster (pattern) ist eine Idee, die sich in einem praktischen Kontext als nützlich erwiesen hat und dies auch in anderen sein wird.
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
Launch ON Global.vi System ID object name classname Services to suscribe Observer Control Ref vi-path Service name Step 1 : Objects register to the Global.vi´s,
SQL Server 2005 CLR Integration Sebastian Weber Microsoft Deutschland GmbH
Sprachneuerungen des .NET Frameworks 3.5
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
© Zühlke 2013 Romano Roth Workshop 6 (ws6C) native Entwicklung für mobile Geräte Lektion 5-6: Mega CRM 25. Februar 2013 Folie 1 von 10.
Folder checken Ratschläge (advice) für zukünftige (future) Schüler, wenn du die das letzte mal nicht gemacht hast (if you did not have time for this last.
Grundkurs Informatik 11-13
 Präsentation transkript:

/mdc_conference | #mdc12 Tam HANNA Tamoggemon Limited Datenpersistenz mit Windows Phone 7

/mdc_conference | #mdc12 Biographisches Tam HANNA –Gruender der Tamoggemon Ltd –Betreiber von Websites ueber Handhelds –Fachautor –Programmierer

/mdc_conference | #mdc12 Hoehepunkte Die Basics... und... Bilder ins Photoalbum speichern Dateien resusciieren LINQ to SQL Tieffliegende Schokolade

/mdc_conference | #mdc12 Von Dateisystemen

/mdc_conference | #mdc12 Die gute alte Zeit

/mdc_conference | #mdc12

/mdc_conference | #mdc12 Isolated Storage? Basis: echtes Dateisystem –KEINE Datenbank a la Palm OS Aber: jede App hat eigenen Arbeitsplatz

/mdc_conference | #mdc12 SD Card? Nur fuer OEMs gedacht –Diversifizierung des Portfolios OS verwaltet die Karte –Gibt nur Arbeitsverzeichnis frei

/mdc_conference | #mdc12 Isolated Storage Beispiel: MTPersistance1

/mdc_conference | #mdc12 Datei lesen private void CmdRead_Click(object sender, RoutedEventArgs e) { try { IsolatedStorageFile x = IsolatedStorageFile.GetUserStoreForApplication(); IsolatedStorageFileStream myStream = new IsolatedStorageFileStream("settings.tmgn", System.IO.FileMode.Open, x); StreamReader reader = new StreamReader(myStream); textBox1.Text = reader.ReadToEnd(); reader.Close(); }

/mdc_conference | #mdc12 Datei schreiben private void CmdStor_Click(object sender, RoutedEventArgs e) { try { IsolatedStorageFile x = IsolatedStorageFile.GetUserStoreForApplication(); //Create == Create OR Overwrite IsolatedStorageFileStream myStream = new IsolatedStorageFileStream("settings.tmgn", System.IO.FileMode.Create, x); StreamWriter writer = new StreamWriter(myStream); writer.Write(textBox1.Text); writer.Close(); }

/mdc_conference | #mdc12 Datei loeschen private void CmdDel_Click(object sender, RoutedEventArgs e) { try { IsolatedStorageFile x = IsolatedStorageFile.GetUserStoreForApplicatio n(); x.DeleteFile("settings.tmgn"); }

/mdc_conference | #mdc12 Diverses - I IsolatedStorageFile enthaelt: –CreateDirectory –DeleteDirectory –etcetc

/mdc_conference | #mdc12 Diverses - II Derzeit keine Quota fuer IS –Mindestspeicher am WP7 = 8GB –Ist aber geteilt (!!!) Geht bei Deinstallation verloren –Daten online speichern?

/mdc_conference | #mdc12 Isolated Preferences Beispiel: MTPersistance2

/mdc_conference | #mdc12 Was ist das? Zweiwege-Woerterbuch –Speichert Wert/Schluessel-Paare –Wert muss serialisierbar sein Automatische Persistierung Minimalloesung fuer Prefs

/mdc_conference | #mdc12 Instanz beschaffen using System.IO.IsolatedStorage; namespace MTPersistance2 { public partial class MainPage : PhoneApplicationPage { IsolatedStorageSettings mySettings; // Constructor public MainPage() { InitializeComponent(); mySettings = IsolatedStorageSettings.ApplicationSettings; }

/mdc_conference | #mdc12 Schluessel einschreiben private void CmdSave_Click(object sender, RoutedEventArgs e) { try { mySettings.Add("Textbox", textBox1.Text); } catch (ArgumentException ex) {//Wert schon da mySettings["Textbox"] = textBox1.Text; }

/mdc_conference | #mdc12 Schluessel lesen private void CmdRead_Click(object sender, RoutedEventArgs e) { try { textBox1.Text = (string)mySettings["Textbox"]; } catch (System.Collections.Generic.KeyNotFoundException ex) { MessageBox.Show(ex.Message); }

/mdc_conference | #mdc12 Schluessel loeschen private void CmdRem_Click(object sender, RoutedEventArgs e) { mySettings.Remove("Textbox"); }

/mdc_conference | #mdc12 States Beispiel: MTPersistance3

/mdc_conference | #mdc12 Was ist das? Zweiwege-Woerterbuch –Speichert Wert/Schluessel-Paare –Wert muss serialisierbar sein NUR fuer Tombstoning –Keine echte Persistierung

/mdc_conference | #mdc12 Wie bitte? Tombstoning –Oeffnen von Chooser –Druck auf Start Persistierung a la Palm OS Zwei Methoden in App.xaml.cs –IsApplicationInstancePreserved pruefen!

/mdc_conference | #mdc12 Wie bitte? // Code to execute when the application is activated (brought to foreground) // This code will not execute when the application is first launched private void Application_Activated(object sender, ActivatedEventArgs e) { } // Code to execute when the application is deactivated (sent to background) // This code will not execute when the application is closing private void Application_Deactivated(object sender, DeactivatedEventArgs e) { }

/mdc_conference | #mdc12 Mehr Grabsteine Problem: Daten auf Formularebene Loesung: Methoden auf Formularebene Problem zur Zweiten: back-button –Loesung ab 7.1

/mdc_conference | #mdc12 Code - I public partial class MainPage : PhoneApplicationPage { bool myIsNewPageInstance=false; // Constructor public MainPage() { InitializeComponent(); myIsNewPageInstance = true; }

/mdc_conference | #mdc12 Code - II protected override void OnNavigatedFrom(System.Windows.Navigation.Navig ationEventArgs e) { if (e.NavigationMode != System.Windows.Navigation.NavigationMode.Back) { State["Textbox"] = textBox1.Text; }

/mdc_conference | #mdc12 Code - III protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) { // Konstruktor aufgerufen? if (myIsNewPageInstance) { try { //Invokation erfolgt auch direkt nach Konstruktion. textBox1.Text = (string)State["Textbox"]; } catch (Exception ex) { } } myIsNewPageInstance = false; }

/mdc_conference | #mdc12 Debugging leicht gemacht

/mdc_conference | #mdc12 Eine Demo

/mdc_conference | #mdc12 Ein Helferlein Erleichtert die Persistierung von Controls –CheckBox / Radio button –List Box –PasswordBox / TextBox –Scroll viewer –Slider h ttp://tombstonehelper.codeplex.com/

/mdc_conference | #mdc12 SQL to go

/mdc_conference | #mdc12 Wie funktionierts

/mdc_conference | #mdc12 Wie funktionierts - II Objekteigenschaften -> Columns Objekte liegen in Tabellen Tabellen liegen in Datenbank

/mdc_conference | #mdc12 Wie funktionierts - III Bezug zueinander durch Schluessel

/mdc_conference | #mdc12 Persoenliche Meinung LINQ to SQL is evil –Ewige Bindung an Microsoft –Keine Skalierbarkeit –Keine Trennung der Concerns Aber: there is no bigger choice ;( –OS-Engines

/mdc_conference | #mdc12 Housekeeping

/mdc_conference | #mdc12 Die Datenklasse [Table] public class TamsClass { [Column(IsPrimaryKey = true, IsDbGenerated = true, DbType = "INT NOT NULL Identity", CanBeNull = false, AutoSync = AutoSync.OnInsert)] public int myItemId; [Column(IsVersion = true)] private System.Data.Linq.Binary _version; [Column] public string myItemName; [Column] public bool myIsComplete; }

/mdc_conference | #mdc12 Die Datenklasse - II Tag Table: –Dieses Objekt wird eine Tabelle –Klasse heisst entity class Tag Column –Dieses Attribut ist eine Tabellenspalte –IsPrimaryKey: Schluessel

/mdc_conference | #mdc12 Data Context - I public class TamsDataContext:DataContext { public string myConnStr; public TamsDataContext(string connStr) : base(connStr) { myConnStr = connStr; } public Table TamsClasses { get { return this.GetTable (); }

/mdc_conference | #mdc12 Data Context - II using System.Data.Linq; using System.Collections.Generic; using System.Linq;

/mdc_conference | #mdc12 Alle Elemente auslesen public IList GetItems() { List list = new List (); using (var db = new TamsDataContext(myConnStr)) { var query = from e in db.TamsClasses select e; list = query.ToList(); } return list; }

/mdc_conference | #mdc12 Element hinzufuegen public void AddSth(TamsClass _victim) { using (var db = new TamsDataContext(myConnStr)) { db.TamsClasses.InsertOnSubmit(_victim); db.SubmitChanges(); }

/mdc_conference | #mdc12 Datenbank erstellen public partial class MainPage : PhoneApplicationPage { TamsDataContext myTDC; public MainPage() { InitializeComponent(); myTDC = new TamsDataContext("Data Source=isostore:/TamsDB.sdf"); using (var db = myTDC) { if (!db.DatabaseExists()) db.CreateDatabase(); } IList myItems=myTDC.GetItems(); myItems = myItems; }

/mdc_conference | #mdc12 Ta-Da!

/mdc_conference | #mdc12 Daten als Ressourcen Datenbank von Haus aus bevoelkern Zwei Moeglichkeiten –Data as Code –Datenbankdatei

/mdc_conference | #mdc12 Daten als Ressourcen - II Datenbankdatei: 1.Hilfsapplikation generiert DB 2.ISETool.exe holt Datei aus IST 3.Als Ressource mitliefern (read-only!) 4.In Hauptapplikation umkopieren

/mdc_conference | #mdc12 Live Coding Beziehungen

/mdc_conference | #mdc12 Was realisieren wir?

/mdc_conference | #mdc12 Mehr Informationen LINQ to SQL kann sehr viel –Datenbank verschluesseln –Beziehungen abbilden –Aenderungen automatisch tracken Einfuehrung: 120p auf MSDN us/library/bb aspx

/mdc_conference | #mdc12 Photo ins Album

/mdc_conference | #mdc12 Problem Das Photoalbum des Benutzers ist nicht wirklich schreibbar Kamerainteraktion primaer via Chooser

/mdc_conference | #mdc12 Loesung Was Silverlight nicht kann, kann oft XNA MediaLibrary-Objekt –Erwartet Byte-Array –Schreibt immer in Saved Pictures

/mdc_conference | #mdc12 Word aus Resource

/mdc_conference | #mdc12 Problem Word-Dateien, etc ins Office schreiben –Dank Isolated Storage unmoeglich Idee: aus resusciieren

/mdc_conference | #mdc12 Loesung Off-Site-Service Uebertragung von Adresse & Attachment Server sendet

/mdc_conference | #mdc12 Tam HANNA Tamoggemon Limited