|
|
xi | |
|
|
xiii | |
Preface |
|
xv | |
Acknowledgments |
|
xvii | |
|
Chapter 1 The Mobile Landscape |
|
|
1 | (14) |
|
|
1 | (1) |
|
1.2 Previous Attempts at Cross-Platform |
|
|
2 | (7) |
|
|
2 | (3) |
|
|
5 | (2) |
|
|
7 | (2) |
|
|
9 | (1) |
|
1.4 The Multi-Platform Targets |
|
|
10 | (5) |
|
|
10 | (1) |
|
|
11 | (1) |
|
|
12 | (1) |
|
|
13 | (2) |
|
Chapter 2 Platform-Independent Development Technologies |
|
|
15 | (49) |
|
|
15 | (1) |
|
|
16 | (2) |
|
2.2 Recommended Standards and Guidelines |
|
|
18 | (45) |
|
2.2.1 Respecting the Device |
|
|
18 | (1) |
|
2.2.2 Respecting the Network |
|
|
19 | (2) |
|
2.2.3 Communication Protocols |
|
|
21 | (10) |
|
|
31 | (9) |
|
2.2.5 Mobile User Experience Guidelines |
|
|
40 | (5) |
|
|
45 | (2) |
|
2.2.7 Dealing with Offline and Partially Connected Devices |
|
|
47 | (16) |
|
|
63 | (1) |
|
Chapter 3 Platform-Independent Development Strategy |
|
|
64 | (8) |
|
3.1 High-Level App Development Flow |
|
|
64 | (1) |
|
3.2 Five-Layer Architecture |
|
|
65 | (1) |
|
3.3 Five-Layer Architecture Detail |
|
|
66 | (6) |
|
3.3.1 The User Interface Layer |
|
|
66 | (2) |
|
3.3.2 The Service Interface Layer |
|
|
68 | (1) |
|
|
69 | (1) |
|
3.3.4 The Data Abstraction Layer |
|
|
70 | (1) |
|
|
70 | (2) |
|
Chapter 4 The User Interface Layer |
|
|
72 | (7) |
|
4.1 Porting Versus Wrapping |
|
|
72 | (1) |
|
4.2 Multi-Client Development Tools |
|
|
73 | (3) |
|
4.2.1 PhoneGap (http://phonegap.com/) |
|
|
73 | (1) |
|
4.2.2 Xamarin (http://xamarin.com/) |
|
|
74 | (1) |
|
4.2.3 Unity (http://www.unity3d.com) |
|
|
75 | (1) |
|
|
76 | (1) |
|
4.3 Cross-Platform Languages |
|
|
76 | (1) |
|
4.4 Avoid Writing for the Least Common Denominator |
|
|
77 | (1) |
|
|
78 | (1) |
|
Chapter 5 The Service Interface Layer |
|
|
79 | (35) |
|
|
79 | (3) |
|
|
80 | (1) |
|
5.1.2 Partially Connected Scenarios |
|
|
81 | (1) |
|
5.2 Message Processing Patterns |
|
|
82 | (3) |
|
5.3 High-Volume Messaging Patterns |
|
|
85 | (6) |
|
5.3.1 Queue Services and Microsoft Azure Event Hubs |
|
|
86 | (3) |
|
|
89 | (2) |
|
5.4 High-Volume Push Notifications |
|
|
91 | (6) |
|
5.4.1 Third Party Notification Hubs |
|
|
93 | (4) |
|
5.5 Message Translation and Routing |
|
|
97 | (14) |
|
5.5.1 Message Translation |
|
|
97 | (6) |
|
|
103 | (5) |
|
5.5.3 Handling Large Amounts of Data |
|
|
108 | (3) |
|
|
111 | (3) |
|
Chapter 6 The Service Layer |
|
|
114 | (40) |
|
|
114 | (3) |
|
6.1.1 Scale Out and Scale Up |
|
|
114 | (1) |
|
6.1.2 Scale Out versus Scale Up |
|
|
114 | (3) |
|
6.2 Planning for Horizontal Scaling |
|
|
117 | (4) |
|
|
117 | (3) |
|
|
120 | (1) |
|
6.3 Designing Service Layers for Mobile Computing |
|
|
121 | (3) |
|
6.3.1 Service Componentization |
|
|
122 | (2) |
|
6.4 Implementation Abstraction |
|
|
124 | (3) |
|
6.4.1 Service Interface Abstraction |
|
|
124 | (3) |
|
6.5 Using CQRS/ES for Service Implementation |
|
|
127 | (13) |
|
|
127 | (2) |
|
|
129 | (1) |
|
6.5.3 Being Able to Separate Data Models |
|
|
129 | (2) |
|
6.5.4 Aggregates and Bounded Contexts |
|
|
131 | (1) |
|
6.5.5 The Read and Write Sides |
|
|
132 | (1) |
|
6.5.6 CQRS Communications |
|
|
132 | (8) |
|
6.6 Side by Side Multi-Versioning |
|
|
140 | (1) |
|
|
141 | (1) |
|
6.8 Consumer, Business, and Partner Services |
|
|
141 | (1) |
|
6.9 Portable and Modular Service Architectures |
|
|
142 | (10) |
|
6.9.1 Designing Pluggable Services |
|
|
145 | (2) |
|
|
147 | (4) |
|
6.9.3 Deployment and Hosting Strategies |
|
|
151 | (1) |
|
|
152 | (2) |
|
Chapter 7 The Data Abstraction Layer |
|
|
154 | (22) |
|
|
154 | (3) |
|
7.2 Using the DAL with External Services |
|
|
157 | (2) |
|
|
159 | (15) |
|
|
160 | (1) |
|
|
161 | (5) |
|
|
166 | (2) |
|
|
168 | (1) |
|
7.3.5 Storage Consideration |
|
|
169 | (3) |
|
|
172 | (2) |
|
|
174 | (2) |
|
|
176 | (28) |
|
|
177 | (1) |
|
8.2 Business Rules in the Data Layer |
|
|
178 | (1) |
|
|
178 | (3) |
|
|
181 | (16) |
|
|
183 | (3) |
|
|
186 | (3) |
|
8.4.3 Column Family Databases |
|
|
189 | (5) |
|
|
194 | (3) |
|
|
197 | (1) |
|
|
197 | (3) |
|
|
200 | (3) |
|
8.6.1 The Polyglot Data Layer |
|
|
201 | (2) |
|
|
203 | (1) |
|
Chapter 9 Strategies For Ongoing Improvement |
|
|
204 | (17) |
|
|
204 | (3) |
|
|
206 | (1) |
|
9.1.2 Service Interface Layer |
|
|
206 | (1) |
|
|
206 | (1) |
|
9.1.4 Data Abstraction Layer |
|
|
206 | (1) |
|
|
207 | (1) |
|
9.2 Data Collection Matters |
|
|
207 | (2) |
|
|
209 | (3) |
|
|
212 | (4) |
|
|
214 | (2) |
|
|
216 | (4) |
|
|
220 | (1) |
|
|
221 | (4) |
References |
|
225 | (4) |
Index |
|
229 | |