2.1.2 服务端部分
因为本次设计的侧重点在于客户端部分的设计而不是服务端的搭建,所以,服务端决定采用Parse提供的云端服务,这样可以把开发精力完全放在客户端的实现上。
Parse是专为移动应用提供后台服务的云计算平台,为开发者包办繁琐的后台服务,让开发者只需专注于具体的开发工作。它提供任意数据保存、照片或其它文件存储、发送推送通知、创建用户帐号、使用地理位置数据、添加社交网站帐号登陆等等服务。
2.1.3 数据库部分
当今主流的数据库有很多选择,都提供了非常强大的功能,不过考虑到本平台对数据的要求仅仅是存储与查询而已,所以,优先考虑的是选用轻量级的易学易用的数据存储方式。结合之前的调研结果,这里同样使用Parse的云服务,Parse的数据存储方式与其他关系型数据库的结构大体类似,但在使用上更加简便。
2.1.4 移动客户端部分
由于iOS系统的软件与硬件的整合度相当高,使其分化大大降低,这样也增加了整个系统的稳定性,故决定先进行iOS客户端的开发。
2.2 技术背景
2.2.1 Objective-C
Objective-C,是扩充C的面向对象编程语言。它主要使用于Mac OS X和GNUstep这两个使用OpenStep标准的系统,而在NeXTSTEP和OpenStep中它更是基本语言。Objective-C的流行当归功于iPhone的成功,因为Objective-C一直被用于编写iPhone应用程序。
Objective-C是非常实际的语言。它是一个用C写成、很小的运行库,只会令应用程序的大小增加很小,和大部分OO系统使用极大的VM执行时间会取代了整个系统的运作相反。Obj-C写成的程序通常不会比其原始码大很多。而其函式库(通常没附在软件发行本)亦和Smalltalk系统要使用极大的内存来开启一个窗口的情况相反。
和C++不同,Objective-C不支援运算子多载(它不支持ad-hoc多型)。亦与C++不同,但和Java相同,Objective-C只容许对象继承一个类别(不设多重继承)。Categories和protocols不但可以提供很多多重继承的好处,而且没有很多缺点,例如额外执行时间过重和二进制不兼容。
由于Obj-C使用动态运行时类型,而且所有的方法都是函数调用(有时甚至连系统调用(syscalls)也如此),很多常见的编译时性能优化方法都不能应用于Obj-C(例如:内联函数、常数传播、交互式优化、纯量取代与聚集等)。这使得Obj-C性能劣于类似的对象抽象语言(如C++)。不过Obj-C拥护者认为既然Obj-C运行时消耗较大,Obj-C本来就不应应用于C++或Java常见的底层抽象。
2.2.2 MVC框架
MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。具有耦合性低、重用性高、可文护性高等特点。
(1) 模型(Model)
用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“模型”有对数据直接访问的权力,例如对数据库的访问。“模型”不依赖“视图”和“控制器”,也就是说,模型不关心它会被如何显示或是如何被操作。但是模型中数据的变化一般会通过一种刷新机制被公布。为了实现这种机制,那些用于监视此模型的视图必须事先在此模型上注册,从而,视图可以了解在数据模型上发生的改变。(比较:观察者模式(软件设计模式))
(2) 视图(View)
能够实现数据有目的的显示(理论上,这不是必需的)。在视图中一般没有程序上的逻辑。为了实现视图上的刷新功能,视图需要访问它监视的数据模型(Model),因此应该事先在被它监视的数据那里注册。 IOS校园学生物品交易平台移动客户端设计(3):http://www.751com.cn/jisuanji/lunwen_11789.html