WPF+Prism+WebApi 学习总结
一、基本概念
- WPF:WPF(Windows Presentation Foundation)是(微软推出的)基于Windows的用户界面框架,提供了统一的编程模型,语言和框架,做到了分离界面设计人员与开发人员的工作;WPF提供了全新的多媒体交互用户图形界面。相比于WinForm传统开发,在WPF中,通过核心的MVVM设计思想,实现前后端的分离。
- MVVM:MVVM是Model-View-ViewModel(模型-视图-视图模型)的缩写形式,它通常被用于WPF或Silverlight开发。MVVM的根本思想就是界面和业务功能进行分离,View的职责就是负责如何显示数据及发送命令,ViewModel的功能就是如何提供数据和执行命令。各司其职,互不影响。我们可以通过下图来直观的理解MVVM模式:

View就是负责界面的排版、美观等,其跟业务的联系是通过绑定的设置,比如一个按钮可以绑定Icommand类型,通过再定义Icommand中增加委托就可以相应事件了;
ViewModel对应的是View,一般的有一个view叫xx,那么就有一个对应的叫xxViewModel.cs,负责对应的xx view的数据和命令的提供,他们之间是需要依赖注入,即这个xx view涉及的数据、命令事件在哪个viewmodel里面定义,就是指定上下文,如果用Prism,那可以在view的xalm文件里面定义自动绑定同名的viewmodle。
Model里面一般定义的是实体数据模型,比如数据库里面的一个表的数据模型。
例如

- Prism:Prism是一个用于在 WPF、Xamarin Form、Uno 平台和 WinUI 中构建松散耦合、可维护和可测试的 XAML 应用程序框架。通过Prism,可以简化原生MVVM实现方式,并引入分模块设计思想。在Prism中,每一个功能,都可以设计成一个独立的模块,各个模块之间松耦合,可维护,可测试。框架中包括 MVVM、依赖注入、Command、Message Event、导航、弹窗等功能。在后续程序功能设计中,都会用到。
- ORM框架:客户端怎么与服务器进行数据访问呢?比如数据库在服务器哪里,客户端要与数据库进行访问(增删改查等),可以通过对应的数据库提供的API进行数据库远程连接,然后用SQL语言进行数据库的指令编成,单这样很不友好,这样就可以用到ORM框架了。(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),说白了就是一个类似库房,库房的工件来自数据库,工厂(客户端)可以来到库房取料,就是一个连接中间站,这个站定义了很多接口,对应的数据库的增删改查指令操作的功能(封装),客户端只需要通过这些接口就可以通过面向对象的编程方式实现数据库的访问与操作,就不需要写哪些用以写错的SQL指令了.这样一般在客户端都会定义与数据库表对应的数据实体类,还有一个很重要的功能是因为这些在客户端的实体类是与数据库的表是对应的,还可以通过客户端利用ORM接口实现快速创建数据库表,即可以双向的。这样ORM框架下,只需要配置一下服务器数据库,就可以切换到不同的数据库系统了。
WebApi就是这样的一种模式,ORM有很多中,比如EntityFramework是.Net领域通用的ORM 框架,有CodeFirst和DBFirst两种方式,DBFirst方式,即先设计数据库表结构,再创建实体和映射。CodeFirs是通过面向对象编程创建数据库。如果要使用EntityFramework框架,首先进行安装,可通过NuGet包管理器进行安装
二、开发是模块化思想
把各块业务作为单独一个项目(模块)进行开发,包括一些界面内容的更新,主模块的view定义了基本的主要界面,然后分成regions,每个regions的内容可以导航到对应的模块里面的view,这样就可以形成主界面只负责自己的界面定义,内容实际是各个模块进行实时计算更新的。模块之间需要配置好模块引用,可以通过dll文件指定的方式,也可也通过注册的方式。
三。WebApi
一般需要定义控制器、服务接口、数据库与数据实体类对应关系设定(Dbset),数据库连接配置。
1.控制器就是定义了在服务器端提供的访问接口,比如通过http访问的url;
2.服务接口对应了各种数据库操作的封装;客户端调用这些服务实现数据库的操作;
3.数据库与数据实体类对应关系设定,就是绑定的数据库表对应的数据类实体;
4.数据库连接配置,就是设置好数据库访问的参数。一般在appsettings.json文件里面定义,然后再Program.cs文件里面进行指定,
builder.Services.AddDbContext<DataContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("Default")));

