历尽千辛万苦,我们终于不用写文档了,也开始了原型的制作流程,然而我们想让一个软件真正的被制作出来这些是远远不够的,我们可能需要花大量的时间不停的修改我们的设计,来将我们生产出来的软件调整到最好的状态。不过在此之前我们首先要确定使用那些技术来构建我们的软件。技术和设计息息相关两者都是十分的重要。
技术架构的两种思考方式
由于是独立开发者,所以我认为设计技术架构的时候有两种思考方式,一种是自上而下的,这是现代软件团队常会使用到的方法,就是根据设计的时候实际需求对软件产品进行技术构建。另外一种是自下而上的构建方式,就是根据自己会使用那些编程语言来进行开发和设计。
由于我个人技术能力有限所以我还是以自下而上的方式构建软件,用我自己熟悉的技术去编写土豆皮
土豆皮的技术构架
硬件部署
土豆皮的硬件部署比较传统,常规的网站应用架构就是这个样子的。现代要求软件逻辑业务放在云端,前端页面的压力尽量分担给客户端。
软件部署
数据库
首先我们土豆皮所有的数据类型一般就是数字和文本,所以这些数据类型一定都是要存放到数据库当中的。根据我熟悉和了解的数据库我只有两种选择mysql和mongodb
两者各有千秋,一种是关系型数据库,一种是非关系型数据库,简单的来说,mysql需要表来管理不同数据之间的关系,mongodb则不需要。
使用哪种数据库取决于我们的业务逻辑,这个要等我们确定好业务逻辑以后再开始设计。
业务逻辑
业务逻辑我有两种选择一种是PHP另外一种python,这两种都是比较简单的语言,不过考虑到未来我们需要使用到数据分析,而且之前也介绍过很多关于python的文章,所以我这次决定使用python来构建我们的程序。
客户端
其实最头疼的就是客户端的构建,因为客户端太多了,使用的技术都不太相同。好在我们的业务逻辑比较简单,功能也算不上复杂,为了保证开发效率,我决定采用H5配合JS来适配所有的客户端,当然其中为了适配android或者ios可能还需要使用到其他的程序来构建。
实际上我只是想偷个懒,因为H5是一种一劳永逸的技术,虽然个方面性能,兼容性会出现一些问题。但是他也有优点,大家有没有发现手机上经常有软件更新的时候我们已经不会去更新这个软件了,H5+JS就可以做到客户端的内容配合服务端进行更新,我们只要对前端页面进行更新所有的设备上的应用都可以自动完成更新。这样子就不用用户自己再重新下载安装更新软件了。
真实的技术构建情况
在现实项目当中,构建软件所使用的技术多种多样,但是对稍微大一些的软件产品,比如淘宝,12306这样的产品他们大多数会使用一些成熟的解决方案,他们很少冒险去尝试使用新的技术架构方案。而且对于比较大型的网站或者APP说,他们的解决方案往往不会局限于一种编程语言或者一种框架,如果有必要他们完全可以自己去构建一套符合他们自己业务逻辑的语言工具。