XAF新手入门 - 应用程序模型(Application Model)
应用程序模型不仅是XAF的核心,它更是XAF的最大特色,它自动收集XAF项目中的信息,用于生成不同平台的UI。由于应用程序模型在XAF中的重要性,官方文档对它的介绍比较详细,大家可以直接阅读官方文档 https://docs.devexpress.com/eXpressAppFramework/112579/ui-construction/application-model-ui-settings-storage
建议大家带着问题去阅读
- 应用程序模型的分层结构是什么样的,各层都包含了哪些信息,它们之间有什么区别
- 应用程序模型有哪些存储类型,它们有什么特点,普通用户与管理员之间的存储有什么不同
- 如何在代码中读取及修改应用程序模型的值
- 如何通过代码对应用程序模型进行扩展
- 如何使用ModelNodesGenerator生成节点
- 如何使用ModelNodesGeneratorUpdater自定义节点
应用程序模型在概念上理解起来不是很难,在XAF中它存储了用于生成UI所需的信息,同时市面上大多数的低代码平台也都是基于模型进行配置与存储,事后再根据用户的请求将模型生成相应的UI。
理解了上面的概念后,对于应用程序模型的基本操作应该没有问题,由于应用程序模型涵盖的内容比较多,如果想灵活的应用,还需要对它深入的了解。
下面讲一个容易产生疑惑的知识点,在我们对应用程序模型扩展时,都是通过接口实现,全程没有创建继承接口的类,访问扩展时也都是直接访问接口,这里可能有些小伙伴会有疑惑XAF是怎么实现的,我们都知道如果想正常运行必须要有类的存在,其实类是XAF帮我们创建了。XAF在运行时,通过收集模型中的接口及其配置,生成C#代码,并将这些代码编译生成为程序集(Assembly),再加载到主程序中。
大家可以将下面代码添加到ViewController中,加上断点看一下assembly的详细信息,你可以看到它的实际存储位置,同时也可以通过ILSpy工具查看Assembly中的信息。


