(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. Mysterious-GIF --- 攻防世界WP

    题目描述: 附件: ps:我重命名了一下为 cindy,gif 解题过程 1.分析该GIF (1)查看图片属性 (2)strings命令查找字符串 (3)winhex查看 (4)因为是GIF,所以可使 ...

  2. mac 打开活动监视器(任务管理器)

    打开方式 1.快捷键 command+option+esc 选择需要强制退出的app 2.通过菜单 需要查看完整的占用率 应用程序=>实用工具=〉活动监视器

  3. HDFS 机架感知与副本放置策略

    HDFS 机架感知与副本放置策略 机架感知(RackAwareness) 通常,大型 Hadoop 集群会分布在很多机架上,在这种情况下, 希望不同节点之间的通信能够尽量发生在同一个机架之内,而不是跨 ...

  4. servlet 500,405错误

    servlet500错误 状况: 1.能打开项目,但是打开web.xml中指定的servlet url错误报错500,再次刷新出现404 出现提示: 实例化Servlet类[xxx]异常 java.l ...

  5. Centos7 服务器安装jdk

    给自己留个步骤  有些centos系统会自带openjdk,我们需要先卸载 首先输入java -version,验证是否有安装jdk 如果有,接着输入rpm -qa | grep java 来显示jd ...

  6. git 报错 incorrect username or password

    如果报这个 就是用户名 或密码错误 添加个正确的凭据就好了

  7. 【PyQt6】Python中QDateTime的常用方法总结

    前置 QtDesigner里拖了一个QDateTimeEdit,设置时间格式为"yyyy/MM/dd HH:mm:ss" 常用函数 dt1 = object1.dateTime() ...

  8. 网易面经-hashmap是否能存null(debug源码)

    面试时一定要坚持自己的认知,不要让面试官两三下pua了. 结果是可以的 null作为key时被放在了tab下标为0的位置,只能有一个null null作为value时不受限制 虽然说value为nul ...

  9. 面向对象ooDay6

    精华笔记: static final常量:应用率高 必须声明同时初始化 由类名打点来访问,不能被改变 建议:常量所有字母都大写,多个单词用_分隔 编译器在编译时会将常量直接替换为具体的数,效率高 何时 ...

  10. oracle表名中带@什么意思,例如:select * from dim.dim_area_no@to_dw

    转载自:https://zhidao.baidu.com/question/259154968.html @是调用数据库链接(database link)的意思. 数据库链接的作用是从a数据库到b数据 ...