MVC与嵌入式框架分层


前言

上篇和上上篇把嵌入式框架分层与MVC分别进行了简单的了解,知道了每个部分的优缺点,现在将两者进行结合,进一步进行学习。


下面是这两篇文章

MVC与嵌入式
嵌入式框架分层

一、结合MVC和框架分层

首先要知道,MVC是更多的是在逻辑层面是应用层面实现的,而不是功能层面的。

在之前嵌入式框架的途中那个小例子可以这样表示。

在这里插入图片描述
更为详细地调用就是下图的顺序,这样,就把MVC和嵌入式框架相进行结合。在的项目中,每个人负责的部分都可以是不一样的,能够加快进度,业务逻辑层只需要大概知道功能模块层定义的API就可以进行开发了,而负责功能模块层的人,就根据自己提供的API进行功能模块的设计。

在这里插入图片描述

二、结合RTOS进一步实现MVC

我使用的是rt-thread-nano进行的实现,推荐学习一下。
这里仅考虑上层MVC是怎么实现的,也就是仅仅考虑业务逻辑层,功能模块层暂不做讨论。

这里和这个
MVC与嵌入式文章的例子是一样的,几乎是一样的,只是需要添加一个启动业务就可以实现<MVC与嵌入式文章>中的小例子,也就是一个小demo想要大概了解,可以进去看看。

这个文章的小例子的思路是,根据MVC中的基本模式,分为3个线程,每个线程负责MVC中的其中的一个。

MVC与嵌入式文章的例子中,还差一个一个启动业务,就构成了一个完成的小demo了。

这个启动业务可以另外开一个线程,作为动态线程,处理完就释放资源即可。

启动业务逻辑:

#define THREAD_PRIORITY         25
#define THREAD_STACK_SIZE       512
#define THREAD_TIMESLICE        5

static rt_thread_t Start_thread = RT_NULL;

/* 线程 1 的入口函数 */
static void Start_thread_entry(void *parameter)
{
    rt_uint32_t count = 0;

	//每个功能的启动代码放在这里,等等
	Led_Start();
	Oled_Start();
	Usart_Start();
	rt_thread_delete(Start_thread );//删除线程		
}


/* 线程示例 */
int Start_thread_sample(void)
{
    /* 创建线程启动逻辑线程*/
    Start_thread = rt_thread_create("Start_thread",
                            Start_thread_entry, RT_NULL,
                            THREAD_STACK_SIZE,
                            THREAD_PRIORITY, THREAD_TIMESLICE);

    /* 如果获得线程控制块,启动这个线程 */
    if (Start_thread != RT_NULL)
        rt_thread_startup(Start_thread);


    return 0;
}


三、总结

最简单的RTOS与MVC以及框架分层就是下图,分别用不同的线程实现不同的逻辑,这样就结合MVC与嵌入式框架实现了最简单的方式。

更为复杂的方式:
控制器可以不唯一:不同控制器可以设置不同的线程进行输入

逻辑业务:也可以分为多个线程实现,将逻辑业务分层多个小部分实现。

视图业务:视图根据可以由多个表现形式,不同表现形式也可以用不同的线程表现。

这里仅仅是对最简单的情况进行了讨论,MVC和框架分层的部分,也只是对了应用层和业务逻辑层进行了讨论,实际上,使用这个思维也是在这两个层进行讨论的。嵌入式框架分层中,其他层大部分是不需要做改变的,就能将MVC的设计思路用到嵌入式里面了。
在这里插入图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值