面,也可以多虚拟主机模式,就是域名隔离。 这种模式可以其他方式呈现,比如类似微服务模式,controller/src创建目录如果类似域名,就是中间有一个点,那么这个目录独立注解函数。
比如我们在controller/src创建aaa.combbb.com两个域名目录,他们都有news路径注解函数,实现功能有所不同
- http://www.aaa.com/news 对应的是aaa.com域名的注解函数
- http://www.bbb.com/news 对应的是bbb.com域名的注解函数
这种模式可以管理复杂大型项目,而且还是单体模式,更多使用方式可能等熟悉后自己自由发挥。
SAAS开发模式配置
先配置conf/server.conf假设cn.aaa.com域名 配置SAAS模式
[cn.aaa.com] wwwpath=/www/user/www/aaa http2_enable=1 upload_max_size=16777216 siteid=9 groupid=0 alias_domain=aaa.com themes=cnwwwpath 就是cn.aaa.com域名www根目录,这个可以手动创建或由超级后台创建,详见cppcms数据库superadmin表,里面basesitepath字段表示本超级管理员名下多租户基本目录。
http2_enable=1 表示开启http/2
upload_max_size=16777216 表示上传文件最大为16M
siteid=9 就是有超级管理员创建产生的ID,详见cppcms数据库siteinfo表,里面userid字段
groupid=0 是备用的,预设分组用
alias_domain=aaa.com 默认为空不用设置,表示使用controller/src目录下aaa.com目录下注解函数,如果没有会使用框架默认带的注解函数,其它域名也可以使用这个目录下注解函数,只要同样alias_domain=aaa.com设置
themes=cn 表示使用view目录下cn目录
themes_url= 表示访问themes图片等资源的url
SAAS模式使用
使用方法在httppeer.h定义
std::string get_sitepath(); unsigned long long get_siteid(); unsigned long long get_groupid(); std::string get_theme(); std::string get_themeurl(); void theme_view(const std::string &a);使用方法例子,在注解函数中使用
controller ├── src │ └─ aaa.com │ └── article.cpparticle.cpp内容示例
namespace http { namespace aaa { //@urlpath(null,articles) std::string front_article(std::shared_ptr<httppeer> peer) { unsigned int userid=peer->get_siteid(); peer->theme_view("front/articlelist"); } }// namespace aaa }//namespace http注意: namespace aaa 命名空间,aaa命名空间名称是aaa.com点号前面部分
peer->theme_view("front/articlelist");前面我们设置了themes=cntheme_view 使用view/cn/front/articlelist.html视图文件
主要特性1:controller/src创建aaa.com目录,如果不使用alias_domain=aaa.com设置 是无法使用的,这样方便大