Archiv | Database RSS for this section

Die Wolke liefert Daten

Für zukünftige Aktivitäten im Business Bereich bietet Microsoft ja SQL Azure auf seiner Cloud Windows Azure an. Seit einer gewissen Zeit arbeite ich mich so ein wenig dort ein. Jetzt habe ich gestern einen Post gefunden wie man die Datenhaltung aufbaut in Verbindung mit WP7.

image

Abb.: Datenhaltung SQL Azure nach WP7

In einer Step für Step Anleitung wird vom Service Contract über den Service hin zur fertigen Anwendung alles ausführlich beschrieben. Der Transfer geht über JSON DTO Service. Es ist wirklich nicht so schwer dieses zuverstehen. Hier noch ein paar Zeilen Code:
using System.Runtime.Serialization;

namespace RESTJSONStudentsData
{
[DataContract]
public class PersonDTO
{
[DataMember]
public string StudentId { get; set; }
[DataMember]
public string FirstName { get; set; }
[DataMember]
public string LastName { get; set; }

}
}

Abb.: Data Contract

Und jetzt nich die WCF Verbindung kurz beschrieben:
using System.Collections.Generic;
using System.ServiceModel;
using System.ServiceModel.Web;

namespace RESTJSONStudentsData
{
[ServiceContract]
public interface IService1
{
[OperationContract]
[WebGet(UriTemplate=“/Persons“,
RequestFormat=WebMessageFormat.Json,
ResponseFormat=WebMessageFormat.Json]
List<PersonDTO> GetPersons();
}
}

Hier sollte hervorgehoben werden die Json Format Einstellungen. Diese können dann ganz einfach per DataContractJsonSerializer konvertiert werden. So ist es echt einfach geworden.

Quelle:

Data from Cloud on Windows Phone

 

SQL Server CE gibt Gummi… DB Engines Performance Testing

Auch wenn ich kein Freund von Statistiken bin, möchte ich auf einen Post von

Max Paulousky in seinem Blog hinweisen. Er zeigt objektiv im Vergleich wie der MS Sql Server CE 4.0 abschneidet.

Databse structure for performance tests

 

Es wird eine typische Datenbank Tabellenstruktur zur Hand genommen und verschiedene Funktionen getestet:

Windows Phone (Mango) DB Engines Performance Testing Results

Quelle:

Windows Phone (Mango) DB Engines Performance Testing

Mango auf dem Index,

oder wie man mit dem SQL Server CE 4.0 richtig mit dem Index umgeht.

Auf devlicio.us/blogs/derik_whittaker ist mal wieder ein weiterer Beitrag erschienen wie Index Columns erstellt werden. Dieser Post ist der dritte in diesem Get Started Tutorial.

[Index(Columns = „Name“, Name = „i_Name“)]
[Index(Columns = „Name, Number“, Name = „i_Name_Number“)]
[Table]
public class Episode
{
    // blah, blah, blah
}

Also man muss zugeben dieses Erstellen ist wirklich sehr einfach und bekommt jeder Entwickler hin.

Quelle:

Using SQL CE On WP7 Mango–Working with Indexes

 

SQL CE 4.0 CRUD Eigenschaften kurz vorgestellt

Da ich gerade mich mit dem SQL CE 4.0 auf meinem Phone rumschlage, bin ich ja immer auf der Suche nach guten Demos des neuen SQL CE Server. Auf dem Blog Kunal’s Blog habe ich eine super einfache Implementierung der neuen Möglichkeiten die der Server jetzt endlich auch auf dem Phone 7 bietet gestoßen.

WP7.1 LocalDBDemo - Create Main Page UI

Diese kleine Demo zeigt alles was man für einen Test benötigt außer das Anlegen der Strukturen.

<!--ContentPanel - place additional content here-->
<StackPanel x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0" Orientation="Vertical">
 <Button Width="300" Height="75" Content="Create Database" Click="CreateDatabase"/>
 <Button Width="300" Height="75" Content="Delete Database" Click="DeleteDatabase"/>
 <Line Height="20"/>
 <Button Width="300" Height="75" Content="Add Employee" Click="AddEmployee"/>
 <Button Width="300" Height="75" Content="View Employees" Click="ViewEmployees"/>
</StackPanel>

Die DB Logic wird in einen Helper implementiert und durch Codesharing kann dieses in mehreren Projekten funktionieren.

using System.Collections.Generic;
using System.Linq;

namespace LocalDBDemo
{
 public class DBHelper
 {
 private const string ConnectionString = @"isostore:/Northwind.sdf";

 public static void CreateDatabase()
 {
 using (var context = new NorthwindDataContext(ConnectionString))
 {
 if (!context.DatabaseExists())
 {
 // create database if it does not exist
 context.CreateDatabase();
 }
 }
 }

 public static void DeleteDatabase()
 {
 using (var context = new NorthwindDataContext(ConnectionString))
 {
 if (context.DatabaseExists())
 {
 // delete database if it exist
 context.DeleteDatabase();
 }
 }
 }

 public static void AddEmployee(Employee employee)
 {
 using (var context = new NorthwindDataContext(ConnectionString))
 {
 if (context.DatabaseExists())
 {
 context.Employees.InsertOnSubmit(employee);
 context.SubmitChanges();
 }
 }
 }

