基于django的horizon设计哲学.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
 HYPERLINK /yuxc/p/3419102.html Horizon Is Easy, Horizon Is Complex 本文出自我的同事兼基友@ HYPERLINK /monsterxx03 monsterxx03?之手,本人稍作润色 如果要用一句话来概括Openstack Dashboard项目Horizon:它是一个基于django webframework开发的标准的python wsgi程序。如果要再加一句废话,它一般会运行在webserver(apache/nginx)上。? Why Is It Easy?? 说Horizon简单,是指它的部署架构简单,就是个单纯的基于django的网站,后台甚至没有使用数据库。不像Swift,Nova这些项目,有非常多的组件(xxx-server,xxx-api…),理清楚各个组件之间的关系,数据流的走向都要费一番功夫。Horizon用到的技术也比较传统,没有异步非阻塞,消息队列,websocket这些比较时髦的东西(目前没有),前端也只是bootstrap+jquery+less,没有什么很前卫的东西。 用户从登陆到看到虚拟机列表的这个过程的数据流走向: Why Is It Complex? Horizon的复杂性分成两方面看: Horizon需要和几乎所有的OpenStack service api打交道, 而且各个服务可能就还有多个api版本,api多版本的兼容不是都能在client里完成的(比如Keystone),Horizon还需要针对各个api的多版本做兼容。 Horizon代码本身很复杂,抽象,利用了django相当多的高级特性,可以说把oop的概念运用到了极致,但这也为过度自定制Horizon带来了麻烦。 Design Philosophy Horizon是基于django开发的,要说Horizon的设计,不得不说django, Django focuses on automating as much as possible and adheres to the DRY(Dont Repat Yourself) principle. django的设计专注于代码的高度可重用,信奉DRY原则,一切面向对象,而Horizon可以说高度match了django的设计风格,good or bad就见仁见智了。 先说一点web开发的常识,网站程序基本有三部分组成,业务逻辑代码(Python),静态文件(js/css),模板(Python中的 jinja,mako,nodejs中有jade), 用户向webserver发起请求之后,server程序找到当前url对应的模板,填充模板变量(输出成字符串形式的html源码),返回给浏览器,浏览器渲染页面。 如果是简单的程序,一个页面就对应一个模板,非常简单。一般一个网站有自己的统一风格,所有页面都会有一些相同的元素,每个页面单独写一遍很累赘,也不好维护,所以一般模板语言都有继承(extend),插入(include)等特性,来提高页面的复用率。 Horizon做得就更彻底一些,它将页面上所有元素模块化,网页中一些常见元素,表单,表格,标签页,全部封装成Python类,每个组件有自己对应的一小块html模板.当渲染整个页面的时候,Horizon先找到当前页面有多少组件,将各个组件分别进行渲染变成一段html片段,最后拼装成一个完整的html页面,返回浏览器。 简单总结Horizon的特点: 页面元素模块化 子面板可插拔 All in One(从部署上来说,Horizon只有它自己这一个组件) Dive into?Horizon ?Some Concepts Horizon这套面板的设计分成三层:Dashboard → PanelGroup → Panel Horizon中现有的dashboard有4个: project 普通用户登陆后看到的项目面板 admin 管理登陆后可见,左侧的管理员面板 settings 右上角的设置面板,里面可设置语言,时区,更改密码 router(配置文件中将profile_support打开可见),ciso nexus 1000v的管理面板 每一个dashboard都是django中的一个app,django中的app可以理解成对业务逻辑模块化的一种手段,里面可以包含自己独有的url设定,模板,和业务逻辑代码. 每个dashboard下定义了一系列的PanelGroup,虚拟机管理对应到界面上就是一个PanelGroup(Manage Compute),里面有一系列的子panel(Overview, Instances, Volumes…)。Swift,heat,neutron

文档评论(0)

2017ll + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档