我对完整的架构想法有不同的疑问。我希望有经验丰富的人能够帮助我,因为我几乎陷入了所有的可能性。API作为网站和移动应用程序的核心
我打算重写一个社区网站。我们的客户希望在未来使用原生移动应用程序。所以我需要考虑这一点。正因为如此,我决定创建一个基于PHP框架Kohana的100%REST API体系结构。我选择了Kohana,因为这样可以非常轻松地将内部API扩展到其他服务器,而无需额外的工作。 (Kohana威胁内部URL请求不是HTTP,因此开始时没有太多开销,并且可以通过一些小的代码更改扩展到HTTP)。
起初,API将是私有的,但稍后我们可能会公开让更多服务轻松连接到我们。
德基本REST结构如下:
- /猫
- /猫/ 1
- /猫/ 1 /自定义
'自定义' 可以是 '孩子的'例如。
同样适用于:
- /广告
- /投标
- /用户
- /横幅
- 等。
这些是API完美的实体因为移动应用程序肯定会使用所有这些功能。
所以我们可以总结出网站的核心是REST。所以基本上我想将网站作为API的客户端,就像将来的本地应用程序一样。这样维护似乎更容易。
我担心的是,除此之外还有很多事情(管理上传的文件,发票,发票的自动邮件,广告的自动邮件等等)。上传文件需要通过网站到达API。这是常见的做法吗?如果我不这样做,该网站将做上传逻辑,这使得该网站不再是客户端和应用程序本身。因此,移动应用程序甚至无法上传,API和网站都需要知道上传文件夹(重复逻辑)。
我想创建以下模块:
- 社区API
- 社区网站
阿比似乎是核心呢。但是...... cronjob等呢?其实他们不应该成为网站的一部分,因为这只是一个'客户'。我觉得他们应该直接与模型或API交互。所以基本上API变得更像一个门户的核心,我想我需要这样的:
- 社区为核心
- 模型
- Cronjobs
- 自动邮件(cronjobs的一部分)
- 发票等
- 社区API
- 交互通过HTTP
- 社区网站
- 网站
- 联系
核心的cronjob核心模型s是REST结构的一个例外。他们是唯一可以在不通过API的情况下更改数据的人。至少这是我的想法,因为他们属于核心,API是核心。
但通过设计,这似乎只是错误的。操作应该只通过API!
备选:
- 社区为核心
- 模型
- 社区API
- 互动通过HTTP在核机型
- 社区商业
- Cronjobs
- 自动邮件(cronjobs的一部分)
- 发票等
- 社区网站
- 网站
- 联系
这看起来通过设计更好的给我。 Mindmap illustration http://mauserrifle.nl/mindmap.jpg
主要问题
1)
应该cronjobs通过API或Core模式操作?
2)
我的发票的cronjob需要一个模板几乎当然主要网站的风格。但是如果我的cronjob是业务或核心的一部分,它不会知道我的主要网站。解决这个问题有意义吗?
3)
我的网站将使用胡子作为模板引擎。 (php和javascript都可以解析这些模板)。我想直接使用API的Ajax调用,但后来意识到:
该网站从API获取数据,格式化时间戳时间(Y-M-d)为模板,然后渲染。如果我让javascript直接调用api,javascript也必须有逻辑(格式化)。这是重复的代码!感觉像唯一的解决方案是调用网站的Ajax(调用api和格式)并返回格式化的json。我对吗?
但是....简单的调用,如删除一个广告可以去直接通过API(例如,删除:/广告/ 1
我收到电话的混合....
任何更好的解决方案此
4)
总:是我的建筑太复杂?我应该考虑任何替代方案?
我很想听听您的意见!
我假设你的最后一句话是肯定的? (通过构建API-Centric,你已经拥有了一个公共API?)感谢那篇文章,它指的是Twitter博客,它激励我使用这种构建方式,所以一定要阅读这篇文章,然后回到这个话题稍后:) – mauserrifle 2012-02-27 13:56:21
好吧,我已经实施的文章(kohana方式)的大部分。我对创建该网站作为API的客户端有很好的感觉。仍然不确定在哪里把cronjobs等(这是内部逻辑)。我还必须建立一个管理员(网站的一部分)来管理所有额外的实体,这感觉就像是一项工作的开销:/再次,一旦构建......未来有很多可能性。提示? – mauserrifle 2012-02-27 15:08:30
这正是我的观点。几乎100%的案例都需要具备与应用程序相关的特定功能,例如cronjob,这些功能并不适合采用以API为中心的方法。这意味着在我看来,应该将Web服务与主应用程序(如wsdl)分离。 – 2012-03-07 13:22:09