代码改变世界

一起谈.NET技术,【More Effective C#】Lambda表达式优化

2011-09-01 23:46 by 狼人:-), 173 阅读, 0 推荐, 收藏,
摘要:使用Lambda表达式将会造成Lambda表达式主题部分的代码重复. Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1. var allEmployees = new List<Employee>() { 2. new Employee { 3. EmployeeId = 1, Classification = 1, FirstName = "Skin", LastName = "Sen" 阅读全文

一起谈.NET技术,创建代码生成器可以很简单:如何通过T4模板生成代码?[上篇]

2011-09-01 23:46 by 狼人:-), 393 阅读, 0 推荐, 收藏,
摘要:在《基于T4的代码生成方式》中,我对T4模板的组成结构、语法,以及T4引擎的工作原理进行了大体的介绍,并且编写了一个T4模板实现了如何将一个XML转变成C#代码。为了让由此需求的读者对T4有更深的了解,我们通过T4来做一些更加实际的事情——SQL Generator。在这里,我们可以通过SQL Generator为某个数据表自动生成进行插入、修改和删除的存储过程。[文中源代码从这里下载] 一、代码生成器的最终使用效果 我们首先来看看通过直接适用我们基于T4的SQL生成模板达到的效果。右图(点击看大图)是VS2010的Solution Explorer,在Script目录下面,我定义... 阅读全文

一起谈.NET技术,创建代码生成器可以很简单:如何通过T4模板生成代码?[下篇]

2011-09-01 23:46 by 狼人:-), 249 阅读, 0 推荐, 收藏,
摘要:在《上篇》中我们通过T4模板为我们指定的数据表成功生成了我们需要的用于添加、修改和删除操作的存储过程。但是这是一种基于单个文件的解决方案,即我们必须为每一个生成的存储过程建立一个模板。如果我们提供一种基于多文件的代码生成方式,将会为编程人员带来极大的便利。借助于T4 ToolBox这个开源工具箱,多文件的SQL Generator的实现变得异常简单。 一、多文件代码生成器会带来多大的便利? 我们先来直观的感受一下较之《上篇》提供的单一文件的代码生成器,基于多文件的代码生成解决方案会为开发人员带来多大的便利。 同样对于《上篇》创建的数据表T_PRODUCT,之前我们为了生成三个不同的... 阅读全文

一起谈.NET技术,关于ASP.NET与CLR相互关系的一些总结

2011-09-01 23:46 by 狼人:-), 198 阅读, 0 推荐, 收藏,
摘要:CLR(COM服务器) CLR作为一个COM服务器实现在MSCorWks.dll文件中。安装.NET Framework时,表示CLR的COM服务器被注册到Windows的注册表里。 MSCorEE.dll(垫片) MSCorEE.dll的职责是判断创建何种版本的CLR。非托管应用程序宿主调用MSCorEE.dll(shim)中CorBindToRuntimeEx函数或者另一个相似的函数来创建CLR COM的实例。 一台机器可以安装多个版本的CLR,但在机器中只有一个版本的MSCorEE.dll文件。以上两者之间的关系如下代码所示(c++):MSCorEE.dll(垫片)... 阅读全文

一起谈.NET技术,Web Services使用多态(XmlInclude)

2011-09-01 23:46 by 狼人:-), 210 阅读, 0 推荐, 收藏,
摘要:在Web Services方法中,往往使用的都是一个具体类型的参数,这个参数一般就是一个数据对象。ASP.NET Web Services通过声明XmlIncludeAttribute可以实现Web Services方法中运用多态。 XmlIncludeAttribute允许XmlSerializer在序列化火反序列化对象时识别类型。当应用XmlIncludeAttribute时,需指定派生类的Type。XmlSerializer序列化同时包含基类和派生类的对象之后,它就可以识别两种对象类型。 首先定义基类Vehicle和派生类Car: Code highlighting pro... 阅读全文

一起谈.NET技术,Smart Client技术简要总结