在XAF中基于XPO的DomainComponent(已被弃用)也是采用的这个技术,在官方文档中没有找到它们俩之间关系的信息,但它们都用到了DevExpress.ExpressApp.DC命名空间下的接口与类。
如果想更深入的了解应用程序模型,你可以从这两个类ApplicationModelManager与ModelApplicationCreator入手,ApplicationModelManager负责模型的管理(能够看到模型加载的整个过程),ModelApplicationCreator负责模型的创建(就是Assembly编译生成的过程)。
关于应用程序模型的其它知识,还会在后面与XAF中的其它概念一起介绍。
XAF新手入门 - 应用程序模型(Application Model)的更多相关文章
- XAF新手入门 - 类型子系统(Types Info Subsystem)
类型子系统概述 类型子系统是XAF的核心概念,但我们平时却很少关注它,它集中存储了模块中的类型,它是生成应用程序模型(Application Model)的基础,它与XAF中其它的概念都有所关联,了解 ...
- XAF新手入门 - 前言
很多小伙伴在第一次接触XAF时,会被它的丰富功能及开箱即用的特点所吸引,即使在不了解XAF的情况下,也能够依葫芦画瓢创建一个功能丰富的应用,但当应用到实际项目中时,你会发现与之前的愿景差距很大,很多都 ...
- XAF新手入门 - 模块(Module)
模块概述 谈到模块大家应该都不会感到陌生,不管是前端还是后端都有模块的概念,XAF中的模块概念与大多数框架中的模块概念是相通的.XAF模块首先是一个.NET类库,同时它还包含一个继承自ModuleBa ...
- HoloLens开发手记 - 应用程序模型 App model
HoloLens使用Universal Windows Platform (UWP)提供的应用模型.UWP应用模型定义了应用如何被安全和完全地安装.更新.版本控制和移除.它管理了应用生命周期 - 应用 ...
- Implement Property Value Validation in the Application Model 在应用程序模型中实现属性值验证
In this lesson, you will learn how to check whether or not a property value satisfies a particular r ...
- XAF应用开发教程(四)应用程序模型
XAF是重量型框架,确实够重量的,方方面面都做得规规矩矩. 如果看了前面三节,可能会认为,这N多的Attribute到底都是从哪里来的?到底有多少这样的Attribute?如果不够用了怎么办?等着官方 ...
- MVVM Light 新手入门(2) :ViewModel / Model 中定义“属性” ,并在View中调用
今天学习MVVM架构中“属性”的添加并调用,特记录如下,学习资料均来自于网络,特别感谢翁智华的利刃 MVVMLight系列. 一个窗口的基本模型如下: View(视图) -> ViewModel ...
- 原创:从零开始,微信小程序新手入门宝典《一》
为了方便大家了解并入门微信小程序,我将一些可能会需要的知识,列在这里,让大家方便的从零开始学习:一:微信小程序的特点张小龙:张小龙全面阐述小程序,推荐通读此文: 小程序是一种不需要下载.安装即可使用的 ...
- MVVM Light 新手入门(3) :ViewModel / Model 中定义“事件” ,并在View中调用 (无参数调用)
今天学习MVVM架构中“事件”的添加并调用,特记录如下,学习资料均来自于网络,特别感谢翁智华 的 利刃 MVVMLight 6:命令基础 在MVVM Light框架中,事件是WPF应用程序中UI与后台 ...
- ASP.NET MVC4 新手入门教程之五 ---5.用控制器访问模型数据
在本节中,将创建一个新的MoviesController类并编写代码来检索电影数据并将其显示在浏览器中使用一个视图模板. 才走出下一步生成应用程序. 用鼠标右键单击控制器文件夹中并创建一个新的 Mov ...
随机推荐
- 【深度学习项目五】:利用LSTM网络进行情感分析(NLP)
相关文章: [深度学习项目一]全连接神经网络实现mnist数字识别](https://blog.csdn.net/sinat_39620217/article/details/116749255?sp ...
- 关于debug一晚上的一些思考,做开发到底要养成什么习惯?
总结:日志一定要写,日志一定要写,日志一定要写! 今天晚上是我学开发过程中很不一样的一晚,今晚学到了很多. 虽然我也只是一个开发的初学小白,今天的debug分享是我的一个小方法和一个小记录,如果大佬们 ...
- 19c ADG Switchover 切换测试
背景: 环境未配置DG Broker,手工切换ADG,19c也要比11g时代的切换更简单. 使用自己的测试环境,具体可参见: 单实例Primary快速搭建Standby RAC参考手册(19.16 A ...
- HBase-宽表和高表的对比
一.宽表和高表定义 HBase 中的表可以设计为高表(tall-narrow table) 和 宽表(flat-wide table): (1) 宽表是指很多列较少行,即列多行少的表,一行中的数据量较 ...
- 【调试】pstore原理和使用方法总结
什么是pstore pstore最初是用于系统发生oops或panic时,自动保存内核log buffer中的日志.不过在当前内核版本中,其已经支持了更多的功能,如保存console日志.ftrace ...
- C#后端接收前端的参数
接收参数 1. 直接使用 [FromBody] 特性来告诉 ASP.NET Core 将请求的 JSON 数据反序列化为 实体类 对象 [FromBody] BlogNewsDTO实体类 点击查看代码 ...
- NC21125 践踏
题目链接 题目 题目描述 首先给定一个定值k,支持如下操作(在数轴上) 加入一条线段[l,r] 删除一条已经存在的线段 给定x,问有多少个区间包含x+kt,其中t是一个整数变量,即t ∈ Z 比如说当 ...
- Js中Reflect对象
Js中Reflect对象 Reflect是ES6起JavaScript内置的对象,提供拦截JavaScript操作的方法,这些方法与Proxy对象的handlers中的方法基本相同. 描述 Refle ...
- BentoML:如何使用 JuiceFS 加速大模型加载
BentoML 是一个开源的大语言模型(LLM) AI 应用的开发框架和部署工具,致力于为开发者提供最简单的构建大语言模型 AI 应用的能力,其开源产品已经支持全球数千家企业和组织的核心 AI 应用. ...
- [BUUCTF][Web][GXYCTF2019]Ping Ping Ping 1
打开靶机对应URL 提示有ip参数 尝试构造url http://714ad4a2-64e2-452b-8ab9-a38df80dc584.node4.buuoj.cn:81/?ip=127.0.0. ...