摘要: 策略模式是oop中最著名的设计模式之一,是对方法行为的抽象,可以归类为行为设计模式,也是oop中interface经典的应用。其特点简单又实用,是我最喜欢的模式之一。策略模式定义了一个拥有共同行为的算法族,每个算法都被封装起来,可以互相替换,独立于客户端而变化。策略模式本身的实现比较简单,但是结合单例模式+简单工厂模式+注解+反射,可以构造出近乎完善的策略模式,彻底的消除if-else。 阅读全文
posted @ 2018-06-16 22:28 览岳 阅读(32233) 评论(7) 推荐(5) 编辑
摘要: 在项目开发中,我们有时需要对数据并发请求进行处理。举个简单的例子,比如接单系统中,AB两个客服同时请求处理同一单时,应该只有一单请求是处理成功的,另外一单应当提示客服,此单已经被处理了,不需要再处理。如果我们不对上述并发冲突进行检测处理,两个请求都会成功,数据库接收到的后面的请求将覆盖前面的请求。在大部分应用程序中,这种方式是可以接受的,但是举例的接单系统中这种处理方式显然不符合业务要求。 阅读全文
posted @ 2018-06-09 20:49 览岳 阅读(1115) 评论(0) 推荐(0) 编辑
摘要: 在我将一个.net framework 4.0+mvc4+ef5的项目,升级到.net framework 4.6.1+mvc5+ef6之后,解决了所有的升级带来的问题,唯独在razor的cshtml页面中,所有关于Expression<>的引用的方法全都报错,例如System.Web.Mvc.Html空间下的一系列@Html.DisplayFor()等等。razor页面可以正常编译及运行,但是页面编辑时报错,智能感知也不能正常使用。 具体的提示就是“The type 'Expression<>' is defined in an assembly that is not referenced.You must add a reference to assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.”。 阅读全文
posted @ 2018-05-30 21:53 览岳 阅读(1187) 评论(0) 推荐(0) 编辑
摘要: 前面我们说到利用表达式树技术实现LINQ-to-SQL,实际上可以针对任何数据源,实现LINQ-to-Everything。这里还涉及到两个重要的接口即IQueryable和IQueryProvider,这些一起为实现通过LINQ访问各种数据源提供了统一的编程接口。 阅读全文
posted @ 2018-05-03 21:24 览岳 阅读(520) 评论(0) 推荐(0) 编辑
摘要: 上篇文章中,对表达式树的基础概念,基本用法进行了介绍,现在来进一步学习,使用表达式树创建动态查询。列表排序是最常见的功能之一,在列表字段很多的情况下,用户要求可以按任意列正序或倒序,甚至多个列排序,后台服务应该如何实现呢? 阅读全文
posted @ 2018-05-01 23:18 览岳 阅读(370) 评论(0) 推荐(0) 编辑
摘要: 说起Lambda表达式,大家基本都很熟悉了,而表达式树(Expression Trees),则属于80%的工作中往往都用不到的那种技术,所以即便不是什么新技术,很多人对其理解都并不透彻。此文意图从表达式树基本技术点结合实际应用,逐步来看表达式树究竟是怎么一回事,希望能帮助读者彻底学会表达式树 阅读全文
posted @ 2018-04-27 17:34 览岳 阅读(917) 评论(0) 推荐(1) 编辑
摘要: 有时我们会有通过反射来动态构造泛型类型的需求,该如何实现呢?举个栗子,比如我们常常定义的泛型委托Func,当T或TResult的类型需要根据程序上下文来确定时,也就是说我们的泛型委托类型是动态确定的,那么如何来构造呢? 阅读全文
posted @ 2018-03-26 22:36 览岳 阅读(944) 评论(0) 推荐(0) 编辑
摘要: 在最近的项目中,后端使用ABP,前端采用React,前后端完全分离。其中大部分接口都通过WebApi层调用,项目中未使用Session。但最后在添加一个网站的验证码验证留言功能时,使用了Session验证的方式,所以将验证码请求与校验功能放在了Web层。由于测试阶段前后端不同域,涉及到跨域请求的问题 阅读全文
posted @ 2018-02-11 17:11 览岳 阅读(1266) 评论(0) 推荐(0) 编辑
摘要: 在上篇教程中,我们在WebApi项目中集成了Miniprofiler,本篇文章中,将继续集成Miniprofiler EF6,以实时监测分析EF的执行语句、执行效率等。Miniprofiler会针对EF调用中存在的低效执行给出提示。 1. Install Package MiniProfiler.E 阅读全文
posted @ 2018-01-28 21:09 览岳 阅读(951) 评论(0) 推荐(0) 编辑
摘要: 在ABP的WebApi中,对其性能进行分析监测是很有必要的。而悲剧的是,MVC项目中可以使用的MiniProfiler或Glimpse等,这些都不支持WebApi项目,而且WebApi项目通常也没有界面,不能进行性能分析的交互。在上一篇教程中,通过集成SwaggerUI解决了界面的问题。在这篇文章中 阅读全文
posted @ 2018-01-28 16:12 览岳 阅读(3137) 评论(8) 推荐(1) 编辑