2011-09-01 23:46 by 狼人:-), 439 阅读, 0 推荐, 收藏,
摘要:1.Smart Client简介 Smart Client简称智能客户端,是Microsoft推出的一种将B/S(瘦客户端)和C/S(胖客户端)结合在一起的一种技术。Smart Client结合了B/S和C/S的优势,具有新的特点。 Smart Client的优点 易于升级 类似于B/S架构的程序,只要在服务器上更新软件,进行简单配置,客户端会自动进行软件的更新。比如在服务器的站点上建立一个虚拟目录,将客户端应用程序发布到该虚拟目录中,客户通过HTTP方式安装更新程序。 富客户端,强大的用户界面,更好的用户体验 Smart Client可以使用WinForm开发Cl... 阅读全文

一起谈.NET技术,ASP.NET页面间数据传递的方法

2011-09-01 23:46 by 狼人:-), 197 阅读, 0 推荐, 收藏,
摘要:00、引言 Web页面是无状态的, 服务器对每一次请求都认为来自不同用户,因此,变量的状态在连续对同一页面的多次请求之间或在页面跳转时不会被保留。在用ASP.NET 设计开发一个Web系统时, 遇到一个重要的问题是如何保证数据在页面间进行正确、安全和高效地传送,Asp.net 提供了状态管理等多种技术来解决保存和传递数据问题,以下来探讨.NET 下的解决此问题的各种方法和各自的适用场合。 1、ASP.NET页面间数据传递的各种方法和分析 1.1 使用Querystring 方法 QueryString 也叫查询字符串, 这种方法将要传递的数据附加在网页地址(URL)后面进... 阅读全文

一起谈.NET技术,C#序列化与反序列化(Serializable and Deserialize)

2011-09-01 23:46 by 狼人:-), 217 阅读, 0 推荐, 收藏,
摘要:序列化是指将对象实例的状态存储到存储媒体的过程。在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序集)转换为字节流,然后再把字节流写入数据流。在随后对对象进行反序列化时,将创建出与原对象完全相同的副本。 我们经常需要将对象的字段值保存到磁盘中,并在以后检索此数据。尽管不使用序列化也能完成这项工作,但这种方法通常很繁琐而且容易出错,并且在需要跟踪对象的层次结构时,会变得越来越复杂。可以想象一下编写包含大量对象的大型业务应用程序的情形,程序员不得不为每一个对象编写代码,以便将字段和属性保存至磁盘以及从磁盘还原这些字段和属性。序列化提供了轻松实现这个目标的快捷方法。 .... 阅读全文

一起谈.NET技术,ASP.NET前台代码绑定后台变量方法总结

2011-09-01 23:46 by 狼人:-), 220 阅读, 0 推荐, 收藏,
摘要:经常会碰到在前台代码中要使用(或绑定)后台代码中变量值的问题。一般有<%= str%>和<%# str %>两种方式,这里简单总结一下。如有错误或异议之处,敬请各位指教。 一方面,这里所讲的前台即通常的.aspx文件,后台指的是与aspx相关联的CodeBehind,文件后缀名为.aspx.cs;另一方面,这里的绑定是指用户发出访问某一页面指令后,服务器端在执行过程中就已经将前台代码进行了赋值,而后生成html格式回传客户端显示,而并非已经显示到客户端后,然后通过其他方法(如ajax)去服务器端获取相应变量。 备注:上面说的两个文件是常见的代码隐藏(code-behin 阅读全文

一起谈.NET技术,NET 下RabbitMQ实践 [实战篇]

2011-09-01 23:46 by 狼人:-), 302 阅读, 0 推荐, 收藏,
摘要:之前的文章中,介绍了如何将RabbitMQ以WCF方式进行发布。今天就介绍一下我们产品中如何使用RabbitMQ的! 在Discuz!NT企业版中,提供了对HTTP错误日志的记录功能,这一点对企业版非常重要,另外存储错误日志使用了MongoDB,理由很简单,MongoDB的添加操作飞快,即使数量过亿之后插入速度依旧不减。 在开始正文之前,先说明一下本文的代码分析顺序,即:程序入口==》RabbitMQ客户端===>RabbitMQ服务端。好了,闲话少说,开始正文! 首先是程序入口,也就是WCF+RabbitMQ客户端实现:因为Discuz!NT使用了HttpModule方式来接管... 阅读全文

一起谈.NET技术,NET下RabbitMQ实践 [配置篇]

