上一页 1 2 3 4 5 6 ··· 10 下一页
摘要:在上文中我介绍了ASP.NET Core应用程序容器化时需要注意的几个问题,并给出了一个案例应用程序:tasklist。今天接着上文的内容,继续了解一下如何使用Azure DevOps进行ASP.NET Core应用程序的持续集成。为了便于讨论,本文会将持续集成(Continuous Integra... 阅读全文
posted @ 2018-10-09 22:06 dax.net 阅读(66) 评论(0) 推荐(0) 编辑
摘要:上个月15日,上海MVP做了一次线下的技术分享活动,我分享的主题是《快速构建容器化的ASP.NET Core应用程序》,有关这次活动的简报,可以参考这里。另外,我的主题分享的PPT也可以点击这里下载。由于线下活动时间紧迫,没有办法把所有的内容完全仔细地讲解一遍,最后使用一个小时左右的时间做了一个ta... 阅读全文
posted @ 2018-10-07 22:27 dax.net 阅读(105) 评论(0) 推荐(0) 编辑
摘要:2018年9月15日下午,几位来自上海的MVP自发组织了一次线下技术交流会,仍然是MVP胡浩牵头,由朱兴亮组织,由我、卿毅和胡浩给参会的朋友们做了相关技术话题的分享,并在茶歇时间与大家进行了讨论交流。在这次活动中,我们分享的具体主题是:陈晴阳:《快速构建容器化的ASP.NET Core应用程序》。在... 阅读全文
posted @ 2018-10-02 20:54 dax.net 阅读(80) 评论(0) 推荐(0) 编辑
摘要:在工作中遇到一个问题,就是如何判断化学分子式的数据格式。在介绍“如何”这个问题之前,先简单介绍一下化学分子式的数据格式。通常情况下,计算机处理化学分子式,也都是将分子式序列化成一种数据模型,然后对这个数据模型进行处理。比如:水分子H2O,就由两个氢原子和一个氧原子组成,氢和氧之间有化学键相连,于是,... 阅读全文
posted @ 2018-09-15 21:47 dax.net 阅读(146) 评论(0) 推荐(0) 编辑
摘要:最近在项目中实现了一套基于Windows Forms的开发框架,个人对于本身的设计还是比较满意的,因此,打算将这部分设计整理成文档,通过一些UML图形比如类图(Class Diagram)来描述整个框架的设计。然而,并没有找到一款合适的UML设计工具,商用版的功能强大,但即便是个人许可,一个Lice... 阅读全文
posted @ 2018-09-09 21:34 dax.net 阅读(406) 评论(1) 推荐(1) 编辑
摘要:应用程序的开发不仅仅是写代码这点事情。假设你正在开发一个能够支持多次部署的微服务,此时你就需要有一个合理的应用程序配置方案,以便在开发和生产环境中能够方便地选用不同的配置参数,并且能够在部署到容器服务(比如ACS或者Kubernetes)时,这些参数能够被动态地、合理地设置。本文通过最简单的形式,对... 阅读全文
posted @ 2018-08-25 22:21 dax.net 阅读(375) 评论(0) 推荐(1) 编辑
摘要:今年7月份,再一次成功连任微软全球最有价值专家(Microsoft Most Valuable Professional)。说心里话,今年连任成功,让我感觉有些意外,因为从去年开始,MVP项目进入了全球性的改革阶段,不仅续任周期发生了变化,技术方向和考核标准也都发生了一定程度的变更,变得更为完善。在... 阅读全文
posted @ 2018-08-13 21:12 dax.net 阅读(199) 评论(0) 推荐(0) 编辑
摘要:最近微服务架构特别火爆,就跟人工智能、区块链一样,软件架构设计如果不提微服务,感觉就像是与世界先进的架构风格和开发技术脱了节似的,各方各面都无法彰显高大上的气质。本来再打算使用一套系列文章来讨论微服务的方方面面,但仔细考量之后发现,事情并没那么简单:首先抛开系列文章烂尾现象不说,单是微服务架构本身,... 阅读全文
posted @ 2018-07-28 21:23 dax.net 阅读(174) 评论(0) 推荐(0) 编辑
摘要:在上一讲中,我介绍了CQRS架构中聚合与聚合根的实现,并通过单元测试验证了设计的正确性。这部分内容比较难,在实际应用过程中存在一定的门槛,所以感觉关注的读者并不是特别多。然而,CQRS本身作为一种事件驱动型架构,解决了现在流行的微服务中的一些细节问题,我认为还是非常有必要探究讨论的。这部分内容我会在... 阅读全文
posted @ 2018-07-14 19:50 dax.net 阅读(123) 评论(0) 推荐(0) 编辑
摘要:最近工作上遇到一个问题,就是有将近200万个CSV文件,每个CSV文件包含了成千上万条实验数据,CSV以一个不连续的整数值作为文件名,比如:1.CSV、2.CSV、3.CSV、5.CSV等等。另外又有200万个XML文件,每个XML文件的文件名与CSV的文件名一一对应,在这些XML文件中,定义了所对... 阅读全文
posted @ 2018-07-04 21:30 dax.net 阅读(222) 评论(0) 推荐(0) 编辑
摘要:这是件非常有趣的事情,最近在工作中,使用了C#中的部分方法(partial methods)。其实,C#的部分方法并不是什么新鲜事情,早在2007年左右,随着C# 3.0的发布,引入了部分方法的概念,它与部分类(partial class)的应用场景是类似的:解决代码生成器产生的代码与用户代码之间的... 阅读全文
posted @ 2018-06-26 21:43 dax.net 阅读(477) 评论(0) 推荐(0) 编辑
摘要:1月20日正值大寒节气,在微软MVP朱兴亮的组织牵头下,上海MVP自发举办了题为《跟社区专家一起聊聊混合云、领域驱动、区块链和数字营销》的技术交流会。四名来自上海的MVP分别在自己擅长的技术领域做了主题演讲,并现场回答了与会者提出的问题。虽然天气阴冷细雨绵绵,但这并没有阻挡大家利用周末休息时间远道而来,对我们的活动支持捧场的热情,现场基本座无虚席。在MVP进行相关的技术分享和介绍之后,大家仍然觉得... 阅读全文
posted @ 2018-03-25 20:47 dax.net 阅读(825) 评论(0) 推荐(1) 编辑
摘要:2018年3月24日下午,几位上海MVP自发组织了一次线下的技术交流会,主要由MVP胡浩牵头,我(陈晴阳)、刘鑫、朱兴亮和胡浩各自做了一次主题演讲,具体主题是: 陈晴阳:《这还是我认识的Visual C#吗?》:主要介绍了C# 7.0、7.1和7.2的新特性,以及如何在开发环境与持续集成环境中使用这 阅读全文
posted @ 2018-03-25 15:24 dax.net 阅读(622) 评论(5) 推荐(0) 编辑
摘要:去年12月份,随着Visual Studio 2017 Update 15.5的发布,Visual C#迎来了它的最新版本:7.2. 在这个版本中,有个让人难以理解的新特性,就是private protected访问修饰符(Access Modifier)。至此,C#语言的访问修饰符有以下几种: p 阅读全文
posted @ 2018-03-19 21:07 dax.net 阅读(1655) 评论(2) 推荐(10) 编辑
摘要:在前面两篇文章中,我详细介绍了基本事件系统的实现,包括事件派发和订阅、通过事件处理器执行上下文来解决对象生命周期问题,以及一个基于RabbitMQ的事件总线的实现。接下来对于事件驱动型架构的讨论,就需要结合一个实际的架构案例来进行分析。在领域驱动设计的讨论范畴,CQRS架构本身就是事件驱动的,因此,我打算首先介绍一下CQRS架构下相关部分的实现,然后再继续讨论事件驱动型架构实现的具体问题。当然,C... 阅读全文
posted @ 2018-03-18 09:45 dax.net 阅读(2028) 评论(7) 推荐(10) 编辑
摘要:最近在工作中牵涉到了.NET下的一个古老的问题:Assembly的加载过程。虽然网上有很多文章介绍这部分内容,很多文章也是很久以前就已经出现了,但阅读之后发现,并没能解决我的问题,有些点写的不是特别详细,让人看完之后感觉还是云里雾里。最后,我决定重新复习一下这个经典而古老的问题,并将所得总结于此,然后会有一个实例对这个问题进行演示,希望能够帮助到大家。.NET下Assembly的加载过程.NET下... 阅读全文
posted @ 2018-03-07 20:50 dax.net 阅读(4650) 评论(18) 推荐(60) 编辑
摘要:在上文中,我们讨论了事件处理器中对象生命周期的问题,在进入新的讨论之前,首先让我们总结一下,我们已经实现了哪些内容。下面的类图描述了我们已经实现的组件及其之间的关系,貌似系统已经变得越来越复杂了。其中绿色的部分就是上文中新实现的部分,包括一个简单的Event Store,一个事件处理器执行上下文的接口,以及一个基于ASP.NET Core依赖注入框架的执行上下文的实现。接下来,我们打算淘汰Pass... 阅读全文
posted @ 2018-02-04 09:46 dax.net 阅读(8618) 评论(23) 推荐(41) 编辑
摘要:在上文中,我介绍了事件驱动型架构的一种简单的实现,并演示了一个完整的事件派发、订阅和处理的流程。这种实现太简单了,百十行代码就展示了一个基本工作原理。然而,要将这样的解决方案运用到实际生产环境,还有很长的路要走。今天,我们就研究一下在事件处理器中,对象生命周期的管理问题。事实上,不仅仅是在事件处理器中,我们需要关心对象的生命周期,在整个ASP.NET Core Web API的应用程序里,我们需要... 阅读全文
posted @ 2018-01-11 20:33 dax.net 阅读(5167) 评论(17) 推荐(30) 编辑
摘要:很长一段时间以来,我都在思考如何在ASP.NET Core的框架下,实现一套完整的事件驱动型架构。这个问题看上去有点大,其实主要目标是为了实现一个基于ASP.NET Core的微服务,它能够非常简单地订阅来自于某个渠道的事件消息,并对接收到的消息进行处理,于此同时,它还能够向该渠道发送事件消息,以便订阅该事件消息的消费者能够对消息数据做进一步处理。让我们回顾一下微服务之间通信的几种方式,分为同步和... 阅读全文
posted @ 2017-12-21 22:10 dax.net 阅读(9599) 评论(21) 推荐(58) 编辑
摘要:HAL(Hypertext Application Language,超文本应用语言)是一种RESTful API的数据格式风格,为RESTful API的设计提供了接口规范,同时也降低了客户端与服务端接口的耦合度。很多当今流行的RESTful API开发框架,包括Spring REST,也都默认支 阅读全文
posted @ 2017-11-14 22:56 dax.net 阅读(2804) 评论(3) 推荐(6) 编辑
摘要:最近每天都在空闲时间努力编写Apworks框架的案例代码WeText。在文本发布和处理微服务中,我打算使用微软的SQL Server for Linux来做演示,于是也就在自己的docker-compose中加入了MS SQL Server的服务。其实在Docker中运行SQL Server是非常容 阅读全文
posted @ 2017-11-09 22:10 dax.net 阅读(12300) 评论(10) 推荐(1) 编辑
摘要:最近一直在开发Apworks框架的案例代码,同时也在一起修复Apworks框架中的Bug和一些设计上的不足。遇到的一个普遍问题是,代码的调试过程需要依赖很多外部系统,比如MongoDB、PostgreSQL、RabbitMQ等。当然可以在本机逐一安装这些服务,然后对服务进行配置,使其满足自己开发调试 阅读全文
posted @ 2017-10-23 22:28 dax.net 阅读(124904) 评论(18) 推荐(17) 编辑
摘要:《在ASP.NET Core中使用Apworks快速开发数据服务》一文中,我介绍了如何使用Apworks框架的数据服务来快速构建用于查询和管理数据模型的RESTful API,通过该文的介绍,你会看到,使用Apworks框架开发数据服务是何等简单快捷,提供的功能也非常多,比如对Hypermedia的支持,以及提供丰富的异常信息和调用栈信息。另外,Apworks数据服务可以支持各种类型的仓储(Rep... 阅读全文
posted @ 2017-07-12 22:00 dax.net 阅读(2291) 评论(2) 推荐(1) 编辑
摘要:在之前《在ASP.NET Core中使用Apworks快速开发数据服务》一文的评论部分,.NET大神张善友为我提了个建议,可以使用Compile As a Service的Roslyn为语法解析提供支持。在此非常感激友哥给我的建议,也让我了解了一些Roslyn的知识。使用Roslyn的一个很大的好处是,框架无需依赖第三方的组件,并且Roslyn也是.NET Foundation的一个开源项目,为.... 阅读全文
posted @ 2017-06-06 20:21 dax.net 阅读(5278) 评论(14) 推荐(25) 编辑
摘要:最近我为我自己的应用开发框架Apworks设计了一套案例应用程序,并以Apache 2.0开源,开源地址是:https://github.com/daxnet/apworks-examples,目的是为了让大家更为方便地学习和使用.NET Core、最新的前端开发框架Angular,以及Apworks开发框架。今后会有越来越多的案例代码加入到这个系列中,以更好地展示Apworks框架在基于.NET... 阅读全文
posted @ 2017-05-07 20:06 dax.net 阅读(5641) 评论(6) 推荐(23) 编辑
摘要:HAL,全称为Hypertext Application Language,它是一种简单的数据格式,它能以一种简单、统一的形式,在API中引入超链接特性,使得API的可发现性(discoverable)更强,并具有自描述的特点。使用了HAL的API会更容易地被第三方开源库所调用,并且使用起来也很方便,开发者可以像处理普通JSON数据那样去处理API数据。有关HAL的更多信息,可以参考官方网站:ht... 阅读全文
posted @ 2017-04-12 20:15 dax.net 阅读(2178) 评论(2) 推荐(0) 编辑
摘要:不少关注我博客的朋友都知道我在2009年左右开发过一个名为Apworks的企业级应用程序开发框架,旨在为分布式企业系统软件开发提供面向领域驱动(DDD)的框架级别的解决方案,并对多种系统架构风格提供支持。这个框架的开发和维护我坚持了很久,一直到2015年,我都一直在不停地重构这个项目。目前这个项目在Github上也得到了将近260的推荐数,很多对技术感兴趣的朋友也一直与我保持着联系和交流,甚至还有... 阅读全文
posted @ 2017-04-03 09:56 dax.net 阅读(5252) 评论(10) 推荐(23) 编辑
摘要: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.exe,此时... 阅读全文
posted @ 2017-03-18 19:15 dax.net 阅读(2635) 评论(1) 推荐(1) 编辑
摘要:HAL,全称为Hypertext Application Language,它是一种简单的数据格式,它能以一种简单、统一的形式,在API中引入超链接特性,使得API的可发现性(discoverable)更强,并具有自描述的特点。使用了HAL的API会更容易地被第三方开源库所调用,并且使用起来也很方便,开发者可以像处理普通JSON数据那样去处理API数据。有关HAL的更多信息,可以参考官方网站:ht... 阅读全文
posted @ 2017-01-20 21:07 dax.net 阅读(1501) 评论(2) 推荐(2) 编辑
摘要:我在开发自己的博客系统(http://daxnet.me)时,给自己的RESTful服务增加了基于Swagger的API文档功能。当设置IISExpress的默认启动路由到Swagger的API文档页面后,在IISExpress启动Web API站点后,会自动重定向到API文档页面,非常方便。这不仅让我能够快速省查API设计的合理性,同时从API的使用角度也为我自己提供了便捷。下图就是我的博客系统... 阅读全文
posted @ 2016-12-14 22:29 dax.net 阅读(15058) 评论(14) 推荐(13) 编辑
上一页 1 2 3 4 5 6 ··· 10 下一页