----------------------------------------------------------- | URL Routing | ----------------------------------------------------------- ----------------------------------------------------------- | Controller Routing | ----------------------------------------------------------- ----------------------------------------------------------- | Controller | -----------------------------------------------------------
----------------------------------------------------------- | View Dispatcher | ----------------------------------------------------------- --------- --------- ---------- ------ -------- --------- |View Ad| |Listing| |Homepage| |User| |Search| |Payment| |View | |View | |View | |View| |View | |View | --------- --------- ---------- ------ -------- --------- ----------------------------------------------------------- | Template Engine | ----------------------------------------------------------- ----------------------------------------------------------- | Model (Data Binding) | ----------------------------------------------------------- ----------------------------------------------------------- | Model/Graph Integration | -----------------------------------------------------------
------------------ ----------------- -------------------- | HTTP Transport | | PHP Transport | | Socket Transport | ------------------ ----------------- -------------------- ----------------------------------------------------------- | Security/Prettifier/Limit Control | -----------------------------------------------------------
----------------------------------------------------------- | Graph () API | ----------------------------------------------------------- ----------------------------------------------------------- | Node | -----------------------------------------------------------
----------------------------------------------------------- | Edges | ----------------------------------------------------------- ----------------------------- ---------------------------- | ID | | Connections | ----------------------------- ----------------------------
----------------------------- ---------------------------- | Data | | Algorithm Dispatcher | ----------------------------- ---------------------------- ----------------------------- --------- --------- -------- | Global/Local Namespace | |Listing| | Plain | | User | | Conversion | |Logic | | Logic | | Logic| ----------------------------- --------- --------- --------
----------------------------- ---------------------------- | Storage Dispatcher | | Search Dispatcher | ----------------------------- ---------------------------- -------- -------- ---------- --------- -------- --------- |MySQL | |Mongo | |External| |Elastic| |Solr | |MySQL | |Driver| |Driver| |Driver | |Search | |Search| |Search | -------- -------- ---------- --------- -------- ---------
Database Driver 完成所有与具体的数据库服务器之间的接口。 这一层以上不会再出现任何babel_topid,tpc_bak2, attributeData这样的字符串了。
Storage Dispatcher, Search Dispatcher根据对象类型分配driver.
这一层以上不应该有任何地方知道数据存在哪里,如何存储。
Global/Local Namespace Conversion层,保证之上所有的对象都是用GID访问。
这一层以上不应该有任何地方能够看到lid(Local ID),所有ID都是唯一的。
这一层一下不应该知道有global ID的存在
Data层,基础数据类,所有数据从它而来。完成Versioning等
Algorithm Dispatcher层,根据不同上下文选择合适的connection逻辑
这一层之上不应该知道任何业务逻辑(这里使用Strategy设计模式,并不产生混乱)
Listing Logic等层,提供置顶,排序,去除等各种listing业务逻辑
Search Dispatcher层,把Query分配给合适的Search提供者
这一层以上不应该知道搜索由谁提供
这一层以下不应该知道任何逻辑
Edges层,解析id,和id的各种连接。
这一层之上把conn就应该当作数据的一部分,不作区分。
Node层,Graph的基础数据层
Graph层,提供graph()函数调用,以及对于Graph的命令解析,提供斜线分割的语法。
Security层,保证API的调用安全性,访问次数,对象组装等最后包装工作
Transport层,提供各种连入Graph API的方法。
Transport层以上是示意图,并没有仔细推敲,大概描述使用Graph API的场景