(1)入门MasaFramework教程

首先了解一下MasaFramework是什么

MasaFramework是一个基于.Net6.0的后端框架, 可以被用于开发Web应用程序、WPF项目、控制台项目

其实就是MasaFramework提供了很多功能的包,很强大,对于Dapr的支持非常好,如果有想尝试Dapr的可以试试MasaFramework

然后我们开始使用MasaFramework,进入实战

  1. 安装MasaFramework项目模板

    dotnet new --install Masa.Template

    这样就安装成功了

  2. 创建项目

    打开一个目录,打开控制台进行创建模板项目,创建一个mfDemo的项目模板

    dotnet new masafx --name mfDemo

    这样就创建完成了,打开解决方案

  1. 项目结构解析

我们可以看到打开解决方案以后的项目结构

项目区分src/ApiGatewayssrc/Contractssrc/Servicessrc/Web四层,这个时候可能就会有很多人有疑惑了,为什么跟传统的Abp架构设计有些差异,其实这个就是MasaFramework的框架美妙之处。

src/ApiGateways中包含对外使用的接口实现,相当于我可以直接将src/ApiGatewayssrc/Web的前端项目使用,这样的好处就是减少前端项目的依赖性,并且对于接口的快速对接

src/Contracts中包含了基本的模型,和一些共享的东西,src/Contracts是纯粹的,没有任何依赖,所以src/ApiGatewayssrc/Services都会直接依赖src/Contracts,用于共享Module或其他东西,

src/Services中就是包含了具体业务和实现,并且包含Host

​ 在Application中包含业务处理或事件处理

如果你并未使用MiniApi的话应该出现的就是Controllers

其实建议使用MiniApi,因为俩个实现方式不一样,导致MiniApi在性能上对比Controllers更好

Infrastructure中就是项目的基础设施了,看图我们发现EntityMiddlewareRepositoryDbContext都在基础设施中

MasaFramework的设计就是简化项目复杂,将其柔和在一个项目中,如果你刚刚使用MasaFramework,千万千万不要拆分,你拆分了和MasaFramework本身设计就不太相符合,但是如果你是熟练的大佬,当我没说,刚刚入门MasaFramework请务必使用本身框架的设计

src/Web就是我们的实际的前端项目了

创建的默认的模板提供是Blazor Server模式的项目,可以自行拆分成三层项目mfDemo.Shared mfDemo.ServermfDemo.WebAssembly三层项目架构。

mfDemo.Shared可以理解成项目的所有实现和界面等一切功能,

mfDemo.Server其实就是个Blazor Server的壳,用于托管mfDemo.Shared项目

mfDemo.WebAssembly其实也是个Blazor WebAssembly的壳,用于托管mfDemo.Shared项目

这样我们的项目就可以支持Blazor ServerBlazor WebAssembly两种模式了,

结尾

通过上文我们可以基本将MasaFramework的项目结构了解清楚,也知道MasaFramework的设计了,

当前是MasaFramework的第一篇入门,我会继续学习MasaFramework并且分享给大家

来自token的分享

MASA Framework

学习交流:737776595

(1)入门MasaFramework教程的更多相关文章

  1. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  2. Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数

    上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...

  3. Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数

    上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...

  4. Angular2入门系列教程4-服务

    上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...

  5. ASP.NET Aries 入门开发教程7:DataGrid的行操作(主键操作区)

    前言: 抓紧勤奋,再接再励,预计共10篇来结束这个系列. 上一篇介绍:ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑 本篇介绍主键操作区相关内容. 1:什么时候有默认的 ...

  6. ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑

    前言: 为了赶进度,周末也写文了! 前几篇讲完查询框和工具栏,这节讲表格数据相关的操作. 先看一下列表: 接下来我们有很多事情可以做. 1:格式化 - 键值的翻译 对于“启用”列,已经配置了格式化 # ...

  7. ASP.NET Aries 入门开发教程4:查询区的下拉配置

    背景: 今天去深圳溜达了一天,刚回来,看到首页都是微软大法好,看来离.NET的春天就差3个月了~~ 回到正题,这篇的教程讲解下拉配置. 查询区的下拉配置: 1:查询框怎么配置成下拉? 在配置表头:格式 ...

  8. 2013 duilib入门简明教程 -- 第一个程序 Hello World(3)

    小伙伴们有点迫不及待了么,来看一看Hello World吧: 新建一个空的win32项目,新建一个main.cpp文件,将以下代码复制进去: #include <windows.h> #i ...

  9. 2013 duilib入门简明教程 -- 部分bug (11)

     一.WindowImplBase的bug     在第8个教程[2013 duilib入门简明教程 -- 完整的自绘标题栏(8)]中,可以发现窗口最大化之后有两个问题,     1.最大化按钮的样式 ...

  10. 2013 duilib入门简明教程 -- 部分bug 2 (14)

        上一个教程中提到了ActiveX的Bug,即如果主窗口直接用变量生成,则关闭窗口时会产生崩溃            如果用new的方式生成,则不会崩溃,所以给出一个临时的快速解决方案,即主窗口 ...

随机推荐

  1. 062_Apex使用Assert

    assert关键字用法简单,但是使用assert往往会让你陷入越来越深的陷阱中.应避免使用.总结了以下原因:   1.用assert代替if是陷阱之二.assert的判断和if语句差不多,但两者的作用 ...

  2. 移动端唤起QQ聊天 (ios android 包含微信、qq内置浏览器)

    var u = navigator.userAgent; var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); if(isiOS){ if(u ...

  3. Pytest Fixture(二)

    作用域 固件的作用是为了抽离出重复的工作和方便复用,为了更精细化控制固件(比如只想对数据库访问测试脚本使用自动连接关闭的固件),pytest 使用作用域来进行指定固件的使用范围. 在定义固件时,通过  ...

  4. com.alibaba.fastjson.JSONObject cannot be cast to xxx

    今天在使用json格式的数据进行转化的时候遇到了这个问题,故此记录下来. 通常我们使用JSON把数据转成实体的方法是这样的 List<DataModel> dataModels= (Lis ...

  5. SQL-分组聚合

    -- 语法 select * |列名|表达式         -- 5 from 表名                         -- 1 where 条件                    ...

  6. Jmeter前置处理器和后置处理器的使用

    一.JMETER基本概念  1. 测试计划:顶级菜单,代表一个测试计划: 2. 线程组:代表一个要测试的场景(各种相关的交易集合),对于性能测试来说可以指定多少个用户完成这个场景的内容,对于自动化测试 ...

  7. Jmeter四、jmeter脚本组成和组件搭配

    一.jmeter脚本开发原则 简单:去除无关的组件,同时能复用的尽量复用. 正确:对脚本或者业务正确性进行必要的判断,不能少也不能多(200) 高效:部分组件仅仅在脚本开发模式使用,在真正生产环境下不 ...

  8. 时间格式转换成指定格式(Vue)

    1 /** 2 * Parse the time to string 3 * @param {(Object|string|number)} time 4 * @param {string} cFor ...

  9. vue 3.0 引入swiper 8 direction不生效

    需要手动给元素高度  <swiper         class="my-swiper"         :modules="modules"       ...

  10. LOJ数列分块入门九题(上)

    一转眼,已经有整整一年没有在博客园写博客了.去洛谷写了几篇(How time flys. 最近突然想起其实我不太擅长分块算法,又想起去年暑假有位同学同我提起过LOJ的数列分块九题,说来惭愧,打了这么久 ...