摘要:
A2D中一项功能是关于Cache的,能够将判断、获取、删除cache的代码缩减到最少量,如下是Order业务逻辑的demo示范:interface IOrder{ [Cachable("Order.GetMessage", "Default", ExpireType = CacheExpireType.Absolutely, Increment = 5)] string GetMessage(); [CacheEvict("Order.GetMessage", "Default")] void UpdateMess 阅读全文
摘要:
有想过hash["A1"] = DateTime.Now;这句是怎么实现的吗?我们来重温下学校时代就学过的哈希算法吧。我们要写个class,实现如下主程序调用:static void Main(string[] args) { MyHash hash = new MyHash(); hash["A1"] = DateTime.Now; hash["A2"] = 1; Console.WriteLine(Convert.ToString(hash["A1"])); Cons... 阅读全文
摘要:
注明:此处所说的日志是指程序错误的日志。一般B/S程序记录日志的方式最多的方式是获取到exception后直接append到一个文本文件,当然也有记录到windows event log的。我们来讨论下当高并发量下的解决办法:有很多解决方式,如下:直接记录为txt/xml文件Windows Event Log当前进程的本地队列MSMQ独立进程中的WCF服务(进程间管道)独立进程中的WCF服务(异步调用方式)数据库Sql server的Service BrokerMongoDB(或者类似的NoSQL数据库)其实大多数情况下使用文本文件或者eventlog就可以了,不过这不在本次讨论范围,去掉。数 阅读全文
摘要:
我们的目标是从一个int的Array中,找出最小值。作为demo程序,我们先增加一个类,用来模拟Array,如下定义:class CArray { const int DefaultCapacity = 100; private int[] array; private int curPosition = -1; public CArray() { this.array=new int[DefaultCapacity]; curPosition = -1; }... 阅读全文
摘要:
算法:相信大家对算法肯定不陌生(但其实绝大多数开发人员对这个非常陌生且抗拒),因为从学校没毕业开始就已经被算法折磨了,哈哈设计模式:爱学习的开发人员对这个也不会陌生,是些到了一定工作阶段必须学的思想以及解决问题的通用方法企业应用架构模式:Martin Fowler所著,其实从难度上讲,比不上设计模式,只是内容较多,更加实际且更加符合人类的理解架构模式:最著名的资料是POSA那几本书,讲的是云里雾里,看这本书时,设计模式那点难度根本就不叫难度,哈哈,看起来极其痛苦,但是又非常快乐(哈哈,这就要看看书的人了)在这些概念当中,个人认为架构模式以及算法是比较难的,如果只能选择一个,我就选算法为最难,所 阅读全文
摘要:
如何扩大Windows操作系统盘的方法实现方法:使用Acronis True Image Server v9.1来完全克隆C盘操作步骤:在目标机器上安装Acronis True Image Server v9.1的Enterprise版本将新磁盘做删除分区操作,把它变成完全没有任何分区的未初始化的磁盘(非常重要,必须这样)选择好源和目标盘后,软件提示需要reboot,然后reboot它会离线clone所有c盘的东西到新的裸盘中,如下(这个过程比较长):等clone好后,软件提示按任意键会shut down计算机,--〉关机(必须关机,因为关机后还有硬件操作)将老的磁盘拿到(或者随便怎么弄,只要 阅读全文
摘要:
最近在用CQRS架构模式做项目,有些感悟,记录下来。问题的描述(大家是否也存在过类似的情况呢?):从刚开始时项目中没有区分这3种对象,所以导致了很多职责公用,然后就乱了,比如Command一部分职责需要用到ASP.NET MVC中,所以定义在了底层dll中,并且贴了一堆一堆的DataAnnotation的tag到属性上,其中包括了很多remote验证、前端js validation组件的验证tag,很宏伟。后端CommandHandler那边传入DomainService的dll中,由于对数据转换还存在误解,所以也用得一塌糊涂。我目前的理解:ASP.NET MVC的Model层不能少,这个是细 阅读全文
摘要:
有时在Command和DTO之间层次比较多,写了个验证Command的函数,能实现递归验证.比如下面这些有层级关系的class定义,能通过一句代码来进行验证:class A { [Required] public B B { get; set; } } class B { [Range(10, 20)] public int C { get; set; } [Range(typeof(Guid), "00000000-0000-0000-0000-000000000001", "00000000-00... 阅读全文
摘要:
主要的步骤是按照下面的例子来做的:NuGet学习笔记(1)——初识NuGet及快速安装使用NuGet学习笔记(2)——使用图形化界面打包自己的类库NuGet学习笔记(3)——搭建属于自己的NuGet服务器最搞的地方在:Win7 64bit下,总是报.net 4.0 无法写入temorary folder,最后把c:\windows\temp目录加上IIS_IUSR权限才搞定报web.config无法解析错误,用aspnet_regiis -ir搞定NuGet Package Explorer发布后,需要将server的缓存去掉,在vs中才能获取最新的,publish完后,直接打开web.con 阅读全文
摘要:
先描述一下本篇描述的适用场景(3台server, 各个模块分布在各个Server上,分布式模块互相依赖、交互的场景):多个OSIG引擎交互上,使用的是.net remoting实现的,原理:当请求某个接口时(也就是要获取某Service Instance时),OSGI通过remoting连接到提供这个服务的url上,如:tcp://localhost:8888/OSGI连接成功后,源OSGI发送OpenService命令,让目标OSGI注册TCP Channel根据接口type、dll路径、appdomain name,在某个AppDomain中执行解析接口,然后连接到目标OSGI新开的服务上 阅读全文
摘要:
目前只做了基础的功能,比如:各个模块单独的AppDomain容器Activator激活导出的服务检查不过,虽说这样,但目前的这个版本已经能实现模块分离、互相依赖调用等功能了,对模块划分已经有很好的作用了。先来说下基本结构:目前这个框架对UI的模块化尚不支持,只支持单机下的模块加载(以后会改进)。特点:Runtime、Module1、Module2、Module3都是在各自的AppDomain下运行的,不会互相干扰由于采用了隔离AppDomain的方式加载Module,所以能实现轻松卸载AppDomain、某dll、dll版本切换之类的任务,对后续扩展提供了方便来看看模块的编写OrderModu 阅读全文
摘要:
基本验证与业务验证,基本验证就是始终保持不变的验证规则,可以通过如下硬编码实现:public class Order { [Required] [Range(typeof(decimal), "1", "10000")] public decimal Price { get; set; } [Required] [StringLength(30)] public string Customer { get; set; } [Required(AllowEmptyStrings=true)] ... 阅读全文
摘要:
写了个简单的规则引擎,普通情况够用了:比如2家公司有各自的利率计算规则,如下:在C#方面,没有写在C#的业务逻辑代码中,而是移到了外部规则文件中,如(ACompanyRatePolicy.r):rule "Level 1" when alreadyCostPrice >= 0 alreadyCostPrice = 100 alreadyCostPrice = 300 then rate = 0.5end不同的公司调用不同的Policy定义文件来执行逻辑:核心调用代码:public class CustomerRateServi... 阅读全文
摘要:
先上一张本文所描述的适用场景图分布式场景,共3台server:前端ServerOrder App ServerWarehouse App Server功能:前端Server可以不停的发送Command到CommandBus,然后由CommandBus分配不同的Command到各自的app server去处理。前端Server可以只发送Command而不必等待Response前端Server可以同步等待Response返回MSMQ消息超过3.5M会自动转为网络共享方式传输消息对于同一Command的处理,可以通过增加App Server的方式来提高并发处理速度(比如:可以开2个app serve 阅读全文
摘要:
Taobao有她自己的分布式session框架,.net阵营也不能落后了,在下做了个基于MongoDB的支持最多26台MongoDB的分布式Session框架。先看看配置文件: SessionDB mongodb://localhost mongodb://localhost mongodb://localhost mongodb://localhost mongodb://localhost mongodb://localhost mongodb://localhost mongodb://localhost mongodb://localhost mongodb://... 阅读全文
摘要:
大家平时会花多少时间来阅读呢?通过网络?电子书?纸质书?我们先来说说它们各自的优点和缺点网络: 优点:查一些既得资料很方便 有很多免费资源 年轻人会优先选择这种方式 缺点:查完就放电子书: 优点:有很多免费和付费资源 份额正在日益状态 年轻人会优先选择这种方式 携带方便 缺点:资源不多,但也不算少 查资料不方便纸质书: 优点:都是付费资源(要买书嘛,呵呵) 内容较有深度 查资料比较方便 会深入记载以及组织良好 对视力不好的人士友好(年龄越大,视力越不好,也就是说按照趋势,越资深,视力越差) 对拥有感觉好 能用作收藏 缺点:携带不是很方便(但是带2本书很方便,但谁会在路上... 阅读全文
摘要:
这篇文章和广大程序员非常有关,大局决定每个程序员的生活开心与否。文章内容是我自己的原创心得,非抄袭。GO问问大家,你认为你是在写代码还是软件研发?问问大家,你在软件公司上班快乐吗?问问大家,你是打算走管理呢还是走技术道路?问问大家,你认为自己所在的公司有技术实力吗?问问大家,你认为你在工作中,创造性的百分比多吗?问问大家,你认为公司的行为中,有多少是长期行为,有多少是短期行为呢?问问大家,你认为公司的市场部门与研发部门合作顺畅吗?存在合作行为吗?问问大家,一个项目/产品代码中,有多少是复用了以前模块/系统的?有多少是需要在本次开发中全新开发?问问大家,你认为公司开发的产品别的公司在多久之内能够 阅读全文
摘要:
Node.js擅长的领域为:不需要很多运算吞吐量要求高进消息轻并且要求快出消息轻并且要求快网上的例子都是socket.io的,我一直在想到底能用在什么地方?根据node.js的优点(擅长领域),想出了这个应用场景:jQuery UI的autocomplete应用场景,这个需要的数据都是很零碎却量多的。结构如下:用ASP.NET MVC4新建一个web站点,在这里编写jQuery UI autocomplete代码用WebMatrix编写Node.js代码(主要是基于express的路由)由于这2个都是独立的站点,因此涉及到跨域问题,使用JSONP解决(其实在js代码调用和node.js端都要修 阅读全文
摘要:
这次自己实现了类似jQuery中ajax调用的方法,并且针对RESTFul进行了改造和集成,实现的A2D AJAX接口如下:$.ajax.RESTFulGetCollection("/api/Users", function (data) { alert(data[5].FirstName); });$.ajax.RESTFulGetOne("/api/Users/1", function (data) { alert(data.UserID); });$.ajax.RESTFulDelete("/api/Users/1", func 阅读全文
摘要:
其实这个功能比较小,本着自己造轮子的优良传统。。。。就自己造一个好了 虽然小,但是这个功能非常实用。code download 阅读全文