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 ...
随机推荐
- 深入浅出Java多线程(二):Java多线程类和接口
引言 大家好,我是你们的老伙计秀才!今天带来的是[深入浅出Java多线程]系列的第二篇内容:Java多线程类和接口.大家觉得有用请点赞,喜欢请关注!秀才在此谢过大家了!!! 在现代计算机系统中,多线程 ...
- 大语言模型的预训练[5]:语境学习、上下文学习In-Context Learning:精调LLM、Prompt设计和打分函数设计以及ICL底层机制等原理详解
大语言模型的预训练[5]:语境学习.上下文学习In-Context Learning:精调LLM.Prompt设计和打分函数(Scoring Function)设计以及ICL底层机制等原理详解 1.I ...
- 字节码编程,Javassist篇五《使用Bytecode指令码生成含有自定义注解的类和方法》
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 到本章为止已经写了四篇关于字节码编程的内容,涉及了大部分的API方法.整体来说对 J ...
- 微服务保护-Sentinel
1.初识Sentinel 1.1.雪崩问题及解决方案 1.1.1.雪崩问题 微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务. 如图,如果服务提供者I发生了故障,当前的应用的部分业 ...
- MySQL8.0清空binlog
环境 centos7.9 mysql Ver 8.0.32 登录MySQL,查看binlog日志 #查看binlog日志开启状态,log_bin值为ON表示开启状态 mysql> show v ...
- Vulkan学习苦旅06:创建渲染通道(VkRenderPass)
对于一个复杂的图形应用程序,需要多个过程的配合,以生成图像的各个部分.通常,各个过程间存在着依赖关系,例如某个过程生成的图像(输出)被另一个过程使用(作为此过程的输入).在Vulkan中,每个过程被称 ...
- Java-将Oracle中某个表的数据导出成数据文件
在做数据开发或者ETL工作中,经常会遇到需要在客户端将Oracle数据库中的某些表的数据导出,提供给其他人员使用的情况. 下面介绍我之前实施的一种方法:(该方法不是最好的办法,但是可以勉强使 ...
- Go语言的100个错误使用场景(40-47)|字符串&函数&方法
目录 前言 5. 字符串 5.5 无用的字符串转换(#40) 5.6 获取子字符串操作和内存泄漏(#41) 6. 函数和方法 6.1 不知道选择哪种类型的方法接受者(#42) 6.2 从来不使用命名的 ...
- 【LGR-153-Div.2】梦熊联盟 8 月月赛 Ⅳ & Cfz Round 1 & 飞熊杯 #1
[LGR-153-Div.2]梦熊联盟 8 月月赛 Ⅳ & Cfz Round 1 & 飞熊杯 #1 \(T1\) luogu P9577 「Cfz Round 1」Dead Cell ...
- 深入读懂 Kafka集群
前言 概述 Kafka是一个多分区.多副本的分布式流处理平台,以高吞吐.可持久化.可水平扩展.支持流数据处理等多种特性被广泛使用. 应用场景 (1)缓冲削峰:有利于解决生产消息和消费消息的处理速度不一 ...