2. Agenda „ Ekosystem” urządzeń mobilnych Warsztat programisty – środowisko deweloperskie, narzędzia i sposoby ich wykorzystania Platforma .NET Compact Framework Charakterystyczne cechy urządzeń typu Pocket PC – ich oprogramowanie Operacje wejścia/wyjścia – pliki, korzystanie z zasobów sieciowych Lokalizacja aplikacji Dostęp do danych – pliki XML, SQL Server 2000, SQL Server CE 2.0
6. Przykłady urządzeń – telefony komórkowe (SmartPhone) Audiovox SMT5600 – Październik 2004, Windows CE, aparat cyfrowy rozdzielczość VGA, pierwszy telefon z Windows Media Player 10, USA Gotive H41 mobile communicator – May 2003, Windows CE .NET, GPS, czytnik kodów kreskowych, pełna (wirtualna) klawiatura QWERTY, USA
7. Przykłady urządzeń – telefony VoIP Inter-tel Model 8690 – Marzec 2004, Windows CE.NET, ekran dotykowy LCD, funkcje telefonu stacjonarnego, USB, 3xEthernet, PCMCIA, gniazdo CompactFlash, USA RV Tec dwa modele Wi-Fi VoIP – Grudzień 2004, Windows CE 5.0, proc. Intel PXA, ekran TFT LCD, aparat, sieć 802.11b, wsparcie dla kodu zarządzanego i niezarządzanego.
8. Przykłady – urządzenia typu „Smart Display” ViewSonic A irpanel V110 , V150 (Listopad 2002): Windows CE for Smart Display (host Windows XP), proc. Intel XScale 400 MHz, SDRAM 128 MB, ROM 64 MB ekran TFT LCD (10” lub 15”), sieć 802.11b,
9. Przykłady – komputery specjalnego przeznaczenia PSC Int. Falcon 4620 (Maj 2004): Windows XP Embedded, Proc. VIA C3 800 MHz, RAM 128MB, HDD 20 GB, Sieć 802.11b , Montowany w pojazdach, Praca w zakresie temp. -20C do +50C MICROFLEX CE8640 (Wrzesień 2002): Windows CE.NET, Proc. SA-1110, Czytnik kodów kreskowych, Sieć Ethernet, Wzmocniona obudowa, pełna klawiatura.
10. Przykłady – komputery „bardzo” specjalne Microsoft (Czerwiec 2002): Windows XP Embedded, Proc. AMD Duron 800 MB, RAM 128MB, HDD 20 GB, Sieć 802.11b , Oparty na systemie do gier. Pozwala na monitorowanie stanu zdrowia oraz postępów w treningu. Wersja jedynie testowa.
11. Przykłady - roboty University of Freiburg (Niemcy) (Wrzesień 2004): Windows CE .NET, Pocket PC Toshiba e755 został użyty jako mózg robota (komercyjnie produkowany przez RoboSapien), zastępując dotychczasowy mózg „firmowy”. Cornell University (USA) (Sierpień 2004): Windows CE .NET, Robot potrafi jedynie grać w piłkę nożną – do tego został stworzony.
12. Przykłady – zegarek? (SPOT - Smart Personal Object Technology ) Microsoft (Styczeń 2004): Wsparcie dla .NET – zawiera: CLR – Common Language Runtime (132KB), HAL – Hardware Abstraction Layer (40 KB), Możliwość tworzenia aplikacji z wykorzystaniem C# i VS.NET. Wsparcie dla wątkowości, typy: string, liczbowe, datetime, fonty, bitmapy itp. Obecnie odbiór informacji z MSN.
13. Systemy operacyjne i narzędzia Visual Studio 6.0 eMbedded Visual Tools Windows CE 3.0 Windows NT Embedded Windows XP Professional
14. Platforma uruchomieniowa a funkcjonalność aplikacji „ Gruby klient” „ Cienki klient” Zdalne strony sieciowe Mobilna przeglądarka internetowa Kod lokalny .NET Compact Framework Kod lokalny .NET Framework
16. Warsztat programisty ActiveSync 3.5 lub późniejsze Emulatory SQL Server CE 2.0 (Developer Edition) .NET Compact Framework .NET Framework Tworzenie aplikacji grubego klienta Tworzenie aplikacji cienkiego klienta Mobile Internet Toolkit Visual Studio .NET Smart Device Extensions
17. Warsztat programisty Środowisko programistyczne Visual Studio .NET 2003 .NET Framework, .NET Compact Framework Pakiety SDK i emulatory urządzeń Pocket PC 2003 SDK, Tablet PC SDK 1.7 Serwery bazodanowe SQL Server CE 2.0 – na urządzeniu SQL Server 2000 Zdalne wdrażanie aplikacji IIS 5.0 lub IIS 6.0 Pocket Internet Explorer, Internet Explorer 5.0
19. Założenia projektowe (I) Przenośny i mały .NET CLR na potrzeby urządzeń Efektywne wykorzystanie pamięci i przestrzeni Taki sam format binarny jak w przypadku aplikacji desktopowych Zastosowanie istniejących narzędzi deweloperskich (Visual Studio .NET) Praca programisty jak w przypadku tworzenia aplikacji desktopowych „ Odpluskwianie” i wdrażanie aplikacji przy pomocy Visual Studio .NET
20. Założenia projektowe (II) Tworzenie aplikacji typu „Gruby klient”, wykorzystanie Usług Internetowych XML C#, VB.NET, Windows Forms, sieciowość aplikacji, dostęp do danych, XML „ Pokojowe” współistnienie z systemem operacyjnym Wykorzystanie systemu plików systemu operacyjnego, rysowanie, kontrolki, wielowątkowość, sieciowość Wdrażany na większość istniejących platform sprzętowych Wiernie odtworzone urządzenie na emulatorach – pozwala łatwe eksperymentowanie
21. Założenia projektowe (III) Kompatybilność Pełna kompatybilność z .NET Famework Podzbiór funkcjonalności Rozmiar / funkcjonalność .NET Framework .NET Compact Framework
22. Podstawowe biblioteki klas dostępne z .NET Compact Framework Klasy SQL Server CE i IrDA Dostępne jedynie w .NET Compact Framework SqlServerCe Text Drawing2D System.Drawing SqlClient ADO.NET System.Data Readers/Writers XmlDocument System.Xml ComponentModel Design System.Windows.Forms Protocols Security System.Web.Services System.Web Discovery Services Description UI Diagnostics Security Threading Resources System Reflection IO Globalization Text Net (IrDA classes) Collections
23. Główne różnice pomiędzy .NET Framework a .NET CF Windows CE nie wspiera mechanizmu drag-and-drop Drag-and-drop Brak wsparcia dla drukowania w Windows CE lub .NET Compact Framework Drukowanie Ograniczenia .NET Compact Framework Cecha Windows CE nie wspiera GDI+ GDI+ Windows CE nie wspiera MDI ( Multiple Document Interface ) Formularze MDI Możliwość tworzenia wyłącznie klientów za pomocą .NET Compact Framework Web services
24. „ Odpluskwianie” Zdalny debugger jest stosowany w celu: Ustawiania pułapek w programie – w linii programu lub dla pewnych warunków Wykonywania krokowego programu lub przejścia następnej pułapki Sprawdzania wartości wyrażeń lub modyfikacji ich zawartości Zmiany sekwencji uruchamiania programu
25. Ograniczania debuggera w .NET Compact Framework Brak możliwości deasemplacja kodu natywnego, zrzutów z rejestrów, zrzutów ze stosu Brak możliwości zmiany kodu źródłowego gdy program zatrzymał się na pułapce i zastosowania zmian bez konieczności opuszczania sesji debuggera Nie ma możliwości dołączenia debuggera to istniejącego już procesu lub domeny aplikacji, które działały przed rozpoczęciem sesji debuggera Użytkownik może debaggować tylko te procesy lub domeny aplikacji, które zostały uruchomione do debaggowania
30. Operacje wejścia i wyjścia Klasa Stream Wykorzystanie klasy NetworkStream Zastosowanie klasy MemoryStream Wykorzystanie klas StreamReader i StreamWriter
31. Klasa FileStream Bazuje na klasie abstrakcyjnej Stream Konstruktor klasy FileStream wymaga podania nazwy pliku i określenia czy plik ma być otwarty czy stworzony: Open Create OpenOrCreate Append try { FileStream fs = new FileStream("\\plik.txt”,FileMode.Open); } catch (System.IO.FileNotFound ex) {…}
32. Zastosowanie sieci Stosowanie przestrzeni nazewniczej System.NET Klasy WebRequest i WebResponse Wysyłanie danych do serwera za pomocą HTTP GET i HTTP POST
33. Klasy WebRequest i WebResponse Pozwalają na przesyłanie danych od/do serwera internetowego Można przesłać z serwera zawartość stron HTTP lub też przesyłać do aplikacji serwerowych dane do ich przetwarzania (skrypty CGI) i otrzymywać wyniki działania aplikacji using System.Net; using System.IO; … WebRequest req = WebRequest.Create(uri); WebResponse res = req.GetResponse; Stream strumien = res.GetResponseStream(); StreamReader sr = new SreamReader(strumien); string wynik = sr.ReadToEnd();
35. Programowanie grafiki Klasy stosowane w programowaniu grafiki Przestrzeń System.Drawing – główna klasa Graphics Inne klasy: Image, Color, Rectangle, Point, Line, Brush, Region Metody graficzne klasy Drawing DrawImage(), DrawIcon() DrawRectangle(), FillRectangle() DrawEllipse(), FillEllipse() DrawPolygon(), FillPolygon() DrawLine(), DrawString(), FillRegion() Różnice pomiędzy .NET Framework i .NET CF
36. Różnice pomiędzy .NET Framework i .NET CF Metoda DrawImage – aby wyświetlić tylko część bitmapy można użyć wyliczenia GraphicsUnit ale miarą w .NET CF mogą to być tylko pixele – GraphicsUnit.Pixels Kolor przeźroczystości – możliwa jest kontrola sposobu wyświetlania bitmapy przy wykorzystaniu ImageAttributes (System.Drawing.Imaging). NET CF wspiera jedynie metodę SetColorKey()
39. Globalizacja i lokalizacja aplikacji Informacja o ustawieniach regionalnych Lokalizowanie zasobów Tworzenie plików zasobów Zastosowanie plików zasobów do lokalizacji interfejsów użytkownika
40. Klasa CultureInfo – określanie bieżących ustawień Klasa CultureInfo udostępnia dwie statyczne właściwości umożliwiające określenie obecnych ustawień: CurrentCulture – zwraca obiekt CultureInfo, reprezentujący ustawienia regionalne w obecnie uruchomionym wątku CurrentUICulture – zwraca informację dotyczącą ustawień regionalnych używanych przez klasę ResourceManager, w celu ładowania w czasie uruchamiania aplikacji zasobów zależnych od ustawień regionalnych
41. Klasa CultureInfo – określanie bieżących ustawień W pełnej implementacji .NET Framework możliwa jest zmiana właściwości CurrentCulture dla obiektu CurrentThread, w celu zmiany domyślnych ustawień kulturowych aplikacji. .NET Compact Framework nie wspiera takiej funkcjonalności.
43. Dostęp do danych – pliki XML, SQL Server 2000, SQL Server CE 2.0
44. Przechowywanie danych z DataSet w pliku XML Obiekt DataSet nie pozwala na stałe przechowywanie danych Używaj metody WriteXml do zapisania danych Używaj metody ReadXml do odtworzenia danych ds .WriteXml( appdir+ " \ \ dataset .xml") DataSet ds = new DataSet(); ds .ReadXml (appdir+ " \ \ dataset .xml")
47. Wykorzystanie Usług Internetowych XML .NET Compact Framework XML Web services client DataSet, XML Windows Forms .NET Framework ADO.NET Database ASP.NET XML Web services (HTTP) Zalety Łatwo wdrażalna infrastruktura Informacja może być buforowana; logika synchronizacji może być umieszczona na serwerze Urządzenie komunikuje się bezpośrednio ze źródłem informacji Ograniczenia Stan i logika synchronizacja może być skomplikowana Zapytania mogą być nieefektywne i ograniczone poprzez buforowane dane
48. Stosowanie Usług Internetowych XML w aplikacji klienckiej Korzystając z narzędzi VS.NET dodaj Referencje Internetowe (Web References) do projektu aplikacji Pobierany jest opis usługi Generowana jest klasa proxy Twórz obiekt lokalny wykorzystując do tego klasę proxy Wywołaj metody usługi Proxy zapewnie komunikację pomiędzy aplikacja kliencką a usługą Klasy Usługi Internetowej XML przeprowadzają w sposób przeźroczysty serializację do SOAP
51. Dostęp bezpośredni do bazy Zalety Możliwość składania zapytań do dużych źródeł danych Dostęp do całego zakresu danych, urządzenie ma dostęp do wszystkiego co potrzebne Ograniczenia .NET Compact Framework ADO.NET Windows Forms SQL Server ADO.NET Data Provider Wymaga połączenia ciągłego Trudno skalowalny, tradycyjny model dwu-warstwowy Brak modelu synchronizacji dla typowych danych dynamicznych
53. Architektura serwera SQL Server CE .NET Compact Framework -stos zarządzany OLE DB for Windows CE Data Provider SQL Server CE QP/Cursor Engine/ES Visual Studio .NET (Visual Basic .NET, C#) ADO.NET SQL Server CE Data Provider .NET Compact Framework runtime Storage Engine/ Replication tracking Serwer SQL Server 2000 Klient Client Agent: Replication and RDA HTTP Server Agent: Replication and RDA IIS
54. Ważniejsze cechy serwera SQL Server CE 2.0 Możliwość tworzenia kluczy dla jednej lub wielu kolumn. Domyślne wartości dla kolumn. Indeksy, powiązania Transakcje zagnieżdżone. Kursory wielokierunkowe i jednokierunkowe. Transakcje, kursory Ograniczenia .NET Compact Framework Cecha Wsparcie dla Data Manipulation Language – SELECT, DELETE, UPDATEfunkcje agregujące (INNER JOIN, OUTER JOIN, podzapytania) DML Wsparcie dla Data Definition Language – CREATE DATABASE, CREATE TABLE, ALTER TABLE, tworzenie kluczy głównych DDL Bazy chronione hasłem i kodowane kluczem 128-bitowym na poziomie pliku Kodowanie i zabezpieczenia
55. Typy danych w SQL Server CE 2.0 bit, binary, varbinary, image Binarne nchar, nvarchar, ntext Unicode Typ danych Rodzina real, numeric, float Inne numeryczne tinyint, smallint, integer, bigint Liczby całkowite money, datetime, uniqueidentifier Inne
56. Integracja SQL Server CE 2.0 i ADO.NET System.Data.SqlClient Bezpośrednie połączenie z serwerem SQL Pełna integracja z serwerem SQL Pełny język TSQL Procedury składowane System.Data.SqlServerCE Lokalne źródło danych Pełny dostęp do danych w trybie offline Zawiera pełną funkcjonalność SQL Server CE
57. Podstawowe klasy w przestrzeni System.Data.SqlServerCE SqlCeEngine SqlCeConnection SqlCeCommand SqlCeCommandBuilder SqlCeDataAdapter SqlCeDataReader SqlCeParameter SqlCeException, SqlCeError
58. Praca z serwerem SQL Server CE Przestrzeń dostępna na urządzeniu dla pliku bazy danych jest ograniczona Visual Studio .NET automatycznie konfiguruje środowisko programistyczne Instalacja serwera SQL Server CE przebiega automatycznie na urządzeniu lub emulatorze – warunkiem jest dodanie referencji System.Data.SqlServerCe do projektu aplikacji Istnieje także możliwość ręczniej instalacji serwera, polegającej na przeniesieniu odpowiednich plików CAB na urządzenie i ich zainstalowaniu
59. Programowanie dostępu do danych Utworzenie na urządzeniu lokalnej bazy danych o nazwie Studenci if (! System.IO.File.Exists(@"\My Documents\Studenci.sdf")) { SqlCeEngine eng = new SqlCeEngine( @"Data Source=\My Documents\Studenci.sdf"); eng.CreateDatabase(); }
60. Programowanie dostępu do danych Stworzenie struktury wewnątrz pustej bazy SqlCeConnection cn = new SqlCeConnection( @"Data Source=\My Documents\Studenci.sdf"); cn.Open(); string DDL1 = "CREATE TABLE Rejestracja(StudentID int not null identity(1,1)," + " NumerAlb nvarchar(10) not null," + " Imie nvarchar(100) not null,” + " Nazwisko nvarchar (25) not null)”; SqlCeCommand cmdDDL1 = new SqlCeCommand(DDL1, cn); cmdDDL1.CommandType = CommandType.Text; cmdDDL1.ExecuteNonQuery(); cn.Close();
61. Odczyt wiersza danych Możliwość zastosowanie klasy SqlCeDataReader SqlCeConnection cn = new SqlCeConnection( @"Data Source=\My Documents\Studenci.sdf"); string sSQL = "SELECT StudentID, NumerAlb, Imie, Nazwisko FROM Rejestracja"; SqlCeCommand cmdSelect = new SqlCeCommand(sSQL,cn); cmdSelect.CommandType = CommandType.Text; SqlCeDataReader dtr = cmd.ExecuteReader( CommandBehavior.Default ); while (dtr.Read()) { ListViewItem item = new ListViewItem(dtr.GetInt32(0).ToString()); item.SubItems.Add(dtr.GetString(1)); item.SubItems.Add(dtr.GetString(2)); item.SubItems.Add(dtr.GetString(2)); listViewStudenci.Items.Add(item); }
62. Architektura mechanizmu RDA Aplikacja SQL Server CE Client Agent SQL Server CE Database Engine Plik bazy danych (.sdf) IIS SQL Server CE Server Agent OLE DB Centralny Serwer SQL HTTP
63. Konfiguracja serwera RDA Aby mechanizm RDA mógł zadziałać należy: Zainstalować na serwerze internetowym program SQL Server CE Server Agent Stworzyć katalog wirtualny zawierający bibliotekę SQL Server CE Server Agent DLL – wykorzystaj narzędzie SQL Server Connectivity Manager Ustawić metodę autentykacji dla nowo stworzonej witryny Sprawdzić czy identyfikacja przeprowadzona przez IIS jest wystarczająca aby aplikacja otrzymała dostęp do serwera SQL.
64. Pozyskiwanie danych z serwera centralnego – RDA Pull Krok 1 – przygotowanie bazy danych if (! System.IO.File.Exists(@"\My Documents\Studenci.sdf")) { SqlCeEngine eng = new SqlCeEngine(@"Data Source=\My Documents\Studenci.sdf"); eng.CreateDatabase(); } else { System.IO.File.Delete(@"\My Documents\Studenci.sdf"); SqlCeEngine eng = new SqlCeEngine(@"Data Source=\My Documents\Studenci.sdf"); eng.CreateDatabase(); }
68. Podsumowanie Znaczenie urządzeń mobilnych w życiu codziennym rośnie Ilość obszarów zastosowań urządzeń mobilnych ograniczona jedynie pomysłowością twórców Dostępna gama platform i narzędzi Tworzenie aplikacji zbliżone do tego znanego z platform desktopowych W przyszłości nowe wersje systemów operacyjnych (Windows CE 5.0), serwerów bazodanowych (SQL Mobile Server) i narzędzi programistycznych (Visual Studio .NET 2005)