PrefaceAcknowledgmentsChapter 1. IntroductionWelcome to Mobile Device Software EngineeringSuccess Is Driven by a Few Key FactorsHow to Read This BookWays to Develop for DevicesManaged CodeSummaryChapter 2. Characteristics of Mobile ApplicationsIntroductionUsage PatternsForm FactorReliability RequirementsImportant Characteristics of Mobile ApplicationsComputer Architecture DifferencesSummaryChapter 3. Design of the .NET Compact FrameworkIntroductionDesigning the .NET Compact FrameworkDesktop SubsetManaged Code and Native CodeThe Execution EngineThe Managed-Code LibrariesFactoring of Useful Design and Debugging Information into Optional ComponentsSQL CE / SQL ConnectorsItems Not in the First Version of the .NET Compact FrameworkHow Code Is Executed and RunMemory Management and Garbage CollectionSummaryChapter 4. How to Be Successful Developing Mobile ApplicationsIntroductionInherent and Transient Difficulties in Software EngineeringDevelopment Is an Iterative Process, but It Does Have RulesNone of the Details Matter If the Big Picture Is Not RightSolve Problems in the Right Order; Go Back If You Need ToSummaryChapter 5. Our Friend, the State MachineIntroductionWhat Is a State Machine?Implicit vs. Explicit State MachinesHow Many State Machines Should Be in Any Given Application?SummaryChapter 6. Step 0: Before You Start, Decide on the Scope of Your ApplicationIntroductionStandalone or Part of a Larger System?Do Not Port Your Desktop Application! Think Devices!Steps to Define the Scope of Your Mobile ApplicationChapter 7. Step 1: Start with Performance; Stay with PerformanceIntroductionThe Importance of a Disciplined ApproachDefining Performance ObjectivesThe Cost of Runtime ExceptionsSummaryChapter 8. Performance and Memory ManagementDefining Your Application Memory ModelMacro "Application Level" Memory ManagementMicro "Algorithm-Level" Memory ManagementPay Special Attention to String Usage in Your AlgorithmsSummaryChapter 9. Performance and MultithreadingIntroduction: When and How to Use Background ThreadsMultitasking and Multithreading in Modern Operating SystemsWhen to Use Background ThreadsDesign Guidelines for Using Threads in Your Mobile ApplicationSample Code You Can Use Using a Background Thread to Accomplish a Single TaskThreads and User InterfaceSummaryChapter 10. Performance and XMLIntroduction: Working with XMLTo XML or Not to XML?Comparing XML to Other Text FormatsDifferent Ways to Work with XMLA Simple Example Using Both the XML DOM and the XML Reader/WriterImproving Performance by Offloading Work to OthersSummaryChapter 11. Graphics and User Interface PerformanceIntroductionPerformance Design Strategies for User Interface CodeChoosing Appropriate Bitmap Formats and SizesDesign Strategies for Graphics Code That PerformsSummaryChapter 12. Performance SummaryPerformance SummaryPerformance and Memory Management SummaryPerformance and MultithreadingPerformance and API Abstraction LevelsPerformance with User Interface and GraphicsLook For and Pay Attention to Performance Warning SignsConclusion and Best PracticesChapter 13. Step 2: Design the Right User InterfaceThink Devices!Design Your Mobile User Interface Code to Allow for Easy Testing and IterationA State Model for User Interface Layout and ManagementAdvanced User Interfaces with the .NET Compact FrameworkChapter 14. Step 3: Get Your Data Access Model RightIntroduction to Mobile Application Data AccessChoosing the Right Abstractions for In-Memory Storage of DataChoosing the Right Long-Term Storage Model for Data.NET Compact Framework Specific: ADO.NETSummaryChapter 15. Step 4: Get Your Communications Model RightIntroduction to Mobile Application CommunicationsCoding for Mobile NetworkingCommunications and Networking OptionsPushing Information to a DeviceWeb ServicesSummaryChapter 16. Step 5: Packaging and Deploying Your Mobile ApplicationIntroductionDoes Your Mobile Application Need to Be Signed?Installation of Runtimes and Other Required ComponentsPackaging and Installation OptionsSummaryChapter 17. AfterwordAppendix A. Additional Resources for the .NET Compact FrameworkOnline ResourcesAppendix B. Visual Basic .NET SamplesWhy VB.NET and C#?Chapter 5 (State Machines) SamplesChapter 7 (Performance Introduction) SamplesChapter 8 (Performance and Memory) SamplesChapter 9 (Performance and Multithreading) SamplesChapter 10 (Performance and XML) SamplesChapter 11 (Performance and Graphics) SamplesChapter 13 (User Interface Design) SamplesChapter 14 (Data) SamplesChapter 15 (Communications) SamplesIndex