应用程序模型不仅是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)的更多相关文章

  1. XAF新手入门 - 类型子系统(Types Info Subsystem)

    类型子系统概述 类型子系统是XAF的核心概念,但我们平时却很少关注它,它集中存储了模块中的类型,它是生成应用程序模型(Application Model)的基础,它与XAF中其它的概念都有所关联,了解 ...

  2. XAF新手入门 - 前言

    很多小伙伴在第一次接触XAF时,会被它的丰富功能及开箱即用的特点所吸引,即使在不了解XAF的情况下,也能够依葫芦画瓢创建一个功能丰富的应用,但当应用到实际项目中时,你会发现与之前的愿景差距很大,很多都 ...

  3. XAF新手入门 - 模块(Module)

    模块概述 谈到模块大家应该都不会感到陌生,不管是前端还是后端都有模块的概念,XAF中的模块概念与大多数框架中的模块概念是相通的.XAF模块首先是一个.NET类库,同时它还包含一个继承自ModuleBa ...

  4. HoloLens开发手记 - 应用程序模型 App model

    HoloLens使用Universal Windows Platform (UWP)提供的应用模型.UWP应用模型定义了应用如何被安全和完全地安装.更新.版本控制和移除.它管理了应用生命周期 - 应用 ...

  5. 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 ...

  6. XAF应用开发教程(四)应用程序模型

    XAF是重量型框架,确实够重量的,方方面面都做得规规矩矩. 如果看了前面三节,可能会认为,这N多的Attribute到底都是从哪里来的?到底有多少这样的Attribute?如果不够用了怎么办?等着官方 ...

  7. MVVM Light 新手入门(2) :ViewModel / Model 中定义“属性” ,并在View中调用

    今天学习MVVM架构中“属性”的添加并调用,特记录如下,学习资料均来自于网络,特别感谢翁智华的利刃 MVVMLight系列. 一个窗口的基本模型如下: View(视图) -> ViewModel ...

  8. 原创:从零开始,微信小程序新手入门宝典《一》

    为了方便大家了解并入门微信小程序,我将一些可能会需要的知识,列在这里,让大家方便的从零开始学习:一:微信小程序的特点张小龙:张小龙全面阐述小程序,推荐通读此文: 小程序是一种不需要下载.安装即可使用的 ...

  9. MVVM Light 新手入门(3) :ViewModel / Model 中定义“事件” ,并在View中调用 (无参数调用)

    今天学习MVVM架构中“事件”的添加并调用,特记录如下,学习资料均来自于网络,特别感谢翁智华 的 利刃 MVVMLight 6:命令基础 在MVVM Light框架中,事件是WPF应用程序中UI与后台 ...

  10. ASP.NET MVC4 新手入门教程之五 ---5.用控制器访问模型数据

    在本节中,将创建一个新的MoviesController类并编写代码来检索电影数据并将其显示在浏览器中使用一个视图模板. 才走出下一步生成应用程序. 用鼠标右键单击控制器文件夹中并创建一个新的 Mov ...

随机推荐

  1. 【二】Latex入门使用、常见指令

    参考链接:https://blog.csdn.net/cocoonyang/article/details/78036326 \documentclass[12pt, a4paper]{article ...

  2. 19.8 Boost Asio 异或加密传输

    异或加密是一种对称加密算法,通常用于加密二进制数据.异或操作的本质是对两个二进制数字进行比较,如果它们相同则返回0,如果不同则返回1.异或加密使用一把密钥将明文与密文进行异或运算,从而产生密文.同时, ...

  3. 21.6 Python 构建ARP中间人数据包

    ARP中间人攻击(ARP spoofing)是一种利用本地网络的ARP协议漏洞进行欺骗的攻击方式,攻击者会向目标主机发送虚假ARP响应包,使得目标主机的ARP缓存中的IP地址和MAC地址映射关系被篡改 ...

  4. 5.14 汇编语言:仿写Switch选择结构

    选择结构,也称为switch语句,是计算机编程中的一种控制结构,用于根据表达式的值选择不同的执行路径.它允许程序根据表达式的值来决定执行哪个代码块,从而实现多分支选择逻辑.switch语句由一个表达式 ...

  5. SSM整合思维(随手记)

    整合方向(整合思路): 用Spring去整合SpringMVC和Mybatis. 一.先创建Spring项目测试运行成功后,再创建SpringMVC项目再单独测试SpringMVC项目如果运行成功后即 ...

  6. JDK8新特性Stream流操作

    1 package stream; 2 3 import java.util.ArrayList; 4 import java.util.function.Function; 5 import jav ...

  7. 自定义RecyclerView下拉刷新上拉加载更多

    自定义ListView下拉刷新上拉加载更多 自定义RecyclerView下拉刷新上拉加载更多

  8. C++遴选出特定类型的文件或文件名符合要求的文件

      本文介绍基于C++语言,遍历文件夹中的全部文件,并从中获取指定类型的文件的方法.   首先,我们来明确一下本文所需实现的需求.现在有一个文件夹,其中包含了很多文件,如下图所示:我们如果想获取其中所 ...

  9. NC14685 加边的无向图

    题目链接 题目 题目描述 给你一个 n 个点,m 条边的无向图,求至少要在这个的基础上加多少条无向边使得任意两个点可达~ 输入描述 第一行两个正整数 n 和 m . 接下来的m行中,每行两个正整数 i ...

  10. 【Unity3D】相机跟随

    1 前言 ​ 相机跟随是相机指始终跟随特定游戏对象,有以下 2 种跟随效果: 位置跟随:相机指向目标游戏对象的向量始终不变 位置和姿态跟随:相机在目标游戏对象的坐标系下的坐标和朝向始终不变 ​ 实现相 ...