随笔分类 -  [02] 编程技巧

上一页 1 ··· 7 8 9 10 11 12 13 14 下一页
摘要:对于需要进行大规模数据传输的WCF应用来说,对于请求消息和回复消息进行传输前的压缩,不但可以降低网络流量,也可以提高网络传输的性能。由于WCF的扩展性,我们可以采用不同的方式实现对消息的压缩,本文提供一种比较简单的实现方式。 阅读全文
posted @ 2011-08-07 08:50 Artech 阅读(14700) 评论(85) 推荐(40) 编辑
摘要:多年之前,我写了一篇通过WCF扩展实现上下文信息从客户端自动传递到服务端的文章,其实现机制很简单:将上下文信息存放到SOAP Header进行传递。那么对于非SOAP消息的RESTful服务就不使用了。为了解决这个问题,我们可以将存放上下文信息的地方从SOAP Header替换成HTTP Header。这篇为你消息讲述具体的实现[源代码从这里下载]。 阅读全文
posted @ 2011-06-28 20:14 Artech 阅读(7626) 评论(15) 推荐(17) 编辑
摘要:大家都知道,我们具有三种定义可序列化类型的方式:在类型上应用SerializableAttribute特性;应用DataContractAttribute/DataMemberAttribute特性和实现ISerializable接口。当你通过继承一个现有的类来定义你需要被序列化的类,如果这个父类实现了ISerializable接口,如果定义不当,就会出现反序列化的问题。而且这个我们可能经常都不注意。 阅读全文
posted @ 2011-04-14 21:56 Artech 阅读(8580) 评论(29) 推荐(16) 编辑
摘要:条件编译,顾名思义,就是根据在编译时指定的条件决定最后需要编译的代码。条件编译是我们可以针对某些特性的环境编写相应的代码,比如有写的代码只需要在Debug模式下才需要执行,有些代码仅仅是为了在SIT或者UAT环境下有效地进行Troubleshooting,而在Production环境下则不应该执行。通过条件编译机制,我们可以针对某中特定的“条件编译符(Conditional Compilation Symbol)”编写相应的代码。在进行最终编译的时候,通过指定的条件编译符,编译器判断这些特殊的代码是否应该被编译。 阅读全文
posted @ 2011-04-06 16:21 Artech 阅读(8860) 评论(13) 推荐(11) 编辑
摘要:《上篇》主要介绍如何通过DataBinder实现批量的数据绑定,以及如何解决常见的数据绑定问题,比如数据的格式化。接下来,我们主要来谈谈DataBinder的设计,看看它是如何做到将作为数据源实体的属性值绑定到界面对应的控件上的。 阅读全文
posted @ 2011-03-27 21:19 Artech 阅读(8628) 评论(29) 推荐(19) 编辑
摘要:昨天写了《三种属性操作性能比较》,有个网友写信问我一个问题:从性能上看,Expression Tree和IL Emit孰优孰劣?虽然我在回信中作了简单的回答,但不知道这个网友是否懂我的意思。反正今天呆在家里也没事儿,干脆再就这个话题再写一篇文章。 阅读全文
posted @ 2011-03-27 15:30 Artech 阅读(8237) 评论(18) 推荐(29) 编辑
摘要:在《上篇》中,我比较了三种属性操作的性能:直接操作,单纯通过PropertyInfo反射和IL Emit。本篇继续讨论这个话题,我们再引入另外两种额外的属性操作方式:Expression Tree和通过Delegate的静态方法CreateDelegate创建相应的委托进行属性的赋值和取值 阅读全文
posted @ 2011-03-26 02:09 Artech 阅读(14043) 评论(32) 推荐(14) 编辑
摘要:在《一句代码实现批量数据绑定》中,我通过界面控件ID与作为数据源的实体属性名之间的映射实现了批量数据绑定。由于里面频繁涉及对属性的反射——通过反射从实体对象中获取某个属性值;通过反射为控件的某个属性赋值,所以这不是一种高效的操作方式。为了提升性能,我通过IL Emit的方式创建了一个PropertyAccessor组件,以实现高效的属性操作。如果你看了我在文中给出的三种属性操作性能的测试结果,相信会对PropertyAccessor的作用有深刻的印象。 阅读全文
posted @ 2011-03-24 21:23 Artech 阅读(7805) 评论(41) 推荐(16) 编辑
摘要:对于一个以数据处理为主的应用中的UI层,我们往往需要编写相当多的代码去实现数据绑定。如果界面上的控件和作为数据源的实体类型之间存储某种约定的映射关系,我们就可以实现批量的数据绑定。为了验证这种想法,我写了一个小小的组件 阅读全文
posted @ 2011-03-23 22:53 Artech 阅读(10035) 评论(67) 推荐(45) 编辑
摘要:本篇文章讨论可空值类型(Nullable)的转换,却确地说是如何将一种类型的值对象转换成相应的可空值。这来源于今天我们的一个成员遇到的一个小问题,我经过一些整理写了这篇文章。虽然没有什么技术含量可言,也希望对某些读者带来帮助。 阅读全文
posted @ 2011-03-17 20:20 Artech 阅读(26348) 评论(34) 推荐(34) 编辑
摘要:对于数据库设计来说,多对多(或者一对多)是一种常见的数据关系,比如联系人和地址之间的关系。我们通常采用建立关系表的方式来表示这种关系,比如我们创建一张表来存储联系人和地址之间的关系。如果我们最终需要通过存储过程的方式来维护他们之间的关系,该如何做呢?本篇文章给你一个具体的例子来演示如果采用存储过程来建立和删除实体之间的关系。 阅读全文
posted @ 2011-03-16 16:41 Artech 阅读(6931) 评论(17) 推荐(7) 编辑
摘要:继续讨论EF中使用存储过程的问题,这回着重讨论的是为存储过程的参数进行赋值的问题。说得更加具体一点,是如何为实体映射的Delete存储过程参数进行赋值的问题。关于文中涉及的这个问题,我个人觉得是EF一个有待改进的地方,不知道各位看官是否同意? 阅读全文
posted @ 2011-03-13 16:02 Artech 阅读(5222) 评论(6) 推荐(9) 编辑
摘要:本篇文章通过实例的方式,讨论两个在EF使用存储过程的主题:如何通过实体和存储过程的映射实现逻辑删除;对于具有自增长类型主键的数据表,在进行添加操作的时候如何将正确的值反映在实体对象上。 阅读全文
posted @ 2011-03-13 00:13 Artech 阅读(6225) 评论(4) 推荐(8) 编辑
摘要:今天写程序频繁用到两中字符串操作:删除某个字符串指定的前缀和后缀。由于没有现成的方法可用,写了两个扩展方法:TrimPrefix和TrimSuffix。 阅读全文
posted @ 2011-03-07 20:52 Artech 阅读(6997) 评论(12) 推荐(6) 编辑
摘要:在《实现存储过程的自动映射》中,我通过基于T4的代码生成实现了CUD存储过程的自动映射。由于映射的都是基于数据表结构的标准的存储过程,所以它们适合概念模型和存储模型结构相同的场景。如果两种模型存在差异,在进行数据更新操作的时候就会出错。本篇文章主要介绍当概念模型中具有继承关系的两个实体映射到数据库关联的两个表,如何使用存储过程。 阅读全文
posted @ 2011-03-06 22:32 Artech 阅读(6426) 评论(8) 推荐(7) 编辑
摘要:最近一段时间的工作任务是如何将EF引入到我们的开发框架,进行相应的封装、扩展,使之成为一个符合在特定场景下进行企业级快速开发的ORM。在此过程中遇到了一些挑战,也有一些心得。为了向大家分享这些心得,接下来我会写一系列相关的文章。第一个主题是关于在EF中使用存储过程的问题 阅读全文
posted @ 2011-03-05 10:04 Artech 阅读(23149) 评论(29) 推荐(24) 编辑
摘要:昨天在进行Code Review的时候,发现一个关于通过ConfigurationManager的GetSection方法进行配置节读取的问题。虽然这是一个很小的问题,还是它已经存在在项目里面很久了,直到今天才被发现,所以觉得具有一定分享的价值。 阅读全文
posted @ 2011-01-15 15:27 Artech 阅读(9163) 评论(33) 推荐(20) 编辑
摘要:BackgroundWorker允许您在单独的专用线程上运行操作。操作是异步执行的,用户可能在操作执行过程中关闭窗体,而窗体的关闭会伴随着Dispose方法的执行。如果我们注册了RunWorkerCompleted事件,并且在该事件处理程序中需要操作这个被Dispose的窗体,就会出现一些无法预知的异常。 阅读全文
posted @ 2010-11-25 13:34 Artech 阅读(7800) 评论(36) 推荐(13) 编辑
摘要:前一阵子写了不少关于代码生成相关的文章,介绍了一些如何通过VS自动生成代码的解决方案,比如CodeDOM、T4以及ASP.NET的BuildProvider等。现在将它们作一个汇总,给广大读者作一个参考。 阅读全文
posted @ 2010-11-17 21:55 Artech 阅读(23840) 评论(115) 推荐(85) 编辑
摘要:在这之前,我写了一系列关于代码生成和T4相关的文章,而我现在也试图将T4引入我们自己的开发框架。在实践中遇到了一些问题,也解决了不少问题。如果你也在进行T4相关的开发,相信你也一定会遇到这些问题。为此,特意将这些问题和解决方案与朋友们分享,希望在遇到这些问题的时候少走弯路。本篇文章介绍的是两个重要的话题:程序集锁定和调试。 阅读全文
posted @ 2010-11-16 22:58 Artech 阅读(6622) 评论(18) 推荐(15) 编辑

上一页 1 ··· 7 8 9 10 11 12 13 14 下一页