(注,以上用到的图是来源与CDSN 公子小六博文里面的教程博客,可进去他相关教程学习更多内容)
相关文章:
WPF+Prism+WebApi 学习总结
一、基本概念 WPF:WPF(Windows Presentation Foundation)是(微软推出的)基于Windows的用户界面框架,提供了统一的编程模型,语言和框架,做到了分离界面设计人员与开发人员的工作;WPF…...
uniapp热更新
首先热更新需要wgt包; 其次先了解这两个组件 下载的方法 安装的组件 场景: 当你项目的js文件或者页面文件或者静态图片文件css文件更新的时候可以走热更新; 而当你安装新的组件插件或者开启新的权限等功能的时候就无法通过热更新进行更新了…...
AUTOSAR从入门到精通-【应用篇】基于CAN协议的汽车尾气后处理诊断系统的软件开发(续)
目录 尾气后处理诊断程序的开发 5.1 数据库的解析 5.1.1 寻找XML文件 5.1.2 读取XML文件...
mybatis plus新版代码生成器,类型转换处理器ITypeConvertHandler使用
目录 引言关键代码源码分析记录一坑类型转换的第二种方式完整源码地址 引言 当默认生成的数据类型不满足时,就需要自定义指定要生成的类型 关键代码 FastAutoGenerator.create(url, username, password).dataSourceConfig(builder -> {builder.typeConvertHandl…...
python中的matplotlib画直方图(数据分析与可视化)
python中的matplotlib画直方图(数据分析与可视化) import numpy as np import pandas as pd import matplotlib.pyplot as pltpd.set_option("max_columns",None) plt.rcParams[font.sans-serif][SimHei] plt.rcParams[axes.unicode_minus]Fa…...
【详解】文本检测OCR模型的评价指标
关于文本检测OCR模型的评价指标 前言:网上关于评价标准乱七八糟的,有关于单词的,有关于段落的,似乎没见过谁解释一下常见论文中常用的评价指标具体是怎么计算的,比如DBNet,比如RCNN,这似乎好像…...
Python遥感图像处理应用篇038 GDAL 遥感图像特征提取(统计特征图)
1.图像统计特征 遥感图像的统计特征是对图像中像素值的统计分布进行定量化描述的过程。这些统计特征可以提供关于图像内容和特性的有用信息。下面是一些常用的遥感图像统计特征描述方法: 平均值(Mean):计算图像中所有像素值的平均值,可以反映整个图像的亮度水平。 方差(…...
全局ID生成方式
全局ID生成方式 目录 1. 全局唯一id介绍 1.1 特点 2. 常见的全局唯一id生成策略 2.1 利用数据库自增字段生成id2.2 UUID2.3 Redis生成id2.4 zookeeper生成ID2.5 Twitter的snowflake算法 3. 面试题目:实现一个全局的ID生成器,注意线程安全 3.1 单例模式…...
c++之指针
总结性质 我们如何在一个函数中获取数组的长度: 我们都知道,在main函数中我们获得数组的长度只需要使用sizeof(a)/sizeof(a【0】)即可获得,但当我们把一个数组传入到方法时,c默认把…...
JVM 访问对象的两种方式
Java 程序会通过栈上的 reference 数据来操作堆上的具体对象。由于 reference 类型在《Java 虚拟机规范》里面只规定了它是一个指向对象的引用,并没有定义这个引用应该通过什么方式去定位、访问到堆中对象的具体位置,所以对象访问方式也是由虚拟机实现而…...
yo!这里是Linux基础开发工具介绍
目录 前言 基础开发工具 yum vim 1.基本介绍 2.基本操作 3.正常模式常用命令 4.底行模式常用命令 gcc/g gdb 1.基本介绍 2.常用操作 make/Makefile 1.背景 2.介绍 3.使用 git 1.介绍 2.操作 进度条程序简单实现 后记 前言 在学完初步的基础指令及权限控…...
本地组策略编辑器找不到怎么解决?| 解决windows home 版本隐藏本地组策略编辑器的问题 | 简单的介绍本地组策略编辑器
一般的 Windows 非家庭系统中,本地组策略编辑器不会被隐藏,但在某些特定情况下,可能会受到限制或不可用。如果你无法访问本地组策略编辑器,并且认为应该可以访问,请确保你拥有管理员权限,并检查是否有任何系…...
将Spring boot 项目部署到tomcat服务艰难
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z X Y Z...
第十二章 ObjectScript - 命令
文章目录 第十二章 ObjectScript - 命令命令熟悉的命令用于多维数组的命令 第十二章 ObjectScript - 命令 命令 本节概述了在 ObjectScript 常用命令。其中包括与其他语言中的命令相似的命令,以及其他语言中没有等效项的其他命令。 命令名称不区分大小写…...
在 CentOS 7 / RHEL 7 上安装 OpenSSL 1.1.x
OpenSSL 是一个开源软件库,由用于实现传输层安全 (TLS) 和安全套接字层 (SSL) 协议以及其他加密功能(例如签名、加密、解密和验证)的工具和库组成。操作系统和许多应用程序使用 OpenSSL 通过互联网提供安全通信。 CentOS 7 / RHEL 7 操作系统…...
论文阅读_模型结构_LoRA
name_en: LoRA: Low-Rank Adaptation of Large Language Models name_ch: LORA:大语言模型的低阶自适应 paper_addr: http://arxiv.org/abs/2106.09685 date_read: 2023-08-17 date_publish: 2021-10-16 tags: [‘深度学习’,‘大模型’] author: Edward J. Hu cita…...
uniapp获取 pdf文件流 并展示
1、流数据 uni.request({ url: this.$config.apiUrl“/api/report/content/fill?codebv.mf.refund.pay.voucher&busiNo00201323051500148949”, header: { ‘content-type’: ‘application/json;charsetutf-8’, ‘X-App-Code’: ‘weixin’, ‘X-Source’: ‘program’,…...
Linux(进程间通信)
目录 一、通信概念 二、进程间通信机制 1、管道 1.1 匿名管道(Anonymous Pipe) 1.2 命名管道(Named Pipe) 2、信号量 2.1 概念 2.2 API详解 2.3 使用示例 3、消息队列 3.1 概念 3.2 API函数 3.3 应用代码 4、共享内…...
Go的Gorm数据库操作错误WHERE conditions required
这是我在写这个代码处出现的问题 result : db.Save(&emergency) 这个错误是由于在提交保存数据时,GORM 需要指定 WHERE 条件,确保能够正确执行数据库操作。要解决这个问题,可以尝试使用 Create 方法替换 Save 方法,同时将创…...
基于java swing和mysql实现的仓库商品管理系统(源码+数据库+运行指导视频)
一、项目简介 本项目是一套基于java swing和mysql实现的仓库商品管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、项目文档、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经…...
Apex Legends后坐力控制解决方案:技术原理与实践指南
Apex Legends后坐力控制解决方案:技术原理与实践指南 【免费下载链接】Apex-NoRecoil-2021 Scripts to reduce recoil for Apex Legends. (auto weapon detection, support multiple resolutions) 项目地址: https://gitcode.com/gh_mirrors/ap/Apex-NoRecoil-202…...
Windows 11下xray安装全流程:从下载到配置证书的保姆级教程
Windows 11安全工具配置全指南:从零开始搭建本地测试环境 在数字化生活日益普及的今天,个人电脑安全越来越受到重视。对于技术爱好者而言,了解和使用专业安全工具不仅能提升自身防护能力,也是学习网络安全知识的重要途径。本文将详…...
C# Enumerable类 之 高效数据转换实战指南
1. 为什么需要数据转换? 在C#开发中,我们经常会遇到需要处理不同类型数据集合的场景。比如从数据库读取的数据可能是object类型,或者老项目中还在使用非泛型的ArrayList。这时候就需要将这些"原始"数据转换成我们需要的特定类型&am…...
日程管理革命:OpenClaw解析Qwen3.5-9B生成的待办清单并同步日历
日程管理革命:OpenClaw解析Qwen3.5-9B生成的待办清单并同步日历 1. 为什么需要智能日程管理 每天早上打开电脑,我的第一件事就是对着记事本手忙脚乱地整理当天的待办事项。这种原始的工作方式持续了三年,直到我发现会议时间冲突、任务遗漏成…...
基于STM32F103C8T6和LiuJuan20260223Zimage的物联网边缘智能网关
基于STM32F103C8T6和LiuJuan20260223Zimage的物联网边缘智能网关 最近在折腾一个智能农业的小项目,发现传感器数据一多,全往云上扔,不仅流量吃不消,响应也慢半拍。要是能先在本地处理一下,只把关键信息传上去…...
OpenClaw+GLM-4.7-Flash:自动化测试脚本生成器
OpenClawGLM-4.7-Flash:自动化测试脚本生成器 1. 为什么需要自动化测试脚本生成 作为一名长期奋战在一线的开发者,我深知测试环节的重要性与繁琐程度。每当项目进入测试阶段,编写测试用例和脚本往往要占据整个开发周期的30%-40%时间。更令人头…...
保姆级教程:在Windows上用PyTorch 2.0复现PointNet(含数据集下载与常见坑点修复)
Windows平台PyTorch 2.0实战:从零构建PointNet点云处理模型全指南 当3D点云处理遇上深度学习,PointNet无疑是这个领域的里程碑式架构。不同于传统CNN处理规则网格数据的方式,PointNet开创性地直接处理无序点云数据,在分类和分割任…...
OpenClaw技能组合:GLM-4.7-Flash多技能协同工作的配置技巧
OpenClaw技能组合:GLM-4.7-Flash多技能协同工作的配置技巧 1. 为什么需要多技能协同? 去年冬天,我接手了一个内容运营的兼职项目。每天需要从十几个来源收集资料,整理成Markdown笔记,再根据主题生成不同风格的公众号…...
STM32嵌入式系统分层架构与设备驱动实现
嵌入式系统中应用层与硬件层的分层管理实现1. 项目概述在嵌入式系统开发中,传统的开发方式往往将硬件操作直接嵌入到应用层代码中,导致代码耦合度高、可维护性差。本文介绍一种基于STM32平台的硬件抽象层实现方案,通过设备驱动模型实现应用层…...
从Bode到ADS:用‘策动点阻抗’判据,给你的电路稳定性加一道‘数学保险’
从Bode到ADS:用策动点阻抗判据为电路稳定性加一道数学保险 在射频电路设计中,稳定性分析就像给高速行驶的赛车安装防抱死系统——它不会直接提升性能,但能确保系统不会在关键时刻失控。传统K因子分析法如同简单的速度表,而策动点阻…...
