manageiq代码结构、框架、执行流程分析

本文详细分析了manageiq的代码结构,基于Rails的MVC架构,介绍了从浏览器请求到控制器、模型、视图的执行流程。通过示例解释了如何查找和理解manageiq的代码,包括登录过程和添加云提供商的步骤。同时提供了相关资源链接以便深入学习。

概述(overview)

由于manageiq是使用rails编写的,所以manageiq的源代码目录结构是标准的rails的目录结构,rails开发语言是ruby,框架是mvc模式的。

manageiq代码的目录结构
首先了解一下标准的rails目录结构,如下图:
在这里插入图片描述

ManageIQ的代码目录结构:
ManageIQ is a Rails application with the following standard layout:
在这里插入图片描述

详细介绍请看manageiq的官方文档介绍:
http://manageiq.org/docs/guides/architecture/source_code_layout

rais 程序架构、执行流程

Rails 采用了“模型-视图-控制器”(简称 MVC)架构模式。这种模式把应用中的数据(例如用户信息)与显示数据的代码分开,这是图形用户界面(Graphical User Interface,简称 GUI)常用的架构方式。 MVC 架构图解:
mvc_detailed.png
与 Rails 应用交互时,浏览器发出一个请求(request),Web 服务器收到请求之后将其传给 Rails 应用的控制器,决定下一步做什么。某些情况下,控制器会立即渲染视图(view),生成 HTML,然后发送给浏览器。在动态网站中,更常见的是控制器与模型(model)交互。模型是一个 Ruby 对象,表示网站中的一个元素(例如一个用户),并且负责与数据库通信。与模型交互后,控制器再渲染视图,把生成的 HTML 返回给浏览器。

程序执行流程:

  • 图中各步的说明如下:
    浏览器向 /users 发送请求;
    Rails 的路由把 /users 交给 Users 控制器的 index 动作处理;
    index 动作要求 User 模型读取所有用户(User.all);
    User 模型从数据库中读取所有用户;
    User 模型把所有用户组成的列表返回给控制器;
    控制器把所有用户赋值给 @users 变量,然后传入 index 视图;
    视图使用嵌入式 Ruby 把页面渲染成 HTML;
    控制器把 HTML 送回浏览器。
  • 关于rails的资料请看如下链接:
    Ruby on Rails 教程 https://railstutorial-china.org/book/
    Ruby on Rails 指南 http://guides.ruby-china.org/

manageiq代码执行过程展示

看过上面的介绍后,如果想要了解manageiq的代码可根据如下方法来查找:

  • 浏览器发送一个链接请求,
  • 去config/routes.rb里面, 根据链接来确定这个请求由哪个controller的action来处理, 这里找到了controller。
  • cotroller调用model来处理请求,然后调用view来对结果进行渲染, 这里找到了model与view。
  • 浏览器接收结果,对结果进行展示, 一次请求结束。 、
  • 根据上面的执行流程,如果想知道manageiq某一个网页的代码,以及修改某一部分,就可以按照上面的过程来查找。

manageiq登陆过程分析

  • 启动服务
    在此之前需要先安装好环境,并下载代码,进入代码目录并执行下面命令:
rails server
root :to => 'dashboard#login'

从这段代码可以看到处理默认访问的controller是 dashboard里面的login方法,去 controller里面找到dashboard控制器。

如下图所示:
Firefox_Screenshot_2016-11-12T09-35-36.372Z.png

当在浏览器中输入用户名、密码后点击 login 按钮后,如上图 1、2、3 过程所示,会从新回到 controller里面去验证用户名密码。

providers 部分代码启动流程

服务启动后,选择 Compute -> Clouds -> Providers, 此时网页链接: http://localhost:3000/ems_cloud/show_list ,然后在齿轮图标那里选择 Add a New Cloud Provider,这里就是添加aliyun代码的部分了,此时网页链接:http://localhost:3000/ems_cloud/new

= render :partial => "shared/views/ems_common/angular/form"

view处理结束后把结果返回给网页,这次请求将结束。
rails是如何加载的
http://blog.youkuaiyun.com/cloudcraft/article/details/7654118
https://ruby-china.org/topics/23588
http://www.oschina.net/question/136896_166772?sort=time

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值