09 2010 档案
摘要:个人觉得EnterLib的EHAB是一个不错的异常处理框架,借助于EHAB,我们可以配置的方式来自定义异常处理策略,从而带来最大的灵活性和可维护性。但是,在我看来,EHAB有一个最大的局限,就是异常处理策略的粒度过大——只能提供基于异常类型级别。本篇文章通过一个自定义异常处理器很好地解决了这个问题。
阅读全文
摘要:在上篇文章中我们谈到:当我们通过应用DependencyAttribute特性定义需要自动注入的属性的时候,当这个属性为接口、抽象类或者没有定义无参的构造函数,无论我们调用PIAB的Create方法去创建一个新的对象,还是调用Wrap方法对现有对象进行封装,都会抛出异常。如果说在前文中,我们还对这是否是个BUG抱着“谨慎”的态度,那么在这篇文章中,可以肯定地告诉你:这是一个BUG,而且是一个“致命”的BUG。
阅读全文
摘要:在《这是EnterLib PIAB的BUG吗?》一文中我们讨论了PIAB关于抽象基类的BUG,今天又发现了一个新的问题。问题的起因源于《IoC+AOP的简单实现》这篇文章,因为文中给出的解决方案仅仅支持构造器注入,而不能支持属性注入和方法注入——这是由于EnterLib的PIAB设计本身就存在缺陷。
阅读全文
摘要:在《上篇》中,我们实现了将保存有消息条目的XML向CodeDOM的转换.在下篇中,我们将实现整个代码生成系统的第二个步骤——通过VS扩展实现数据(保存消息条目的XML)向代码文件的自动转换。即通过VS自动生成的代码结构是对数据结构的反映,继而使我们能够强类型的方式操作数据,不但极大地提高开发效率,也降低了出错的可能。
阅读全文
摘要:这确实是一个让人觉得“无语”的BUG,甚至让我觉得微软在故意和我们开玩笑。这个问题在我刚刚接触WCF的时候就遇到过,换言之,这个问题一直存在于.NET 3.0、3.5和现在的4.0。这是一个关于在你对WCF进行扩展的时候会经常碰到的问题,读者朋友们可以根据下面的步骤来再现这一个问题。
阅读全文
摘要:我不知道大家对CodeDom的代码生成机制是否熟悉,但是有一点可以确定:如果你使用过VS,你就应该体验过它带给我们在编程上的便利。随便列举三种典型的代码生成的场景:强类型DataSet、Resource和添加Web Reference。总的来说,通过和VS集成的动态代码生成工具使我们可以“强类型”的方式进行编程,进而提供我们的效率并减低错误的几率。除了VS提供的这些典型的代码生成场景中,我们可以根据需要开发一些自定义代码生成器,并且通过VS的扩展实现后台代码的实时生成,从而实现强类型编程的目的。
阅读全文
摘要:在默认的情况下,EnterLib的PIAB采用基于透明/真实代理的机制实现对方法调用的拦截,进而实现了对横切关注点的动态注入。也正是其来截机制本身的局限,当我们才用PIAB的方式进行对象的创建的时候,要求对象的类型要么实现某一个接口,要么直接继承MarshalByRefObject类型。但不支持通过抽象基类对该类的间接继承,我个人觉得这是微软需要改进的地方。
阅读全文
摘要:这是一个大得能把牛吓死的话题。上周公司为我们进行企业核心价值(Core Value)的培训,让我们每人写出3条个人价值观。对于这个问题,我之前还真没有人证思考过——到底我的人生信条是什么呢?想了半天,写出了以下三条:
阅读全文
摘要:洪雅于隋开皇十三年(公元593年)建县,距今已有1400多年历史,地处四川盆地西南边缘,属中亚热带湿润气候,年降雨量1435.5毫米,年日照1006.1小时,年无霜期312天,年平均气温16.6℃。地形由西南向东北呈高低梯次变化,素有“七山二水一分田”之称。最高海拔3522米(瓦屋山旅游区内),最低海拔420米(洪雅县城)。洪雅有个中国最大的国家级森林公园——瓦屋山森林公园;有个四川十大古镇之一的柳江古镇;有毗邻峨眉山的独家胜地——七里坪国际避暑度假区;有四川第二大湖泊——汉王湖;有种独特的江峡风光——槽渔滩风景名胜区;有个世界最大的山顶平台——瓦屋山顶大平台...
阅读全文
摘要:但是今天发现一个叫做“学IT网”的站点(http://www.xueit.com/),里面转载了博客园几乎所有的技术文章,但是除了表明文章来源于博客园之外,所有文章的作者均被写成“编辑整理”。我不知道该网站是否得到了博客园的授权,即便是得到了授权,有何理由改变博文的署名呢?
阅读全文
摘要:由于我们的项目底层使用到一个通过LogicalCallContext实现的上下文数据管理框架,导致所有的Unit Test不能正常运行。具体的现象在《只在UnitTest和WebHost中的出现的关于LogicalCallContext的严重问题》有过详细的介绍。解决的方案就是对相关的程序集进行强签名,并加到GAC中。程序集签名很好实现——仅仅需要借助VS给项目指定一个签名用的Key File就可以了,但是,VS做得不够好。
阅读全文
摘要:2010年3月5 日,微软全球CEO 史蒂夫.鲍尔默先生在美国华盛顿大学发表演讲时指出,微软将举全公司之力投入云计算。“我们将把赌注押在云计算领域。”——他表示,此次演讲旨在让人们从更广阔的角度来看待云计算,并由多个维度来了解云计算所带来的变革。和业内许多公司一样,微软认为云技术的革新攸关未来,从5个维度分享了微软对云计算的理解以及微软在相关领域的创新情况。
阅读全文
摘要:关于如何解决分布式系统中的跨时区问题,上一篇详细介绍了解决方案的实现原理。尽管《原理篇》中介绍了那么多,解决方案的本质就是:在进行服务调用过程中将客户端的时区信息作为上下文传入服务端,并以此作为时间转换的依据。在这一篇中我们根据这个原理通过一个简单的例子来证明其可行性。。
阅读全文
摘要:《谈谈你最熟悉的System.DateTime[上篇][下篇]》从跨时区的角度对DateTime这个我们熟知的类型进行了深入探讨,它们都是为这篇文章作的准备工作。在接下来的两篇文章中,我们将完整的介绍如果在一个分布式系统中处理时区的问题。
阅读全文
摘要:在《谈谈你最熟悉的DateTime》一文中,我们从跨时区的角度剖析了我们熟悉的时间类型。如果你采用传统的ADO.NET编程,并用DataSet作为数据实体,可能你会熟悉DataSetDateTime这个类型。这个类型也是为实现跨时区场景设计的,为了对前文的补充,这篇文章就来谈谈基于DataSet的时间处理问题。
阅读全文
摘要:最近一直在负责公司内部框架的升级工作,今天对一个小问题进行了重新思考——时间的处理。具体来说,是分布式应用中如何有效地进行时间的处理以提供对跨时区的支持。不过,对该问题解决方案的介绍我会放在后续的文章中,在这里我们先来介绍一些基础性的内容——谈谈我们熟悉的DateTime类型
阅读全文
摘要:对EnterLib有所了解的人应该知道,其中有一个名叫PIAB的AOP框架;而整个EnterLib完全建立在另一个叫作Unity的底层框架之上,我们可以将Unity看成是一个IoC的框架。对于一个企业应用来说说,AOP和IoC是我们进行逻辑分离和降低耦合度最主要的方式,而将两者结合起来具有重要的现实意义。
阅读全文