通过“分布式系统的8大谬误”反思APP的设计 第六篇 谬误6:只有一个管理者 - 简书



通过"分布式系统的8大谬误"反思APP的设计 第六篇 谬误6:只有一个管理者 - 简书

作为一个开发者,你可以控制在什么时候发布新的APP或新的服务器版本,但任何人都控制不了到底有多少类型的设备在运行你的APP。用户们可以在按自己意愿更新应用,也许更本不会再更新。导致你不得不同时处理各种版本。对于基于网络的应用,这是个大麻烦,你得不得同时处理不同版本的不同API接口请求。我认为,非常有必要在一开始就引入API版本管理。也许不会马上就需要支持多个api版本,但是这样一个策略存在,比方当你需要修改现有api调用是,可将接口从api.example.com/1/迁移到api.example.com/2,这使得新app的发布更加简单。

此外,为了支持不同版本的api,APP需要能进行本地版本的升级。如果应用升级的原因,修改了数据的格式(数据可能是保存在硬盘,coredata,keychain),你需要有个迁移之前用户数据的计划(至少升级后的应用不能在读取老数据时抛出异常)。你需要考虑从版本1.0直接升级到3.0的情况,而从中跳过了版本2.0。

用户就是他们设备的管理员,他们可以任意设置设备的限制,而你的APP就运行在这些设备上。比方,只有部分人会容许你获取地理位置信息,只有部分人会容许推送消息。有些会使用家长控制功能禁止孩子使用Safari,应用市场,或其他应用。

原文链接:http://blog.carbonfive.com/2010/12/03/iphone-distributed-computing-fallacy-6-there-is-one-administrator/

译者的总结:

1,作者主要说的是,你虽然是应用的开发者,但你其实无法掌握什么时候更新应用,包括应用运行的环境;这就是作者说,不止一个管理者。实际上,每个用户都是你的应用的管理者。

2,作者说的本地更新,我是深有体会。之前做个一个即使通信工具,会将数据保存在本地;后来不但需要支持文本还需要支持语音,图片。。。。之前的数据结构需要扩展,所以新版运行是需要先把之前的数据格式进行迁移。教训啊,教训。。


Read full article from 通过"分布式系统的8大谬误"反思APP的设计 第六篇 谬误6:只有一个管理者 - 简书


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts