Pengantar Teknologi Mobile 10 Antonius Rachmat C, S.Kom .NET Compact Framework
Feb 23, 2016
Pengantar Teknologi Mobile 10
Antonius Rachmat C, S.Kom
.NET Compact Framework
Standard Library
Application Platforms Today
GUI Services
Transaction Services
Web Scripting
Data Access
More
Operating System
Runtime Environment
BrowserApps
Web ServicesApps
OtherApps
LocalApps
What is Microsoft .Net?
• Visi:– The platform for the digital future– ‘.NET is Microsoft’s platform for a new computing
model built around XML Web Services’Microsoft Corporation Annual Report, 2001
• Suatu brand name– Applied to many things
• Diperkenalkan oleh Microsoft pada (Juni 2000)– Sekarang sudah sampai .net framework 3.5
.NET FRAMEWORK
• Bersifat independen dalam hal bahasa– Aplikasi dapat dikembangkan di beberapa
bahasa yang didukung oleh .NET: Visual Basic .NET, Visual C++ .NET, C# dan J#
– Programmer dapat memilih salah satu bahasa yang paling dikuasainya.
• Mampu dijalankan di semua platform
Open Internet ProtocolsOpen Internet ProtocolsXML, XSLT, XSD, SOAP, XML, XSLT, XSD, SOAP, DISCO, UDDI, XHTML, DISCO, UDDI, XHTML,
HTTP, SSL, WAPHTTP, SSL, WAP
Visual Visual Studio.NETStudio.NET
Simple Simple BrowsersBrowsers
ApplicationsApplications Using Your Using Your
ServiceService
Your Internal ServicesYour Internal Services
.NET Enterprise Servers.NET Enterprise Servers
33rdrd Party Web Services Party Web ServicesGeographic Mapping ServiceGeographic Mapping ServiceCredit Card Statement ServiceCredit Card Statement Service… … [ActiveX Paradigm][ActiveX Paradigm]
Building Block ServicesBuilding Block ServicesPassport – Identity ServicePassport – Identity ServiceCalendaring ServiceCalendaring Service… … [myServices][myServices]
WindowsWindows
SQL ServerSQL ServerBizTalk ServerBizTalk ServerApplication CenterApplication CenterCommerce ServerCommerce ServerHost Integration ServerHost Integration ServerInternet Security and AccelerationInternet Security and AccelerationExchange ServerExchange Server
Sales Data ServiceSales Data ServiceCorporate Fullfilment ServiceCorporate Fullfilment Service
Smart Smart DevicesDevices
Smart ClientsSmart Clients.NET FW.NET FWWindowsWindows
.NET FW.NET FW
Windows Windows CE, XP, 2000, .NETCE, XP, 2000, .NET
.NET .NET FrameworkFramework .NET FW.NET FW
.NET Blueprint
Your Your application application
and web and web serviceservice
.NET Framework (2)
.NET Framework (3)
SystemSystem
System.DataSystem.Data System.XmlSystem.Xml
System.WebSystem.Web
GlobalizationGlobalizationTextTextSecuritySecurityCollectionsCollections
ResourcesResourcesReflectionReflectionNetNetIOIO
ThreadingThreadingDiagnosticsDiagnosticsServiceProcessServiceProcessConfigurationConfiguration
DesignDesignADO.NETADO.NET SqlClientSqlClient
Xslt/XPathXslt/XPathXmlDocumentXmlDocument
RuntimeRuntimeInteropServicesInteropServicesRemotingRemotingSerializationSerialization
SerializationSerialization
ConfigurationConfiguration SessionStateSessionStateCachingCaching SecuritySecurity
ServicesServicesDescriptionDescriptionDiscoveryDiscoveryProtocolsProtocols
UIUIHtmlControlsHtmlControlsWebControlsWebControls
System.DrawingSystem.Drawing
ImagingImagingDrawing2DDrawing2D
TextTextPrintingPrinting
System.WinFormsSystem.WinForms
DesignDesign ComponentModelComponentModel
Reader/WritersReader/WritersOleDB, odbc, Oracle OleDB, odbc, Oracle
Common Language Runtime• Bagian utama dari framework yang akan mengkompilasi
dan mengeksekusi program yang ditulis dengan bahasa yang mendukung .NET
• Compilation process– Dua Langkah Kompilasi
• Pertama program di compile menjadi Microsoft Intermediate Language (MSIL) / Common Intermediate Language (CIL)
– Mendefinisikan instruksi untuk CLR• Kemudian MSIL code diterjemahkan kedalam machine code
– Machine code untuk platform yang khusus– Mengapa dua proses kompilasi ?
• Agar platformnya bersifat independence– .NET Framework dapat diinstal di platform berbeda– Mengeksekusi program .NET tanpa modifikasi kode-nya
• Language independence– .NET program tidak terikat dengan bahasa tertentu– Komponen yang lama dan baru dapat terintegrasi
Common Language Runtime (2)• Keuntungan lain dari CLR
– Execution-management features• Manages memory, security• Membebaskan programmer dari banyak tanggung jawab• Programmer lebih berkonsentrasi pada program logic
• CLR menyediakan JIT compilation. • JIT hanya akan mengkompilasi method-method yang
memang digunakan dalam suatu bagian aplikasi pada saat tertentu, dan hasil kompilasi ini sendiri di cache di dalam mesin dan akan dikompile kembali jika memang ada perubahan pada kode aplikasi kita. – Jadi tidak semua method diload ke-memori pada saat yang
sama
Common Language Runtime (3)
Class LoaderClass Loader
IL to NativeIL to NativeCompilersCompilers
CodeCodeManagerManager
GarbageGarbageCollectorCollector
Security EngineSecurity Engine Debug EngineDebug Engine
Type CheckerType Checker Exception ManagerException Manager
Thread SupportThread Support COM MarshalerCOM Marshaler
Base Class Library SupportBase Class Library Support
DeploymentDeployment
DevelopmentDevelopment
CLR Execution Model
VBVB C#C# ScriptScript ......
Assembly: Assembly: MSIL + MetadataMSIL + Metadata
NativeNativeCodeCode
JITJITCode GenCode Gen
NativeNativeCodeCode
Install timeInstall timeCode GenCode Gen
CommonCommonLanguageLanguageRuntimeRuntime
Data Types in the CLR
• The CLR mendefinisikan Common Type System (CTS)– All languages built on the CLR use the CTS (managed
code)• Ada 2 kategori:
– Value types:• Relatively simple types• Allocated on the stack
– Reference types:• More complex types• Allocated on the heap• Destroyed through garbage collection
Compiling & Executing Managed Code
Source Code
Language Compiler
Microsoft Intermediate
Language (MSIL)
Compilation
JIT Compiler
NativeCode
The first time each method is called
Execution
.NET Class Library• Sering disebut sebagai Base Class Library.• Adalah koleksi dari reusable types yang sangat
terintegrasi secara melekat dengan CLR.• Class library bersifat berorientasi objek yang akan
menyediakan types dari fungsi-fungsi managed code.
• Dengan BCL kita dapat membuat:– Aplikasi console – Aplikasi berbasis windowd (Windows Form) – Aplikasi ASP.NET (berbasis web) – Aplikasi Web Services XML
• Aplikasi berbasis Windows Services
A Brief History of Windows Mobile Development
• Embedded Tools for Visual Studio– VS 6– Tools for VB, C++
• eMBedded Tools– Standalone and free– eVB– eC++
• .NET Compact Framework (First Pass)– Visual Studio.NET– Smart Device Extensions
.NET Compact Framework Design Goals
• Portable and small .NET CLR for devices– Enable Visual Basic® and C#
• Integrated in Visual Studio® .NET– Run managed .EXEs and .DLLs directly– Debug with Visual Studio .NET
• Target devices:– Compaq, HP, Dell, Toshiba, …– PocketPC 2000, 2002– Windows Mobile (alias PPC 2003)
• .Net CF in ROM!– Windows CE– SmartPhone– No Palm/Handspring
The Framework – “Optimized”
• 20mb 1.5mb• Same languages, same code, same MSIL• Multiple target CPUs / Mobile device
.NET Compact Framework
SystemSystem
System.DataSystem.Data System.XmlSystem.Xml
System.WebSystem.Web
GlobalizationGlobalizationTextTextSecuritySecurityCollectionsCollections
ResourcesResourcesReflectionReflectionNetNetIOIO
ThreadingThreadingDiagnosticsDiagnosticsServiceProcessServiceProcessConfigurationConfiguration
DesignDesignADO.NETADO.NET SqlClientSqlClient
Xslt/XPathXslt/XPathXmlDocumentXmlDocument
RuntimeRuntimeInteropServicesInteropServicesRemotingRemotingSerializationSerialization
SerializationSerialization
ConfigurationConfiguration SessionStateSessionStateCachingCaching SecuritySecurity
ServicesServicesDescriptionDescriptionDiscoveryDiscoveryProtocolsProtocols
UIUIHtmlControlsHtmlControlsWebControlsWebControls
System.DrawingSystem.Drawing
ImagingImagingDrawing2DDrawing2D
TextTextPrintingPrinting
System.WinFormsSystem.WinForms
DesignDesign ComponentModelComponentModel
Reader/WritersReader/WritersSqlServerCeSqlServerCe
.NET CF Architecture
Host Operating SystemHost Operating System
Platform Adaptation LayerPlatform Adaptation Layer
Execution Engine (“MSCOREE.DLL”)Execution Engine (“MSCOREE.DLL”)
Device Specific Class LibsDevice Specific Class Libs
Base Class LibsBase Class Libs
ApplicationsApplications
.NET Compact Framework CLR.NET Compact Framework CLR
App
Dom
ain
Hos
tA
pp D
omai
n H
ost
… … LaunchLaunchManagedManagedNativeNative
Platform Adaptation Layer• Base Services
– Threads, sync, timers, memory, math• Storage
– Open, close, read/write, directory– Direct addressing mode
• Networking– Sockets– Connection Control
• GUI– Framebuffer, char and pointer I/O, Fonts
Execution Engine• Basic services for managed execution
– Loader• Meta-data engine/cache• Representation of class hierarchy/layout• Reflection
– JIT-Compiler/Verifier– Execution Infrastructure
• Exceptions, Native Code InterOp, Security– Garbage Collector– Debugging Support– “Native” implementation of some managed
APIs (class libraries)
Class Libs• Base Types
– Type conversion, display formatting– String manipulation– Array.Sort
• Threading & Sync (System.Threading)• Storage (System.IO)• Resources (System.Resources)• Collections (System.Collections)• Reflection (System.Reflection)• XML
– DOM and Reader/Writer• Networking, Forms, Data Access
Developing in a Compact World
• VS.Net 2003/2005 installation option• Only C#, VB.Net• True on-device debugging
– If you can get it connected…• Emulator• Deployment
Developing in a Compact World VS.NET Integration
• Templates for devices in New Project dialog– Template sets device and project type
• Template types– Pocket PC Application– Pocket PC Class Library– Pocket PC Control Library– Windows CE .NET Application – Mobile Phone Application
• Default set of references that are appropriate for your platform
Develop Symbian in VS 2005
• You can get it! You can download AppForge plugin!
Developing in a Compact WorldDeployment
• Same user experience as desktop• Compiles application for device• Output Window used for deployment
messages• Visual Studio deploys the framework to
device if needed
Packaging and Deployment
Windows + Visual Studio .NETWindows + Visual Studio .NETSource CodeSource Code
(Hello.*)(Hello.*)
.NET.NETCompilerCompiler
.NET CF .NET CF Class LibsClass Libs
Hello.exeHello.exeHello.dll(s)Hello.dll(s) Hello.cabHello.cab
CabWiz.exe CabWiz.exe
Hello.cabHello.cab
DeviceDeviceActiveSync, ActiveSync, SMS, Etc/.SMS, Etc/.
Hello.exeHello.exeHello.dll(s)Hello.dll(s)
WCELoad.exe WCELoad.exe
.NET CF.cab.NET CF.cab
Per-Processor/OS and Per-Processor/OS and Language PackageLanguage Package
.NET CF.cab.NET CF.cab
.NET CF.NET CFCLRCLR
More Deployment Options
Windows + Visual Studio .NET Windows + Visual Studio .NET DeviceDevice
Hello.cabHello.cab
.NET CF.cab.NET CF.cab
DesktopDesktopExecutablesExecutables
WindowsWindows
Setup.exeSetup.exe
Setup.exeSetup.exeActiveSync, ActiveSync, Add/RemoveAdd/Remove
Programs, Etc.Programs, Etc.
Hello.cabHello.cab
DesktopDesktopExecutablesExecutables
++.NET CF.cab.NET CF.cab
Hello.cabHello.cab
Hello.exeHello.exeHello.dll(s)Hello.dll(s)
.NET CF.cab.NET CF.cab
.NET CF.NET CFCLRCLR
Working with data: SQL Server CE
• Limited subset of SQL Server functionality• Good for:
– Persistent storage locally– Persistent storage for occasionally-connected
applications and large sets of data– Merge Replication
• Currently, SQL Server CE requires an additional installation
Working with data: SQLite
• SQLite adalah database bukan client-server, dia bersifat stand-alone
• Hanya terdiri dari 1 file– Berekstensi: .db3
• Perlu download file DLL tambahan agar bisa koneksi:– System.Data.SQLite
• Secure, bisa menggunakan bahasa SQL• Bersifat lokal
Working with data: XML
• Good for:– Persistent storage of smaller sets of data
• Local storage• Occasionally-connected computing
– Not as secure as SQL Server CE
How Compact ? File Size Classes Methods
NETCF Desktop % NETCF Desktop % NETCF Desktop %
“MSCorEE” 400K* 2.2 M 18% N/A N/A N/A N/A N/A N/A
MSCorLib 200K 2M 10% 364 1286 28% 3989 13817 29%
System 100K 1.2M 8% 140 765 18% 1090 6953 16%
System.Drawing 20K 458K 5% 41 254 16% 385 3509 11%
System.Web.Services 67K 503K 13% 54 274 20% 302 2083 14%
System.Windows.Forms 56+55K 2M 5% 43 823 5% 393 11337 3%
System.XML 138K 1.2M 12% 100 724 14% 927 7227 13%
* .NETCF file size of MSCorEE is for Win32/x86 version* .NETCF file size of MSCorEE is for Win32/x86 version
Framework Size
• Framework size (RAM or ROM)– ~1.5 MB
• Running RAM needs– 1 MB+ (depends on app)
• Typical application sizes– 5 - 100 KB– Apps often smaller due to use of platform
features in the framework
NEXT
• Symbian OS