摘要: 目录一 序列化基础二 WCF序列化三 数据契约与旧序列化模式四 新旧序列化的选择 当试图通过Web服务、WCF这样的远程处理技术将一个对象复制到远端时,具有对类型序列化的能力很关键。一 序列化基础 序列化描述了持久化或传输一个对象的状态到流的过程(.NET将对象序列化到流,流是字节的逻辑序列,与特定的介质无关)。被持久化的数据次序包括所有以后需要用来重建(反序列化)对象所需要的信息。通过序列化,我们用最小的花费来保存或传输海量的数据。使用[Serializable]序列化对象非常简单,但幕后的调用过程十分复杂。当一个对象被序列化时,其集成连上的所有数据都会被包括进来,一组相关的对象使用对象..阅读全文
posted @ 2012-05-13 22:14 MeteorSeed 阅读(937) 评论(1) 编辑
摘要: 目录一 WCF与SOA二 WCF模型三 WCF体系架构四 WCF程序的开发步骤五 编码规范一WCF与SOA SOA是一种通过为所有软件提供服务外观,并将这些服务的WSDL集中发布到一个地方的一种组织企业软件的方法。它通过使用明确定义的接口通过跨越边界传递消息来让多个自治的服务协同工作。SOA的真正价值是——允许开发者从代码中抽取出公共基础功能的实现,更多地关注业务逻辑和需要的功能特性。在开发SOA应用程序时,我们能够实现服务代码与客户端使用技术与平台的解耦,也与并发管理、事务传播和管理以及通信可靠性、协议和模式无关。 SOA的4个主要设计原则以及在WCF中的具现如下:边界是明确的SOA系统..阅读全文
posted @ 2012-04-24 22:32 MeteorSeed 阅读(1432) 评论(7) 编辑
摘要: 目录一 坑有多深?二 谁在造坑?三 如何免坑? “谁也无法改变现状,唯有无数程序员血洒大地,才能使项目重建天日。”这一点也不夸张,软件项目做烂了就是个坑,参与者也不过是填坑的。就像是在魔兽世界战场遇到国家队一样,你赢也赢不了,出也出不去。一 坑有多深? 当我们进入一个项目时,通过不断观察我们可以发现我们的项目到底是不是一个坑。造坑的项目,往往具有某些“臭味”,以下是我的一些认识,这些“臭味”即是项目健康状态不佳的明显标志:编码规范形同废纸,代码质量低下每个项目都有编码规范,但真正严格实施却是另一回事。太多的项目把编码规范作为形式的存在,没人在乎让开发人员写出“人能读懂的程序”,注释和命名也..阅读全文
posted @ 2012-04-08 10:40 MeteorSeed 阅读(7373) 评论(69) 编辑
摘要: 目录一 编码规范的作用二 编码规范不是“物神”三 编写编码规范的一些建议四 编码规范参考 作为软件开发者,我们可以开发低等级的软件,但不能开发低质量的软件。所以,如何实施质量保证,是我们关注的主要问题之一,而编码规范则是实施质量保证的第一步。 编码规范已经成为一个老生常谈的问题,几乎每个项目,每家公司都会定义自己的编码规范。但在真正实施时,却在有意或无意地违背编码规范。程序员,不喜欢改变自己的编程习惯。加之,管理者对质量控制不足,导致编码规范往往形同虚设。有些人会认为:遵守编码规范不能给项目带来利益,也不能让客户看到我们为此付出的努力,其完全是团队自发的行为,没有必要做硬性的要求。还有些人..阅读全文
posted @ 2012-03-21 00:04 MeteorSeed 阅读(2066) 评论(5) 编辑
摘要: 目录一 何时使用类,何时使用结构二 创建类的原因与应该避免的类三 类型的各种成员四 类型的各种修饰符五 类型设计 OOP 以类型为基础进行软件构建。类型是由一组数据和子程序构成的集合,这些数据和子程序共同拥有一组内聚的、明确定义的职责。类型可以只是由一组子程序构成的集合,这些子程序提供了一组内聚的服务,哪怕其中并未涉及共用的数据。成为高效程序员的关键是——当你开发的程序时,能否安全地忽视程序中尽可能多的其余部分。而类型就是实现这一目标的工具。 C#作为一种面向对象开发语言,它为我们提供了强大的抽象能力。其中 class、struct 为我们提供了对现实世界的抽象;interface 提供了..阅读全文
posted @ 2012-03-07 16:58 MeteorSeed 阅读(1247) 评论(4) 编辑
摘要: 目录一 面向对象开发基础二 基元类型与 new 操作三 值类型与引用类型四 类型转换五 相等性与同一性六 对象哈希码一 面向对象开发基础 在面向对象出现之前,程序是由一系列相互关联的模块和子程序组成,编程采用过程的方式,代码中有一条主线,决定需要完成哪些步骤。后来,面向对象出现了,它是对软件领域的杰出贡献,是软件设计中的里程碑。在软件发展速度远远落后硬件发展速度的时代,它的出现无疑是一种激励。它把程序想象成一系列的相互交互的对象,每个对象都要自己的数据和行为。它如此地令人兴奋与着迷。它的出现,极大地降低了软件构建的首要问题——复杂度。并使我们开发的程序,富有印象派画风的美感。但是,我个人认为.阅读全文
posted @ 2012-01-31 14:43 MeteorSeed 阅读(1477) 评论(3) 编辑
摘要: 目录一 加载.NET 程序集二 应用程序域三 解析类型引用四 类型五 类型、对象、线程栈、托管堆在运行时的相互联系 本文将解释 PE、Windows 加载器、应用程序域、程序集清单、元数据、类型、对象、线程栈、托管堆等,与运行时的相互关系。因此,我首先写了一个简单 Demo 用于调试,其代码如下:using System;namespace CLRTest{ public class Circle { public double Radius { get; set; } public Circle() { } public Circle(...阅读全文
posted @ 2012-01-24 00:30 MeteorSeed 阅读(1805) 评论(3) 编辑
摘要: 目录一 “单文件程序集”与“多文件程序集”二 “普通程序集”与“强名称程序集”三 “私有程序集”与“共享程序集” 在学习程序集时,总是发现程序集被冠以各种头衔。程序集按文件数量可分为:单文件程序集和多文件程序集;按是否签名,可分为:普通程序集和强命名程序集;按部署方式,可分为:私有程序集和共享程序集。下面开始分别介绍。一 “单文件程序集”与“多文件程序集” 程序集可以由多个模块组成。在大多数情况下,程序集只由一个模块构成。这种情况下,程序集就一个文件,因此被称为单文件程序集。多文件程序集是一组文件集合,包括主模块、辅助模块以及资源。大多数程序集是单文件程序集,多文件程序集主要用于“本地化”..阅读全文
posted @ 2012-01-17 19:59 MeteorSeed 阅读(1660) 评论(1) 编辑
摘要: 目录一 应用程序——编程系统的产品二 第一个.NET程序三 程序集初探一 应用程序——编程系统的产品 什么是应用程序?简单的说就是编程系统的产品。我非常喜欢《人月神话》中描述的编程产品的演进,通过下图我们来看看自己在开发什么。 程序 程序是代码最直接的产物,它本身是完整的,可以在我们的开发环境上运行,最常见的就是可执行文件。我们最容易得到的就是程序,程序对我们来说,只是开发的第一步,它仅仅代表我们的代码可以运行,但并不是我们的目标,我们还要进一步升级我们的成果。 编程产品 编程产品把程序上升为可以在不同平台上稳定运行,提供使用者一定功能的通用的编程产品。我们可以通过对程序的各种严格测试和...阅读全文
posted @ 2012-01-10 14:31 MeteorSeed 阅读(2155) 评论(4) 编辑
摘要: 目录一 软件构建,智者的积木二 语言没有“银弹”正如世间难寻“圣杯”三 .NET平台结构一 软件构建,智者的积木 多年来,众多的业界巨子给软件构建做出了不同的比喻,虽然你可能并不认识他们,也不打算了解这些巨人的英雄史诗,但是你应该了解他们对软件构建的看法,毕竟他们才是这场游戏中的高级玩家。我并不想讨论这些隐喻是否合理,我只希望以下隐喻能够帮助你重新思考下软件构建活动。 写作 这一隐喻暗示着软件开发过程是一种以编写代码为主的代价昂贵的试错过程,而非仔细的规划和设计。 耕种 这一隐喻暗示了软件就想是耕种一样,你每次只处理它的一小部分,一点一点的加到整个系统,使系统一点一点的“生长”。它也暗示...阅读全文
posted @ 2012-01-03 16:23 MeteorSeed 阅读(1961) 评论(4) 编辑