- 博客(235)
- 收藏
- 关注
转载 2018年1月20日上海MVP线下技术分享会纪实
1月20日正值大寒节气,在微软MVP朱兴亮的组织牵头下,上海MVP自发举办了题为《跟社区专家一起聊聊混合云、领域驱动、区块链和数字营销》的技术交流会。四名来自上海的MVP分别在自己擅长的技术领域做了主题演讲,并现场回答了与会者提出的问题。虽然天气阴冷细雨绵绵,但这并没有阻挡大家利用周末休息时间远道而来,对我们的活动支持捧场的热情,现场基本座无虚席。在MVP进行相关的技术分享和介绍之后,大...
2018-03-25 20:47:00
391
转载 2018年3月24日上海MVP线下技术交流活动简报
2018年3月24日下午,几位上海MVP自发组织了一次线下的技术交流会,主要由MVP胡浩牵头,我(陈晴阳)、刘鑫、朱兴亮和胡浩各自做了一次主题演讲,具体主题是:陈晴阳:《这还是我认识的Visual C#吗?》:主要介绍了C# 7.0、7.1和7.2的新特性,以及如何在开发环境与持续集成环境中使用这些新特性刘鑫:《基于nodejs的微服务实战》:介绍了Nodejs的发展过程,以...
2018-03-25 15:24:00
404
转载 解析Visual C# 7.2中的private protected访问修饰符
去年12月份,随着Visual Studio 2017 Update 15.5的发布,Visual C#迎来了它的最新版本:7.2. 在这个版本中,有个让人难以理解的新特性,就是private protected访问修饰符(Access Modifier)。至此,C#语言的访问修饰符有以下几种:privateprotectedpublicinternalinter...
2018-03-19 21:07:00
409
转载 ASP.NET Core Web API下事件驱动型架构的实现(四):CQRS架构中聚合与聚合根的实现...
在前面两篇文章中,我详细介绍了基本事件系统的实现,包括事件派发和订阅、通过事件处理器执行上下文来解决对象生命周期问题,以及一个基于RabbitMQ的事件总线的实现。接下来对于事件驱动型架构的讨论,就需要结合一个实际的架构案例来进行分析。在领域驱动设计的讨论范畴,CQRS架构本身就是事件驱动的,因此,我打算首先介绍一下CQRS架构下相关部分的实现,然后再继续讨论事件驱动型架构实现的具体问题...
2018-03-18 09:45:00
718
转载 重温.NET下Assembly的加载过程
最近在工作中牵涉到了.NET下的一个古老的问题:Assembly的加载过程。虽然网上有很多文章介绍这部分内容,很多文章也是很久以前就已经出现了,但阅读之后发现,并没能解决我的问题,有些点写的不是特别详细,让人看完之后感觉还是云里雾里。最后,我决定重新复习一下这个经典而古老的问题,并将所得总结于此,然后会有一个实例对这个问题进行演示,希望能够帮助到大家。.NET下Assembly的加载过程...
2018-03-07 20:50:00
473
转载 ASP.NET Core Web API下事件驱动型架构的实现(三):基于RabbitMQ的事件总线
在上文中,我们讨论了事件处理器中对象生命周期的问题,在进入新的讨论之前,首先让我们总结一下,我们已经实现了哪些内容。下面的类图描述了我们已经实现的组件及其之间的关系,貌似系统已经变得越来越复杂了。其中绿色的部分就是上文中新实现的部分,包括一个简单的Event Store,一个事件处理器执行上下文的接口,以及一个基于ASP.NET Core依赖注入框架的执行上下文的实现。接下来,我们打算淘...
2018-02-04 09:46:00
2055
转载 ASP.NET Core Web API下事件驱动型架构的实现(二):事件处理器中对象生命周期的管理...
在上文中,我介绍了事件驱动型架构的一种简单的实现,并演示了一个完整的事件派发、订阅和处理的流程。这种实现太简单了,百十行代码就展示了一个基本工作原理。然而,要将这样的解决方案运用到实际生产环境,还有很长的路要走。今天,我们就研究一下在事件处理器中,对象生命周期的管理问题。事实上,不仅仅是在事件处理器中,我们需要关心对象的生命周期,在整个ASP.NET Core Web API的应用程序里...
2018-01-11 20:33:00
477
转载 ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现
很长一段时间以来,我都在思考如何在ASP.NET Core的框架下,实现一套完整的事件驱动型架构。这个问题看上去有点大,其实主要目标是为了实现一个基于ASP.NET Core的微服务,它能够非常简单地订阅来自于某个渠道的事件消息,并对接收到的消息进行处理,于此同时,它还能够向该渠道发送事件消息,以便订阅该事件消息的消费者能够对消息数据做进一步处理。让我们回顾一下微服务之间通信的几种方式,...
2017-12-21 22:10:00
428
转载 在ASP.NET Core Web API中为RESTful服务增加对HAL的支持
HAL(Hypertext Application Language,超文本应用语言)是一种RESTful API的数据格式风格,为RESTful API的设计提供了接口规范,同时也降低了客户端与服务端接口的耦合度。很多当今流行的RESTful API开发框架,包括Spring REST,也都默认支持HAL规范,当RESTful API被调用后,服务端就会返回ContentType为ap...
2017-11-14 22:56:00
208
转载 使用Docker运行Microsoft SQL Server 2017
最近每天都在空闲时间努力编写Apworks框架的案例代码WeText。在文本发布和处理微服务中,我打算使用微软的SQL Server for Linux来做演示,于是也就在自己的docker-compose中加入了MS SQL Server的服务。其实在Docker中运行SQL Server是非常容易的,今天大概做个介绍吧。启动Microsoft SQL Server 2017容器...
2017-11-09 22:10:00
267
转载 Windows 10下Docker使用经验谈
最近一直在开发Apworks框架的案例代码,同时也在一起修复Apworks框架中的Bug和一些设计上的不足。遇到的一个普遍问题是,代码的调试过程需要依赖很多外部系统,比如MongoDB、PostgreSQL、RabbitMQ等。当然可以在本机逐一安装这些服务,然后对服务进行配置,使其满足自己开发调试的需要。这样做当然是没有问题的,只是比较麻烦。于是,我寻求docker的帮助,将服务全都运...
2017-10-23 22:28:00
1064
转载 在Apworks数据服务中使用基于Entity Framework Core的仓储(Repository)实现
《在ASP.NET Core中使用Apworks快速开发数据服务》一文中,我介绍了如何使用Apworks框架的数据服务来快速构建用于查询和管理数据模型的RESTful API,通过该文的介绍,你会看到,使用Apworks框架开发数据服务是何等简单快捷,提供的功能也非常多,比如对Hypermedia的支持,以及提供丰富的异常信息和调用栈信息。另外,Apworks数据服务可以支持各种类型的仓...
2017-07-12 22:00:00
341
转载 在.NET Core中使用Irony实现自己的查询语言语法解析器
在之前《在ASP.NET Core中使用Apworks快速开发数据服务》一文的评论部分,.NET大神张善友为我提了个建议,可以使用Compile As a Service的Roslyn为语法解析提供支持。在此非常感激友哥给我的建议,也让我了解了一些Roslyn的知识。使用Roslyn的一个很大的好处是,框架无需依赖第三方的组件,并且Roslyn也是.NET Foundation的一个开源...
2017-06-06 20:21:00
327
转载 使用Angular 4、Bootstrap 4、TypeScript和ASP.NET Core开发的Apworks框架案例应用:Task List...
最近我为我自己的应用开发框架Apworks设计了一套案例应用程序,并以Apache 2.0开源,开源地址是:https://github.com/daxnet/apworks-examples,目的是为了让大家更为方便地学习和使用.NET Core、最新的前端开发框架Angular,以及Apworks开发框架。今后会有越来越多的案例代码加入到这个系列中,以更好地展示Apworks框架在基...
2017-05-07 20:06:00
244
转载 在ASP.NET Core中使用Apworks开发数据服务:对HAL的支持
HAL,全称为Hypertext Application Language,它是一种简单的数据格式,它能以一种简单、统一的形式,在API中引入超链接特性,使得API的可发现性(discoverable)更强,并具有自描述的特点。使用了HAL的API会更容易地被第三方开源库所调用,并且使用起来也很方便,开发者可以像处理普通JSON数据那样去处理API数据。有关HAL的更多信息,可以参考官方...
2017-04-12 20:15:00
149
转载 在ASP.NET Core中使用Apworks快速开发数据服务
不少关注我博客的朋友都知道我在2009年左右开发过一个名为Apworks的企业级应用程序开发框架,旨在为分布式企业系统软件开发提供面向领域驱动(DDD)的框架级别的解决方案,并对多种系统架构风格提供支持。这个框架的开发和维护我坚持了很久,一直到2015年,我都一直在不停地重构这个项目。目前这个项目在Github上也得到了将近260的推荐数,很多对技术感兴趣的朋友也一直与我保持着联系和交流...
2017-04-03 09:56:00
265
转载 .NET Core项目从xproj+project.json向csproj迁移简介
3月7日,微软发布了Visual Studio 2017 RTM,与之一起发布的还有.NET Core Runtime 1.1.0以及.NET Core SDK 1.0.0,尽管这些并不是最新版,但也已经从preview版本升级到了正式版。所以,在安装Visual Studio 2017时如果启用了.NET Core开发的相关功能,那么在安装完成后,你可以在命令行直接执行dotnet.e...
2017-03-18 19:15:00
407
转载 基于.NET Core的Hypertext Application Language(HAL)开发库
HAL,全称为Hypertext Application Language,它是一种简单的数据格式,它能以一种简单、统一的形式,在API中引入超链接特性,使得API的可发现性(discoverable)更强,并具有自描述的特点。使用了HAL的API会更容易地被第三方开源库所调用,并且使用起来也很方便,开发者可以像处理普通JSON数据那样去处理API数据。有关HAL的更多信息,可以参考官方...
2017-01-20 21:07:00
296
转载 在ASP.NET Core Web API上使用Swagger提供API文档
我在开发自己的博客系统(http://daxnet.me)时,给自己的RESTful服务增加了基于Swagger的API文档功能。当设置IISExpress的默认启动路由到Swagger的API文档页面后,在IISExpress启动Web API站点后,会自动重定向到API文档页面,非常方便。这不仅让我能够快速省查API设计的合理性,同时从API的使用角度也为我自己提供了便捷。下图就是我...
2016-12-14 22:29:00
176
转载 欢迎阅读daxnet的新博客:一个基于Microsoft Azure、ASP.NET Core和Docker的博客系统
2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客。当然,我写博客也不是从2008年才开始的,在更早时候,也在CSDN和系统分析员协会(之后名为“希赛网”)个人空间发布过一些与编程和开发相关的文章。从入行到现在,我至始至终乐于与网友分享自己的所学所得,希望会有更多的同我一样的业内朋友能够在事业上取得成功,也算是为我们的软件事业贡献自己的一份力量吧,这也是我在博客...
2016-12-06 22:09:00
159
转载 介绍一款原创的四则运算算式生成器:CalculateIt2
家里小朋友读一年级了,最近每天都有一些10以内的加减法口算练习,作为程序员爸爸,自然也是想办法能够偷懒,让电脑出题,给小朋友做些练习。于是,自己在业余时间开发了一个四则运算算式生成器,名为:CalculateIt2。项目是开源的,源码地址是:https://github.com/daxnet/CalculateIt2。也可以在标准的.NET Framework 4.6.1的项目中,通过n...
2016-09-23 23:21:00
588
转载 Docker容器环境下ASP.NET Core Web API应用程序的调试
本文主要介绍通过Visual Studio 2015 Tools for Docker – Preview插件,在Docker容器环境下,对ASP.NET Core Web API应用程序进行调试。在自己做实验的过程中也碰到了一些问题,经过一些测试和搜索资料,基本解决了这些问题,本文也会对这些问题进行介绍,以免有相同需求的朋友多走弯路。 插件的下载与安装 至撰写本文为止,Visual...
2016-08-21 20:11:00
525
转载 Docker for Windows使用简介
在上一篇文章中,通过演练指导的方式,介绍了在Docker中运行ASP.NET Core Web API应用程序的过程。本文将介绍Docker for Windows的使用。先决条件前两周时间,Docker发布了Docker for Windows的正式版,于是就可以在Windows下运行Docker容器了。要在Windows下运行Docker,需要满足以下先决条件:64位...
2016-08-19 21:02:00
228
转载 在docker中运行ASP.NET Core Web API应用程序
本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过程中,也会对docker的使用进行一些简单的描述。对于.NET Core以及docker的基本概念,网上已经有很多文章对其进行介绍了,因此本文不会再详细讲解这些内容。对.NET Core和docker不了解的朋友,建议首先查阅与这些技术相关的文档,然后再阅读本...
2016-08-17 21:40:00
247
转载 【DDD/CQRS/微服务架构案例】在Ubuntu 14.04.4 LTS中运行WeText项目的服务端
在《WeText项目:一个基于.NET实现的DDD、CQRS与微服务架构的演示案例》文章中,我介绍了自己用Visual Studio 2015(C# 6.0 with .NET Framework 4.6.1)开发的DDD/CQRS/微服务架构的案例项目:WeText。文章发出后反响很好,也很感谢大家的关注。在本文中我将介绍如何在Ubuntu 14.04.4 LTS中运行WeText项目...
2016-04-24 13:05:00
169
转载 WeText项目:一个基于.NET实现的DDD、CQRS与微服务架构的演示案例
最近出于工作需要,了解了一下微服务架构(Microservice Architecture,MSA)。我经过两周业余时间的努力,凭着自己对微服务架构的理解,从无到有,基于.NET打造了一个演示微服务架构的应用程序案例,并结合领域驱动设计(DDD)以及命令查询职责分离(CQRS)体系结构模式,对事件驱动的微服务系统架构进行了一些实战性的探索。现将自己的思考和收获整理成文,分享给大家。 微...
2016-04-22 16:37:00
568
转载 基于轻量型Web服务器Raspkate的RESTful API的实现
在上一篇文章中,我们已经了解了Raspkate这一轻量型Web服务器,今天,我们再一起了解下如何基于Raspkate实现简单的RESTful API。 模块 首先让我们了解一下“模块”的概念。Raspkate的模块包含了一组能够提供完整业务功能的HTTP处理器(Handler),例如,在Raspkate的源代码库中,默认提供了两个模块:Default和RaspberryPi,它们分别...
2016-03-27 21:52:00
185
转载 Raspkate - 基于.NET的可运行于树莓派的轻量型Web服务器
最近在业余时间玩玩树莓派,刚开始的时候在树莓派里写一些基于wiringPi库的C语言程序来控制树莓派的GPIO引脚,从而控制LED发光二极管的闪烁,后来觉得,是不是可以使用HTML5+jQuery等流行的前端技术做一个简单的Web站点,让树莓派搭载这个站点,通过手机或者平板电脑来控制树莓派。经过一番调研,考虑如下:使用Apache或者Nginx搭建一个Web服务器优点:服...
2016-03-22 15:13:00
194
转载 Apworks框架实战(六):使用基于Entity Framework的仓储基础结构
在前面的章节中,我们已经设计了一个简单的领域模型,接下来我们希望能够实现领域模型的持久化及查询。在Apworks中,实现了面向Entity Framework、NHibernate以及MongoDB的仓储基础结构。在本章节中,我将向大家介绍如何在Apworks中使用基于Entity Framework的仓储机制。 搭建基于Entity Framework的基础结构 在使用Apwork...
2015-10-15 22:26:00
205
转载 Apworks框架实战
Apworks框架实战(一):Apworks到底是什么? Apworks框架实战(二):开始使用 Apworks框架实战(三):单元测试与持续集成 Apworks框架实战(四):使用Visual Studio开发面向经典分层架构的应用程序:从EasyMemo案例开始 Apworks框架实战(五):EasyMemo的领域模型设计 Apworks...
2015-10-03 21:08:00
229
转载 Apworks框架实战(五):EasyMemo的领域模型设计
在上一讲中,我们已经新建了一个聚合根对象Account,并已经可以开始设计领域模型了。在这一讲中,我们会着重介绍EasyMemo领域模型的分析和设计,并引入Visual Studio Ultimate(旗舰版)版本的特性,介绍在Visual Studio 2013 Ultimate中如何使用体系结构建模工具进行领域模型设计,并自动化产生支持Apworks框架的代码。 界定上下文 由于...
2015-10-03 20:54:00
196
转载 Apworks框架实战(四):使用Visual Studio开发面向经典分层架构的应用程序:从EasyMemo案例开始...
时隔一年,继续我们的Apworks框架之旅。在接下来的文章中,我将逐渐向大家介绍如何在Visual Studio中结合Apworks框架,使用ASP.NET Web API和MVC来开发面向经典分层架构的应用程序。在这一讲中,我们首先了解一下分层架构的各个“层”,以及所涉及的Visual Studio项目,然后,我们从领域模型开始,在Visual Studio中开始我们的应用程序开发之旅...
2015-10-02 11:40:00
194
转载 CloudNotes之桌面客户端篇:将笔记发布到博客园
在最新版本(1.0.5715.39966)的CloudNotes桌面客户端中,已经可以把笔记发布到博客园了,它是通过一个新增的桌面客户端插件实现的。事实上,该插件不仅仅支持博客园,它可以支持所有基于MetaWeblog API的博客系统。发布博客不多说,先上图。在该版本的桌面客户端中,打开设置对话框,进入“扩展功能”标签,您可以看到在工具型扩展功能列表中,新增了两个扩展功能(...
2015-08-26 16:36:00
206
转载 CloudNotes之桌面客户端篇:笔记撰写样式的支持
最近在CloudNotes桌面客户端中新增了笔记撰写样式的功能。当用户新建笔记的时候,可以在输入笔记标题的同时,选择笔记撰写样式,由安装包默认提供的样式主要有默认样式(Default)、羊皮纸样式(Leather Paper)以及Word 2013样式(Microsoft Word 2013)。选择笔记样式的时候,还提供了预览功能,用户可以直接预览样式效果: 当然,为了方便操作,用...
2015-08-19 15:07:00
151
转载 Wizard Framework:一个自己开发的基于Windows Forms的向导开发框架
最近因项目需要,我自己设计开发了一个基于Windows Forms的向导开发框架,目前我已经将其开源,并发布了一个NuGet安装包。比较囧的一件事是,当我发布了NuGet安装包以后,发现原来已经有一个.NET的向导开发框架了,它叫Microsoft Visual Studio 2013 Wizard Framework。我并没有对其进行深入研究,单从名称上看,该框架是否只能在Visual...
2015-07-01 10:08:00
265
转载 CloudNotes之桌面客户端篇:插件系统的实现
【CloudNotes版本更新历史与各版本下载地址请点击此处】 【CloudNotes中文系列文章汇总列表请点击此处】 【查看CloudNotes源代码请点击此处】 有时候,同一个名词,针对不同的人群,应该采用不同的表达方式。比如插件的概念,对于程序员而言,可以将其称为插件,或者扩展。对于用户而言,或许“扩展功能”一词会更加贴切。本文还是脱离不了码农的气质,继续讨论技术问题,因此,...
2015-02-25 22:06:00
158
转载 CloudNotes之领域建模篇:领域模型简介
CloudNotes领域模型还是相对简单的,并不一定需要采用面向领域驱动的设计方法来解决CloudNotes的领域问题。但出于以下几个方面的原因,我还是采用了面向领域驱动的方式来开发CloudNotes: 领域驱动是企业级应用开发的一种指导性模型,以领域模型作为软件开发的中心,符合解决问题的基本思路 现有的企业级应用开发框架对面向领域的开发模式支持得越来越好,如果选用这种...
2015-02-22 20:46:00
145
转载 CloudNotes云端个人笔记系统系列文章汇总
【CloudNotes版本更新信息与下载地址:http://cloudnotes.cloudapp.net/webapi/Home/Release】【CloudNotes RESTful API帮助文档地址:http://cloudnotes.cloudapp.net/webapi/Help】CloudNotes:一个云端个人笔记系统CloudNotes之领域建模篇:领域...
2015-02-15 13:56:00
164
转载 将Json数据转换为ADO.NET DataSet对象
Json数据转换为ADO.NET DataSet其实方法有很多,Newtonsoft.Json也提供了DataSet的Converter用以转换Json数据。但是有些情况下DataSet Converter并不管用,而且也不一定能够满足项目需要。这里介绍另一种简单有效的方法,能够方便快速地将Json数据转为ADO.NET DataSet。 设计 事实上Newtonsoft.Json已...
2015-02-02 10:54:00
218
转载 CloudNotes之桌面客户端篇:增强的笔记列表
今天,我发布了CloudNotes的一个更新版本:1.0.5484.36793。这个版本与1.0.5472.20097不同的是,它拥有增强的笔记列表,与之前单调的列表系统相比,新的笔记列表不仅可以显示笔记的摘要内容,而且还可以从笔记中抽取第一张图片,并显示图片的详细信息: 怎么样?相比之前的笔记列表,现在的设计是不是能够展示更丰富的信息呢? 升级到最新版本 如果在读完我的第一篇...
2015-01-07 16:14:00
143
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人