Designing platform independent mobile apps and services - Heckman, Rocky (Hoboken : Wiley-IEEE Press, 2016)
Presents strategies to designing platform agnostic mobile apps connected to cloud based services that can handle heavy loads of modern computing -Provides development patterns for platform agnostic app development and technologies -Includes recommended standards and structures for easy adoption -Covers portable and modular back-end architectures to support service agility and rapid development.
9.3 MULTI-VERSIONING9.4 VERSION RETIREMENT; 9.5 CLIENT UPGRADES; 9.6 WRAPPING UP; CHAPTER 10 CONCLUSION; REFERENCES; INDEX; EULA
Preface Acknowledgments 1 The Mobile Landscape 1 1.1 Introduction 1 1.2 Previous Attempts At Cross Platform 3 1.2.1 Java 3 1.2.2 Early Web Apps 5 1.2.3 Multiple Code Bases 8 1.3 Breadth Versus Depth 10 1.4 The Multi-Platform Targets 13 1.4.1 Traditional 13 1.4.2 Mobile 14 1.4.3 Wearables 15 1.4.4 Embedded 16 2 Platform Independent Development Technologies 18 2.1 Vendor Lock In 19 2.2 Recommended Standards and Guidelines 21 2.2.1 Respecting the Device 21 2.2.2 Respecting the Network 23 2.2.3 Communication Protocols 25 2.2.4 Data Formats 37 2.2.5 Mobile User Experience Guidelines 47 2.2.6 Authentication 53 2.2.7 Dealing With Offline and Partially Connected Devices 56 3 Platform independent Development Strategy 77 3.1 High Level App Development Flow 77 3.2 Five Layer Architecture
78 3.3 Five Layer Architecture Detail 80 3.3.1 The UI Layer 80 3.3.2 The Service Interface Layer 81 3.3.3 The Service Layer 83 3.3.4 The Data Abstraction Layer 84 3.3.5 The Data Layer 85 4 The UI Layer 87 4.1 Porting versus Wrapping 87 4.2 Multi-Client Development Tools 88 4.2.1 PhoneGap (http://phonegap.com/ ) 88 4.2.2 Xamarin (http://xamarin.com/ ) 90 4.2.3 Unity (http://www.unity3d.com ) 91 4.2.4 Visual Studio 91 4.3 Cross Platform Languages 92 4.4 Avoid Writing for the Least Common Denominator 93 4.5 Wrapping up 94 5 The Service Interface Layer 96 5.1 Message Processing 96 5.1.1 Push versus Pull 97 5.1.2 Partially Connected Scenarios 98 5.2 Message Processing Patterns 99 5.3 High Volume Messaging Patterns 103 5.4 High Volume Push Notifications 110 5.5 Message Translation and Routing 117 5.5.1
Message Translation 117 5.5.2 Message Routing 125 5.5.3 Handling Large Amounts of Data 132 5.6 Wrapping up the Service Interface layer 134 6 The Service Layer 136 6.1 Thinking in Nodes 136 6.1.1 Scale Out and Scale Up 136 6.1.2 Scale Out versus Scale Up 136 6.2 Planning for Horizontal Scaling 139 6.2.1 Node Sizing 139 6.2.2 Statelessness 142 6.3 Designing Service Layers for Mobile Computing 145 6.3.1 Service Componentization 146 6.4 Implementation Abstraction 147 6.4.1 Service Interface Abstraction 148 6.5 Using CQRS / ES for Service Implementation 151 6.5.1 CQRS Overview 152 6.5.2 Why CQRS 153 6.5.3 Being Able to Separate Data Models 154 6.5.4 Aggregates and Bounded Contexts 156 6.5.5 The Read and Write Sides 157 6.5.6 CQRS Communications 159 6.6 Side by Side Multi Versioning 167 6.7 Service Agility 168 6.8
Consumer, Business
and Partner Services 168 6.9 Portable and Modular Service architectures 169 6.9.1 Designing Pluggable Services 173 6.9.2 Swapping Services 175 6.9.3 Deployment and Hosting Strategies 180 7 The Data Abstraction Layer 183 7.1 Objects to Data 183 7.2 Using the DAL with External Services 186 7.3 Components of a DAL 189 7.3.1 Data Mapper 190 7.3.2 Query Mapper 192 7.3.3 Repository 197 7.3.4 Serializers 199 7.3.5 Storage Consideration 201 7.3.6 Cache 205 7.4 Wrapping up the DAL 207 8 The Data Layer 209 8.1 Overview 210 8.2 Business Rules in the Data Layer 211 8.3 Relational Databases 211 8.4 NoSQL Databases 214 8.4.1 Key Value Database 218 8.4.2 Document Database 221 8.4.3 Column Family Databases 225 8.4.4 Graph Database 230 8.5 File storage 233 8.6 Blended approach 236 8.6.1 The Polyglot
Data Layer 237 9 Strategies for Ongoing Improvement 241 9.1 Feature Expansion 241 9.2 Data collection matters 245 9.3 Multi-Versioning 247 9.4 Version Retirement 251 9.4.1 Scale Back 253 9.5 Client Upgrades 257 10 Conclusion 261 Index
Keywords: Mobile apps; Cell phones; COMPUTERS / Hardware / Handheld Devices; TECHNOLOGY & ENGINEERING / Mobile & Wireless Communications; Cell phones; Mobile apps; Electronic books