<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[utilcore的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/utilcore</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; utilcore]]></copyright><item><title><![CDATA[Util 应用框架 UI 全新升级]]></title><link>https://blog.youkuaiyun.com/utilcore/article/details/138294766</link><guid>https://blog.youkuaiyun.com/utilcore/article/details/138294766</guid><author>utilcore</author><pubDate>Mon, 29 Apr 2024 09:37:43 +0800</pubDate><description><![CDATA[Util UI 已经开发多年, 并在多家公司的项目使用.

不过一直以来, Util UI 存在一些缺陷, 始终未能解决.

最近几个月, Util 团队下定决心, 终于彻底解决了所有已知缺陷.]]></description><category></category></item><item><title><![CDATA[Util应用框架开发环境搭建（十）- 安装 Redis]]></title><link>https://blog.youkuaiyun.com/utilcore/article/details/134551048</link><guid>https://blog.youkuaiyun.com/utilcore/article/details/134551048</guid><author>utilcore</author><pubDate>Wed, 22 Nov 2023 13:13:29 +0800</pubDate><description><![CDATA[Redis 是分布式缓存.本节使用 Docker 安装 Redis,用于开发测试,部署到生产环境请参考官方文档.]]></description><category></category></item><item><title><![CDATA[Util应用框架基础（七）- API]]></title><link>https://blog.youkuaiyun.com/utilcore/article/details/134550975</link><guid>https://blog.youkuaiyun.com/utilcore/article/details/134550975</guid><author>utilcore</author><pubDate>Wed, 22 Nov 2023 13:08:09 +0800</pubDate><description><![CDATA[是缓存操作的主要接口.根据缓存配置,ICache可以在本地缓存,Redis缓存,2级缓存切换.如果仅配置本地缓存, ICache实例为本地缓存操作.如果仅配置 Redis 缓存,ICache实例为Redis缓存操作.如果同时配置本地缓存和 Redis 缓存,ICache 实例为后配置的缓存操作.如果配置了2级缓存,ICache 实例为2级缓存操作.]]></description><category></category></item><item><title><![CDATA[Util应用框架基础（七）- 二级缓存]]></title><link>https://blog.youkuaiyun.com/utilcore/article/details/134550956</link><guid>https://blog.youkuaiyun.com/utilcore/article/details/134550956</guid><author>utilcore</author><pubDate>Wed, 22 Nov 2023 13:05:44 +0800</pubDate><description><![CDATA[EasyCaching支持2级缓存操作.2级缓存可以让你的项目从本地缓存中获取数据,这样可以获得很高的读取性能.当本地缓存过期,本地缓存会请求Redis分布式缓存,Redis缓存从数据库读取最新数据,并更新本地缓存.Redis还充当事件总线的角色,每当数据更新,通过Redis总线发布事件,同步更新所有本地缓存副本,解决了本地缓存更新困难的难题.]]></description><category></category></item><item><title><![CDATA[Util应用框架基础（七）- Redis 缓存]]></title><link>https://blog.youkuaiyun.com/utilcore/article/details/134550917</link><guid>https://blog.youkuaiyun.com/utilcore/article/details/134550917</guid><author>utilcore</author><pubDate>Wed, 22 Nov 2023 13:03:17 +0800</pubDate><description><![CDATA[Redis是流行的分布式缓存.Redis缓存将数据对象存储到外部专用缓存服务器内存中.]]></description><category></category></item><item><title><![CDATA[Util应用框架基础（七）- 本地缓存]]></title><link>https://blog.youkuaiyun.com/utilcore/article/details/134550892</link><guid>https://blog.youkuaiyun.com/utilcore/article/details/134550892</guid><author>utilcore</author><pubDate>Wed, 22 Nov 2023 13:00:50 +0800</pubDate><description><![CDATA[本地缓存将数据对象存储到Web服务器进程的内存中,不需要序列化对象,性能极高.但能使用的内存容量有限,并且在多服务器环境更新和同步非常困难.本地缓存可在单体项目使用,或者用于需要高性能,但很少变化的数据,且多个缓存副本不一致时不会给应用带来影响的场景.EasyCaching 还支持2级缓存,可以将本地缓存和Redis缓存搭配使用,可自动同步本地缓存的多个副本.]]></description><category></category></item><item><title><![CDATA[Util应用框架基础（七）- 缓存]]></title><link>https://blog.youkuaiyun.com/utilcore/article/details/134550820</link><guid>https://blog.youkuaiyun.com/utilcore/article/details/134550820</guid><author>utilcore</author><pubDate>Wed, 22 Nov 2023 12:55:36 +0800</pubDate><description><![CDATA[缓存是提升性能的关键手段之一.除了提升性能,缓存对系统健壮性和安全性也有影响.不同类型的系统对缓存的依赖程度不同.对于后台管理系统,由于是给管理人员使用的,用户有限,而且操作基本都需要身份认证和授权,甚至可能部署在局域网内,一般仅对耗时操作使用缓存即可.但是商城,门户网站这类系统, 它们部署在互联网上,并且允许匿名用户访问,仅缓存耗时操作是不够的.除了访问量可能比较大,另外需要防范网络流氓的恶意攻击,他们会发送大量请求来试探你的系统.]]></description><category></category></item><item><title><![CDATA[Util应用框架开发环境搭建（九）- 安装 Exceptionless]]></title><link>https://blog.youkuaiyun.com/utilcore/article/details/134441764</link><guid>https://blog.youkuaiyun.com/utilcore/article/details/134441764</guid><author>utilcore</author><pubDate>Thu, 16 Nov 2023 14:52:13 +0800</pubDate><description><![CDATA[Exceptionless 是一个日志管理系统]]></description><category></category></item><item><title><![CDATA[Util应用框架开发环境搭建（八）- 安装 Seq]]></title><link>https://blog.youkuaiyun.com/utilcore/article/details/134441633</link><guid>https://blog.youkuaiyun.com/utilcore/article/details/134441633</guid><author>utilcore</author><pubDate>Thu, 16 Nov 2023 14:47:40 +0800</pubDate><description><![CDATA[eq 是一个日志管理系统]]></description><category></category></item><item><title><![CDATA[Util应用框架基础（六）- 日志记录 - Exceptionless]]></title><link>https://blog.youkuaiyun.com/utilcore/article/details/134381381</link><guid>https://blog.youkuaiyun.com/utilcore/article/details/134381381</guid><author>utilcore</author><pubDate>Mon, 13 Nov 2023 16:57:20 +0800</pubDate><description><![CDATA[Exceptionless 是基于 Asp.Net Core 开发的日志系统.

