-
【译】Announcing Entity Framework Core 5.0 Preview 5
所属栏目:[大数据] 日期:2021-07-06 热度:78
今天我们宣布EF Core 5.0发布第五个预览版。 1 先决条件 EF Core 5.0 的预览版要求? .NET Standard 2.1。这意味着: EF Core 5.0 在 .NET Core 3.1 上运行,不需要 .NET 5。根据 .NET 5 计划的改变,这可能会在未来发生变化。 EF Core 5.0 运行在其他支持 .N[详细]
-
【译】自动发现 .NET 5 中代码的潜在错误
所属栏目:[大数据] 日期:2021-07-06 热度:175
写代码是一件令人兴奋的事情,特别是对于? .NET 开发人员来说,平台越来越智能化了。我们现在默认在 .NET SDK 中包含丰富的诊断和代码建议。在您需要安装 NuGet 包或其他独立工具来进行更多的代码分析之前。现在,您将在新的 .NET 5 SDK 中自动获得这些内容[详细]
-
【译】.NET 5. 0 中 Windows Form 的新特性
所属栏目:[大数据] 日期:2021-07-06 热度:182
自从 Windows Form 在 2018 年底开源并移植到 .NET Core 以来,团队和我们的外部贡献者都在忙于修复旧的漏洞和添加新功能。在这篇文章中,我们将讨论 .NET 5.0 中 Windows ?Form 的新特性。 Windows控件的增加与增强 也许今天关于 Windows Form 最令人兴奋的[详细]
-
C#中的线程三 (结合ProgressBar学习Control.BeginInvoke)
所属栏目:[大数据] 日期:2021-07-06 热度:57
C#中的线程三(结合ProgressBar学习Control.BeginInvoke) ? ? 本篇继上篇转载的关于Control.BeginInvoke的论述之后,再结合一个实例来说明Cotrol.BeginInvoke的功能 ? ? 通过前面2篇的学习应该得出以下结论 1、Delegate.BeginInvoke中执行的方法是异步的 1 pu[详细]
-
避免Castle Windsor引起的内存泄露
所属栏目:[大数据] 日期:2021-07-06 热度:79
原文地址: http://nexussharp.wordpress.com/2012/04/21/castle-windsor-avoid-memory-leaks-by-learning-the-underlying-mechanics/ CASTLE WINDSOR: AVOID MEMORY LEAKS BY LEARNING THE UNDERLYING MECHANICS Lifestyles In am not going to explain all[详细]
-
.net中事件引起的内存泄漏分析
所属栏目:[大数据] 日期:2021-07-06 热度:114
系列主题:基于消息的软件架构模型演变 ? 在Winform和Asp.net时代,事件被大量的应用在UI和后台交互的代码中。看下面的代码: private void BindEvent() { var btn = new Button(); btn.Click += btn_Click; } void btn_Click(object sender,EventArgs e) {[详细]
-
你写的Try...Catch真的有必要么?
所属栏目:[大数据] 日期:2021-07-06 热度:112
很多人喜欢用Try...Catch把每一个方法都包裹起来,可是真的有必要么? 为什么要这样做?我估计是大家被BUG吓怕了,生怕生产环境出现各种莫名其妙的错误,比如最经典的NullReferenceException,可问题是你用Try...Catch包裹起来后错误是不会爆出来了,但是执行[详细]
-
WebAPI的一种单元测试方案
所属栏目:[大数据] 日期:2021-07-06 热度:113
大家是如何对webApi写测试的呢? 1.利用Fiddler直接做请求,观察response的内容。 2.利用Httpclient做请求,断言response的内容。 3.直接调用webApi的action,这种方式的测试跟真实的调用还是有一定差距,不够完美。 接下来我介绍一种webApi的in-memory调用方[详细]
-
三种观察者模式的C#实现
所属栏目:[大数据] 日期:2021-07-06 热度:68
系列主题:基于消息的软件架构模型演变 ? 说起观察者模式,估计在园子里能搜出一堆来。所以写这篇博客的目的有两点: 观察者模式是写松耦合代码的必备模式,重要性不言而喻,抛开代码层面,许多组件都采用了Publish-Subscribe模式,所以我想按照自己的理解重[详细]
-
C#中的线程四(System.Threading.Thread)
所属栏目:[大数据] 日期:2021-07-06 热度:188
C#中的线程四(System.Threading.Thread) 1.最简单的多线程调用 ? ?System.Threading.Thread类构造方法接受一个ThreadStart委托,改委托不带参数,无返回值 1 public static void Start1() 2 { 3 Console.WriteLine( " this is main thread!:{0},{1} " ,Sys[详细]
-
面向过程,面向对象,函数式对同一个问题的思考方式
所属栏目:[大数据] 日期:2021-07-06 热度:183
我之所以对函数式代码感兴趣是因为函数式代码富有表现力,可以使用简短、紧凑的代码完成工作,同时能对特定的问题给出优雅的解决方案。现代的编程语言不约而同的朝着面向对象、函数式、动态、解释执行的方向发展,例如Ruby,Swift。而另一些语言则更加强调函[详细]
-
angular ng-repeat+sortable 拖拽demo
所属栏目:[大数据] 日期:2021-07-06 热度:68
由于项目需求,需要使用angular 实现列表的增、删、改,并且列表支持拖拽。 看了下angular-ui 里面的sortable组件,使用起来也是非常简单,几十行代码就完成了所需功能。 我现在懒得想如何使用jquery完成该功能,不过我能肯定的是使用jquery完成这个功能,代[详细]
-
EventAggregator, EventBus的实现
所属栏目:[大数据] 日期:2021-07-06 热度:98
系列主题:基于消息的软件架构模型演变 ? .net中事件模型很优雅的实现了观察者模式,同时被大量的使用在各种框架中。如果我们非要给事件模型挑毛病,我觉得有两点: 实现起来略微繁琐 正如我们上篇文章分析,事件模型在特定的情况下会发生内存泄漏 于是我们[详细]
-
.Net中的反应式编程(Reactive Programming)
所属栏目:[大数据] 日期:2021-07-06 热度:142
系列主题:基于消息的软件架构模型演变 ? 一、反应式编程(Reactive Programming) 1、什么是反应式编程:反应式编程(Reactive programming)简称Rx,他是一个使用LINQ风格编写基于观察者模式的异步编程模型。简单点说Rx = Observables + LINQ + Schedulers。 2[详细]
-
C#函数式编程
所属栏目:[大数据] 日期:2021-07-06 热度:142
提起函数式编程,大家一定想到的是语法高度灵活和动态的LISP,Haskell这样古老的函数式语言,往近了说ruby,javascript,F#也是函数式编程的流行语言。然而自从.net支持了lambda表达式,C#虽然作为一种指令式程序设计语言,在函数式编程方面也毫不逊色。我们在[详细]
-
再谈扩展方法,从string.IsNullOrEmpty()说起
所属栏目:[大数据] 日期:2021-07-06 热度:77
string.IsNullOrEmpty()这个方法算得上是.net中使用频率最高的方法之一。此方法是string的一个静态方法,类似的静态方法在string这个类中还有很多。那么这样的方法作为静态方法是否合理呢?如果我们从面向对象的角度出发,我们会发现这种方案不是十分符合面[详细]
-
你写的return null正确吗?
所属栏目:[大数据] 日期:2021-07-06 热度:72
上次一篇“你写的try…catch真的有必要吗”引起了很多朋友的讨论。本次我在code review又发现了一个问题,那就是有人有意无意的写出了return null这样的代码,例如: public User GetUser(Guid userId) { if ( /*for some reason*/) return null; return DB.[详细]
-
Expression Tree 扩展MVC中的 HtmlHelper 和 UrlHelper
所属栏目:[大数据] 日期:2021-07-06 热度:141
??????? 表达式树是LINQ To everything 的基础,同时各种类库的Fluent API也 大量使用了Expression Tree。还记得我在不懂expression tree时,各种眼花缭乱的API 看的我各种膜拜,当我熟悉expression tree 后恍然大悟,不用看代码也能知道别人的API 是如何设[详细]
-
编写让别人能够读懂的代码
所属栏目:[大数据] 日期:2021-07-06 热度:106
随着软件行业的不断发展,历史遗留的程序越来越多,代码的维护成本越来越大,甚至大于开发成本。而新功能的开发又常常依赖于旧代码,阅读旧代码所花费的时间几乎要大于写新功能的时间。 我前几天看了一本书,书中有这么一句话: “复杂的代码往往都是新手所[详细]
-
使用C#设计Fluent Interface
所属栏目:[大数据] 日期:2021-07-06 热度:179
我们经常使用的一些框架例如:EF,Automaper,NHibernate等都提供了非常优秀的Fluent Interface,这样的API充分利用了VS的智能提示,而且写出来的代码非常整洁。我们如何在代码中也写出这种Fluent的代码呢,我这里介绍3总比较常用的模式,在这些模式上稍加改动[详细]
-
编写具有单一职责(SRP)的类
所属栏目:[大数据] 日期:2021-07-06 热度:139
这两周我需要对一个历史遗留的功能做一些扩展,正如很多人不愿意碰这些历史遗留的代码一样,我的内心也同样对这样的任务充满反抗。这些代码中充斥着各种null判断(你写的return null正确吗?),不规范的变量命名,层层嵌套的if…else语句。显然面对这样的代[详细]
-
DRY(Don't Repeat Yourself )原则
所属栏目:[大数据] 日期:2021-07-06 热度:163
凡是写过一些代码的程序猿都能够意识到应该避免重复的代码和逻辑。我们通过提取方法,提取抽象类等等措施来达到这一目的。我们总能时不时的听到类似这样的话:”把这些公用的类放到shared项目去,别的项目还要使用。。。“,什么算是公用(重复)的代码?是[详细]
-
写给.NET开发者的数据库Migration方案
所属栏目:[大数据] 日期:2021-07-06 热度:177
微软给我们提供了一种非常好用的数据库迁移方案,但是我发现周围的同学用的并不多,所以我还是想把这个方案整理一下。.NET选手看过来,特别是还在通过手工执行脚本来迁移数据库的同学们,当然你也可以选择EF的Migration方案和FluentMigrator,但是下面我介绍[详细]
-
IDisposable的另类用法
所属栏目:[大数据] 日期:2021-07-06 热度:188
IDisposable是.Net中一个很重要的接口,一般用来释放非托管资源,我们知道在使用了IDisposable的对象之后一定要调用IDisposable.Dispose()方法,或者使用.Net提供的关键字using来达到这一目的,如: public void ReadFile() { using (var reader=new StreamR[详细]
-
如何优雅的使用RabbitMQ
所属栏目:[大数据] 日期:2021-07-06 热度:93
RabbitMQ无疑是目前最流行的消息队列之一,对各种语言环境的支持也很丰富,作为一个.NET developer有必要学习和了解这一工具。消息队列的使用场景大概有3种: 1、系统集成,分布式系统的设计。各种子系统通过消息来对接,这种解决方案也逐步发展成一种架构风[详细]