 public static IList<Employee> GetEmployees()
 {
 IList<Employee> employees;
 using (var context = new NorthwindDataContext(ConnectionString))
 {
 employees = (from emp in context.Employees select emp).ToList();
 }

 return employees;
 }
 }

}

Quelle:

Kunal’s Blog

 

WCF Data Services und Tombstoning

In Mango ist wieder eine neue Eigenschaft eingebaut worden, die nicht zu unterschätzen ist. Beim Arbeiten mit den WCF Data Services und Tombstoning bei neuen Apps mit Mango Update.

Alex van Beek hat auf seinem Blog diese Problematik in einem Post ausführlich beschrieben.

Die Server Seite besteht aus einem WCF Dataservice.

image

Dieser muss nun per Service Referenz ins Projekt vom Client eingebunden werden.

image

Hier noch eine kleine Anzeige vom Windows Phone Client

image

Anschliesend wird beschrieben wie man Tombstoning in diesem Client einsetzt.

   1: protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
   2:       {
   3:           base.OnNavigatedTo(e);
   4:  
   5:           if (_newInstance)
   6:           {
   7:               if (State.ContainsKey("productService"))
   8:               {
   9:                   // need to restore the state.....
  10:                   string stateString = (string)State["productService"];
  11:                   DataServiceState state = DataServiceState.Deserialize(stateString);
  12:                   _context = (AdventureWorks2008Entities)state.Context;
  13:                   _products = (DataServiceCollection<Product>)state.RootCollections["products"];
  14:                   _lbxProducts.ItemsSource = _products;
  15:               }
  16:               else
  17:               {
  18:                   //A new instance with no state saved, load new data....
  19:                   DataServiceQuery<Product> products = (DataServiceQuery<Product>)
  20:                       from p in _context.Product
  21:                       where p.ListPrice < 500
  22:                       select p;
  23:                   Debug.WriteLine("Products uri: " + products.RequestUri);
  24:                   _products.LoadCompleted += new EventHandler<LoadCompletedEventArgs>(HandleProductsLoaded);
  25:                   _products.LoadAsync(products);
  26:               }
  27:           }
  28:           _newInstance = false;

29: }

Quelle :

infoSupport Blog

 

 

 

WP7 Page Navigation Bad&Good Praxis

Andreas Hammar hat auf seinem Blog  Jayway.com beschrieben,  wie man das Laden von Daten beim Page navigieren korrekt implementiert.

Es werden posiv, und negativ Beispiele auf Quellcodebasis dagestellt.

blogpost - ways of navigatingblogpost - news page

Schaut euch die Beispiele an, es lohnt sich darüber nachzudenken was der beste Weg ist für seine App und die Datenbeschaffung.

Quelle :

Jayway.com

AgFx Framework für Datamanagment in WP7

Auf Codeplex ist ein neues Framework erschienen, womit der Developer unterstützt wird, der mit vielen Daten arbeiten muss. AgFx beherrscht Cache, sowie Datenprovider und Helper.

image

Ein Tutorial wird zeigt wie man vom Datenquellenmodel über die Zugriffschicht zu einer fertigen Anwendung kommt. Das dieses Framework sicher bei vielen Developer zum Einsatz kommt denke ich schon, zumal Jeff Wilcox der Entwickler des Frameworks ist. Somit ist Qualität und Sicherheit gewährleistet.

Quelle:

Codeplex

Windows Explorer goes Windows Phone 7

Was ich mir schon immer gewünscht habe, ist nun ein Codeplex Projekt geworden.

Dieses Tool soll einen Entwickler unterstützen bei der Arbeit mit dem Isolated Storage.

Zwei Möglichkeiten werden im Projekt angeboten:

  • WPF Client
  • VS 2010 Integration

So kann einfach und schnell eine Datei kopiert werden, oder eine Datei vom Phone gelöscht werden.

 

209663209664

Abb. : Links die WPF Version und Rechts die VS 2010 Addin Integration

Quelle:

Codeplex

 

WP7 Tombstoning in MVVM und mit Datenbank

Tombstoning ist ein Thema in der WP7 Entwicklung, von den meisten Entwicklern unterschätzt aber dennoch sehr wichtig für eine Anwendung unter WP7. Jeremy Likness hat einen Post über dieses Thema  geschrieben, und hier geht Jeremy noch ein gutes Stück weiter als die Grundlagen.

Er beschreibt wie man ein Model für Tombstone im Pattern MVVM aufbaut und dieses auch noch in eine Datenbank abspeichert. Als Datenbank kommt die von Ihm entwickelte Datenbank Sterling zum Einsatz.

Hier ein kleiner Ausschnitt über das Model:

public class TombstoneModel
{
public TombstoneModel()
{
State = new Dictionary<string, object>();
}

public Dictionary<string, object> State { get; set; }

public T TryGet<T>(string key, T defaultValue)
{
if (State.ContainsKey(key))
{
return (T)State[key];
}
return defaultValue;
}
}

Quelle :

Tombstoning MVVM und Sterling

Neue Datenbank für Windows Phone 7 Sterling 1.0 RTW

Jeremy Likness hat auf Codeplex schon seit längeren eine Datenbank für Silverlight und WP 7 in der Entwicklung, nun hat er diese Datenbank endlich Final bekommen. Unter Codeplex steht dieses OOP Datenbanksystem frei zur Verfügung.

Der Autor hat eine eigene Website für dieses Projekt ins Leben gerufen.

Auf dieser Website sind folgende Funktionen verfügbar:

  • Aktueller Stand
  • Sterling User Guide
    • Preface
    • Quickstart
    • Installation
    • The Sterling Engine
    • Databases
    • Serializers
    • Logging
    • Sterling Recipes

Quellen :

Jeremy Likness

Sterling