摘要:
【CloudNotes版本更新信息与下载地址:http://cloudnotes.cloudapp.net/webapi/Home/Release】【CloudNotes RESTful API帮助文档地址:http://cloudnotes.cloudapp.net/webapi/Help】Clo... 阅读全文
摘要:
Json数据转换为ADO.NET DataSet其实方法有很多,Newtonsoft.Json也提供了DataSet的Converter用以转换Json数据。但是有些情况下DataSet Converter并不管用,而且也不一定能够满足项目需要。这里介绍另一种简单有效的方法,能够方便快速地将Json数据转为ADO.NET DataSet。 设计 事实上Newtonsoft.Json已经提供了一... 阅读全文
摘要:
今天,我发布了CloudNotes的一个更新版本:1.0.5484.36793。这个版本与1.0.5472.20097不同的是,它拥有增强的笔记列表,与之前单调的列表系统相比,新的笔记列表不仅可以显示笔记的摘要内容,而且还可以从笔记中抽取第一张图片,并显示图片的详细信息: 怎么样?相比之前的笔记列表,现在的设计是不是能够展示更丰富的信息呢? 升级到最新版本 如果在读完我的第一篇关于Clo... 阅读全文
摘要:
很长时间没有更新博客了,一直在忙着工作和生活琐事,虽然偶尔也有闲暇之时,但短短的几个小时空闲又未必能够静下心来。最近一个多月突发奇想,将自己在近一年前做的一个自己用的云端个人笔记系统重构美化了一下,增强了一部分功能,现打算开源公布出来,分享给大家,也会慢慢地向大家介绍整个系统所使用的开发技术和部署环境等细节。 背景 近一年前,我一直希望能自己开发一套轻量的个人笔记系统,需要的功能不多,能够在W... 阅读全文
摘要:
最近发现在项目中或许会遇到让用户自己构建查询表达式的情况。比如需要通过一种可配置的界面,来让用户输入一组具有逻辑关系的查询表达式,然后根据这个查询表达式来过滤并返回所需要的数据。这种用户案例其实非常常见。由此受到启发,或许我们可以自己定义一种通用的面向查询的领域特定语言(DSL),来实现查询的序列化和动态构建。 概述 由此我发布了一个称为Unified Queries(以下简称UQ)的开源项目... 阅读全文
摘要:
虽然这部分内容并没有过多地讨论Apworks框架的使用,但这部分内容非常重要,它与Apworks框架本身的设计紧密相关,也是进一步了解Apworks框架设计的必修课。 单元测试与持续集成概述 在敏捷开发过程中,单元测试是非常重要的。这不同于传统的瀑布开发模型,在瀑布模型中,单元测试的重要性体现的并不明显,因为在这种模型中,“测试”被强调为整个开发流程中的一个环节,也会有专门的测试团队来负责测试... 阅读全文
摘要:
要使用Apworks进行应用程序开发,您需要安装Visual Studio 2012以上的版本(以下简称Visual Studio 2012+),从Apworks 2.5开始,需要Micrsoft.NET Framework 4.5的支持,因此强烈建议使用Visual Studio 2012+进行开发。 获取源代码 要获得最新版本的代码,请使用下面的命令获取: git clone https... 阅读全文
摘要:
简介 Apworks是一款基于Microsoft .NET的面向领域驱动的企业级应用程序开发框架,它适用于以领域模型为核心的企业级系统的开发和集成。Apworks不仅能够很好地支持经典的分层架构,而且还能支持基于事件驱动的命令查询职责分离(Command-Query Responsibility Segregation, CQRS)架构。 随着软件系统日趋复杂,构建一套可用的、稳定的、可扩展的... 阅读全文
摘要:
在Entity Framework Model First下, 一个非常常见的需求是改变数据库脚本的生成方式。这个应用场景是指,当用户在Designer上单击鼠标右键,然后选择Generate Database from Model选项,此时Entity Framework Model First会根据模型产生数据库SQL脚本,并将SQL脚本文件添加到解决方案资源管理器中。 事实上,这个自动化产... 阅读全文
摘要:
众所周知Visual Studio 2013中有一个由SignalR机制实现的Browser Link功能,意思是开发人员可以同时使用多个浏览器进行调试,当按下IDE中的Browser Link按钮后,开发中对页面的更改会同步到所有已连接的浏览器中。Browser Link按钮就是位于浏览器调试按钮右边的一个类似“刷新”的按钮:最近在开发apworks.org的新版本(之前因为供应商的问题导致网站全部瘫痪,我也一直没来得及修复,索性自己重新打造一个,顺便也验证Apworks框架的可用性),发现在使用syntaxhighlighter插件的页面上,以前没有问题的页面现在出现了如下错误:研究了很久 阅读全文
摘要:
Microsoft Roslyn是微软.NET“编译器即服务(Compiler as a Service)”的主要产品,它提供了开放的编译器API,并为源代码产生、分析和重构提供了新一代的语言对象模型。Anders Hejlsberg在BUILD 2013大会上提到,C# 6.0的编译器将使用Roslyn实现,这一实现会包含在Visual Studio 2013之后的产品中。根据Anders的描述,C# 6.0的编译器将采用C#开发,从而告别现有的本机代码(native code)的实现方式,“虽然是采用C#来实现C#编译器,但我想性能至少不会比原来的实现方式差。”有关Roslyn的内容,可以 阅读全文
摘要:
最近在项目上遇到一个问题,需要能够在程序中获取Lync会议的链接地址。Lync是微软出品的一套即时通信(IM)客户端软件,配合Microsoft Lync Server使用,其前身是Microsoft Office Communicator(MOC)。与Live Messenger相比,Lync更适合企业内部使用,因为它还具备一定的与企业级应用组件进行整合的功能。在Microsoft Office 2010/2013中,Lync已成为Office中的一个套件。在企业内部使用Outlook和Lync的读者一定知道,Outlook中有一个Lync的插件,当启用了该插件后,即可在“日历”视图中通过单 阅读全文
摘要:
本文为《在Visual Studio 2012中使用VMSDK开发领域特定语言》专题文章的第二部分,在这部分内容中,将以实际应用为例,介绍开发DSL的主要步骤,包括设计、定制、调试、发布以及使用等。 案例:一个单向状态流DSL的设计和开发 假设我们需要设计一个单向状态流DSL,这个单向状态流有着三种不同的状态节点:起始节点、中间节点和结束节点。整个DSL需要满足以下的条件(或具有以下功能): ... 阅读全文
摘要:
前言 本专题主要介绍在Visual Studio 2012中使用Visualization & Modeling SDK进行领域特定语言(DSL)的开发,包括两个部分的内容。在第一部分中,将对领域特定语言进行简单介绍,并讲解如何使用Visual Studio 2012创建一个领域特定语言的开发解决方案,以及Visual Studio 2012集成开发环境对DSL开发的支持;在第二部分中,将以实际... 阅读全文
摘要:
Byteart Retail提供了相对简单的配置方式:对于应用程序中所需要的参数,都是通过web.config文件进行配置的。这一点与框架系统的配置不同。框架系统至少应该提供两种配置方式:直接编写代码的方式,以及web/app.config的方式,这是为了迎合不同的使用场景而设计的。因为作为一套框架而言,它为应用程序的正确运行提供了支撑平台,因此,它需要向开发者提供直接编写代码的配置方式,以迎合测... 阅读全文
摘要:
部署这两天将Byteart Retail案例程序宿主到了Windows Azure虚拟主机上。基本步骤是:在Windows Azure管理器中,新建一台虚拟主机,我选择的配置是最高版本的Windows Server加上基本可以说是最烂的硬件配置: Windows Server:Windows Ser... 阅读全文
摘要:
上周我发布了Apworks框架的最新版本,打算写点文章来介绍如何在实际项目中使用Apworks进行开发。今天先简单写一点东西,首先说明一下,Apworks本身是面向领域驱动的一套开发框架,因此,领域模型的分析和建立就是使用Apworks的重点;然而,在大家对Apworks还没有任何了解的基础上,我暂时先抛开领域模型的建立,先向大家展示一下,如何使用Apworks开发第一个可以运行的程序。在这篇文章的介绍中,我们的领域模型只有一个聚合:日记(Note),而且我们会将这个聚合对象同时用作数据传输对象,这当然与DDD的宗旨是违背的,但为了简化介绍过程,我们也不把问题复杂化了。现在,就让我们一起来创建 阅读全文
摘要:
经过大半年的断断续续的努力,今天,我发布了Apworks的一个新版本:2.5.4878.35266。Apworks是我从2009年开始一直开发并维护的一个面向领域驱动的基于.NET的企业级应用程序开发框架,通过使用这个框架,开发者可以快速地开发出面向领域驱动的、专业的企业级应用程序。Apworks同时支持经典分层架构以及CQRS架构(基于CQRS架构的案例程序请参考:Tiny Library CQRS:http://tlibcqrs.codeplex.com)。为了更透明地向读者介绍面向领域驱动的经典分层架构,我也在社区中开发过一个案例程序:Byteart Retail(https://git 阅读全文
摘要:
NuGet是一个为大家所熟知的Visual Studio扩展,通过这个扩展,开发人员可以非常方便地在Visual Studio中安装或更新项目中所需要的第三方组件,同时也可以通过NuGet来安装一些Visual Studio的插件等。作为一名开发人员,您可能也会开发一些公共组件以供他人使用,本文将一步步介绍如何以最简单的方式将自己所开发的类库包发布到nuget上,以供更多的人使用。 背景 如果... 阅读全文
摘要:
今天花了半天时间,向Byteart Retail案例加入了基于MongoDB的仓储实现,读者朋友可以直接从Byteart Retail的代码库克隆最新代码来使用基于MongoDB的仓储实现。 实现步骤 1、重构ByteartRetail.Domain.Repositories目录结构 本来这一步是不需要做的,但是因为之前没有把结构规划好,所以所有基于Entity Framework的仓储实现... 阅读全文