相比 Seq ,它的搜索能力较弱.]]></description><category></category></item><item><title><![CDATA[Util应用框架基础（六）- 日志记录 - Seq]]></title><link>https://blog.youkuaiyun.com/utilcore/article/details/134380922</link><guid>https://blog.youkuaiyun.com/utilcore/article/details/134380922</guid><author>utilcore</author><pubDate>Mon, 13 Nov 2023 16:45:40 +0800</pubDate><description><![CDATA[Seq 是一个日志系统,可以很好的展示结构化日志数据,并提供模糊搜索功能.]]></description><category></category></item><item><title><![CDATA[Util应用框架基础（六）- 日志记录 - File]]></title><link>https://blog.youkuaiyun.com/utilcore/article/details/134380835</link><guid>https://blog.youkuaiyun.com/utilcore/article/details/134380835</guid><author>utilcore</author><pubDate>Mon, 13 Nov 2023 16:39:01 +0800</pubDate><description><![CDATA[本节介绍Util应用框架将日志记录到文件的配置方法.]]></description><category></category></item><item><title><![CDATA[Util应用框架基础（六）- 日志记录]]></title><link>https://blog.youkuaiyun.com/utilcore/article/details/134380734</link><guid>https://blog.youkuaiyun.com/utilcore/article/details/134380734</guid><author>utilcore</author><pubDate>Mon, 13 Nov 2023 16:36:21 +0800</pubDate><description><![CDATA[本节介绍Util应用框架如何记录日志.]]></description><category></category></item><item><title><![CDATA[Util应用框架基础（五）- 异常处理]]></title><link>https://blog.youkuaiyun.com/utilcore/article/details/134318291</link><guid>https://blog.youkuaiyun.com/utilcore/article/details/134318291</guid><author>utilcore</author><pubDate>Thu, 09 Nov 2023 18:53:13 +0800</pubDate><description><![CDATA[系统在运行过程中可能发生错误.系统错误可以简单分为两类:系统异常系统本身出现的错误.业务异常不满足业务规则出现的错误.]]></description><category></category></item><item><title><![CDATA[Util应用框架文档目录]]></title><link>https://blog.youkuaiyun.com/utilcore/article/details/134290715</link><guid>https://blog.youkuaiyun.com/utilcore/article/details/134290715</guid><author>utilcore</author><pubDate>Wed, 08 Nov 2023 15:37:37 +0800</pubDate><description><![CDATA[Util应用框架文档目录]]></description><category></category></item><item><title><![CDATA[Util应用框架基础（四）- 验证]]></title><link>https://blog.youkuaiyun.com/utilcore/article/details/134290313</link><guid>https://blog.youkuaiyun.com/utilcore/article/details/134290313</guid><author>utilcore</author><pubDate>Wed, 08 Nov 2023 15:13:22 +0800</pubDate><description><![CDATA[验证是业务健壮性的基础..Net 提供了一套称为数据注解的方法,可以对属性进行一些基本验证,比如必填项验证,长度验证等.Util应用框架使用标准的数据注解作为基础验证,并对自定义验证进行扩展.数据注解可以解决一些常见的验证场景.但业务上可能需要编写自定义代码以更灵活的方式验证.Util应用框架定义了一个验证接口IValidation 接口定义了Validate方法,执行该方法返回验证结果集合./// 验证操作/// 验证实体,值对象,DTO等对象类型实现了接口,意味着这些对象可以通过标准的。]]></description><category></category></item><item><title><![CDATA[Util应用框架基础（三）- 对象到对象映射]]></title><link>https://blog.youkuaiyun.com/utilcore/article/details/134290267</link><guid>https://blog.youkuaiyun.com/utilcore/article/details/134290267</guid><author>utilcore</author><pubDate>Wed, 08 Nov 2023 15:11:46 +0800</pubDate><description><![CDATA[现代化分层架构,普遍采用了构造块DTO(数据传输对象).DTO是一种参数对象,当Web API接收到请求,请求参数被装载到DTO对象中.我们需要把 DTO 对象转换成实体,才能保存到数据库.当返回响应消息时,需要把实体转换成DTO,再传回客户端.对于简单的系统,DTO和实体非常相似,它们可能包含大量相同的属性.除此之外,还有很多场景也需要转换相似对象.下面的例子定义了学生实体和学生参数DTO.它们包含两个相同的属性.StudentService 是一个应用服务.]]></description><category></category></item><item><title><![CDATA[Util应用框架基础（二）- 面向切面编程(AOP)]]></title><link>https://blog.youkuaiyun.com/utilcore/article/details/134290127</link><guid>https://blog.youkuaiyun.com/utilcore/article/details/134290127</guid><author>utilcore</author><pubDate>Wed, 08 Nov 2023 15:08:52 +0800</pubDate><description><![CDATA[有些问题需要在系统中全局处理,比如记录异常错误日志.如果在每个出现问题的地方进行处理,不仅费力,还可能产生大量冗余代码,并打断业务逻辑的编写.这类跨多个业务模块的非功能需求,被称为横切关注点我们需要把横切关注点集中管理起来.Asp.Net Core 提供的过滤器可以处理这类需求.过滤器有异常过滤器和操作过滤器等类型.异常过滤器可以全局处理异常.操作过滤器可以拦截控制器操作,在操作前和操作后执行特定代码.过滤器很易用,但它必须配合控制器使用,所以只能解决部分问题.]]></description><category></category></item><item><title><![CDATA[Util应用框架基础（一）依赖注入]]></title><link>https://blog.youkuaiyun.com/utilcore/article/details/134289979</link><guid>https://blog.youkuaiyun.com/utilcore/article/details/134289979</guid><author>utilcore</author><pubDate>Wed, 08 Nov 2023 15:07:06 +0800</pubDate><description><![CDATA[当你想调用某个服务的方法完成特定功能时,首先需要得到这个服务的实例.最简单的办法是直接 new 一个服务实例,不过这样就把服务的实现牢牢绑死了,当你需要更换实现,除了直接修改它没有别的办法.依赖注入是一种获取服务实例更好的方法.通常需要先定义服务接口,然后在你的构造方法声明这些接口参数.服务实例不是你创建的,而是从外部传入的.你只跟服务接口打交道,所以不会被具体的实现类绑死.服务定位器从对象容器中主动拉取依赖服务.]]></description><category></category></item><item><title><![CDATA[Util应用框架核心（三）- 服务注册器]]></title><link>https://blog.youkuaiyun.com/utilcore/article/details/134269819</link><guid>https://blog.youkuaiyun.com/utilcore/article/details/134269819</guid><author>utilcore</author><pubDate>Tue, 07 Nov 2023 16:08:30 +0800</pubDate><description><![CDATA[服务注册器是Util项目启动时自动执行的代码块.Util应用框架的某些类库使用服务注册器进行配置,比如当你引用 Util.ObjectMapping.AutoMapper 类库,不需要进行任何配置就可以直接使用 AutoMapper 的基本功能.服务注册器只需实现接口,启动器会扫描查找它.你可以把服务注册器放在任何地方,不过放在约定的位置会更容易维护.约定: 服务注册器名称以结尾,放到目录中.在 ServiceRegistrarConfig 扩展特定的启用和禁用方法,并封装服务名.]]></description><category></category></item></channel></rss>