2011-09-01 23:46 by 狼人:-), 262 阅读, 0 推荐, 收藏,
摘要:这个系列目前计划写四篇,分别是配置,示例,WCF发布,实战。当然不排除加餐情况。 介绍: rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。他遵循Mozilla Public License开源协议。采用 Erlang 实现的工业级的消息队列(MQ)服务器。 RabbitMQ的官方站:http://www.rabbitmq.com/ AMQP(高级消息队列协议) 是一个异步消息传递所使用的应用层协议规范,作为线路层协议,而不是API(例如JMS),AMQP 客户端能够无视消息的来源任意发送和接受信息。AMQP的原始用途只是为金融界提供一个可以彼此协作的消息... 阅读全文

一起谈.NET技术,为Expression Web 4 添加HTML5 标签支持

2011-09-01 23:46 by 狼人:-), 281 阅读, 0 推荐, 收藏,
摘要:大家都知道Expression Web 4 是用来编写网页脚本的一款软件,包含的语言类型涉及:HTML、ASP、PHP、CSS,但它并不支持HTML5。如下图所示,在HTML5 中的<canvas> 标签并不能获得智能感应,这样在开发过程中会变得很麻烦。本篇将介绍如何为其添加HTML5 标签支持。首先需要下载HTML5 模板插件,将得到一个名叫“HTML5Schema.xadd” 的文件。 安装HTML 5 Schema 在“Tools”菜单中选择“Add-Ins...”增加插件选项。 在“Manage Add-ins” 窗口点击“Install...” 按键,并选择刚才下... 阅读全文

一起谈.NET技术,NET下RabbitMQ实践 [示例篇]

2011-09-01 23:46 by 狼人:-), 310 阅读, 0 推荐, 收藏,
摘要:在上一篇文章中,介绍了在window环境下安装erlang,rabbitmq-server,以免配置用户,权限,虚拟机等内容。今天将会介绍如果使用rabbitmq进行简单的消息入队,出队操作,因为本文演示的环境要用到上文中配置的环境,所以要运行本文sample,请先按上一篇中完成相应环境配置。 首先,我们下载官方的.net客户端软件,链接:http://www.rabbitmq.com/dotnet.html。下载并安装之后,将安装目录下的这两个DLL文件复制到我们示例项目中,并添加引用: Code highlighting produced by Actipro CodeHighl... 阅读全文

一起谈.NET技术,关于CLR内存管理一些深层次的讨论 [上篇]

2011-09-01 23:46 by 狼人:-), 186 阅读, 0 推荐, 收藏,
摘要:半年之前,PM让我在部门内部进行一次关于“内存泄露”的专题分享,我为此准备了一份PPT。今天无意中将其翻出来,觉得里面提到的关于CLR下关于内存管理部分的内存还有点意思。为此,今天按照PPT的内容写了一篇文章。本篇文章不会在讨论那些我们熟悉的话题,比如“值类型引用类型具有怎样的区别?”、“垃圾回收分为几个步骤?”、“Finalizer和Dispose有何不同”、等等,而是讨论一些不同的内容。整篇文章分上下两篇,上篇主要谈论的是“程序集(Assembly)和应用程序域(AppDomain)”。也许有的地方说的不是很正确,希望读者不吝赐教。 一、程序集与应用程序域 何谓程序集(Asse... 阅读全文

一起谈.NET技术,关于CLR内存管理一些深层次的讨论 [下篇]

2011-09-01 23:46 by 狼人:-), 199 阅读, 0 推荐, 收藏,
摘要:《上篇》中我们主要讨论的是程序集(Assembly)和应用程序域(AppDomain)的话题,着重介绍了两个不同的程序集加载方式——独占方式和共享方式(中立域方式);以及基于进程范围内的字符串驻留。这篇将关注点放在托管对象创建时内存的分配和对大对象(LO:Large Object)的回收上,不对之处,还望各位能够及时指出。 一、从类型(Type)与实例(Instance)谈起 在面向对象的世界中,类型和实例是两个核心的要素。不论是类型和实例,相关的信息比如加载到内存中,对应着某一块或者多块连续或者不连续的内存。那么对类型和实例的内存分配时如何进行的呢?对象是“状态”和“行为”的组合... 阅读全文
上一页 1 ··· 238 239 240 241 242 243 244 245 246 ··· 312 下一页