.net很庞杂,学习最忌讳什么?为了学而学,而不是为了用而学。我们不是为了成为教师,所以不要成为书呆子,不要成为”博士“,要从庞杂的技术群中选择自己需要的内容进行学习。

如果不加选择,一股脑的去学,这种”参考书式“学习接触一堆信息,不假思索,结果只会培养一个万事知晓,却不擅长运用的人。要思考技术的构成,想想怎么运用组合,将零散的技术有机构成一个整体,这样才是有目的,为运用而学。

首先是语法类的技术要点分析。众所周知,算法+数据结构=程序,这个公式是最基础的概念,但是现代语言为何却不是这种简单的构成模式,反而增加了很多”不相干“的内容?那些内容是什么?

我认为所有不相干的内容,实质就是”约定“,”约定“的目的是为了协作,是为了人与人之间的交流,而不是程序的运行机体。现代语言,关注的不是程序本身,而是强调人与人之间的沟通。请谨记这点。

因此,我将语言学习分成三个主要部分,1.约定,2,算法,3,数据结构。

.net不是一个语言,他主要特点是包含了一个庞大的类库,但是类库重点在于知其功能,学习上较为简单。

何谓”算法“,就是构成运行机理的部分。如:变量,流程控制结构,枚举,表达式。这些部分几乎每一种语言都不会有太大的差别,变量存储中间数据,表达式进行运算,控制结构执行选择,重复操作,枚举这些标明常量。高级内容包括异常控制,异步编程。

差异大的部分是”约定“,比如入口函数main就是一个约定。还有组织约定:命名空间。甚至标识符的组成要求,都算是一种约定。有一些约定是强制性的,有一些约定是非强制性的,比如”注释“是一种非强制性的约定,它只是告诉阅读者这是什么,而不对程序本身产生任何影响。要记住,”约定“的主要目的就是人与人之间的交流,所以”注释“也是强化交流的一个方式,应该视为写程序的一部分。

相对于“注释”,“单元测试”和“代码协定”提供强制的规格保证,

类型是一个约定,提供一个使用的界面。object公共基类也是一个标准的界面。类型可以扩展,增加新的实现和界面。但是更加纯粹的界面是”接口“。一般基于接口编程,将类型视为具体实现来简化认知。

泛型是比单一类型更宽的界面,因此应该首先考虑这一技术。泛型接口是.net提供的最强大的界面。

何谓”数据结构“,即数据单元的有机集合,不同集合有不同的构成方式,这就是”结构性“,”结构性“产生了对应的高效率算法设计。因此”算法+数据结构“是双辅双成的,因为算法的需要所以选择某一数据结构,也因为结构的特性,选择某一算法设计。

简单的数据结构是数组,.net中的数据结构实现,一般都实现了”枚举器“接口IEnumerator,这是一个关于数据结构的高层界面。.net已经提供大量的数据结构实现供我们使用。它们是“集合”类型的子类,同时还有并行版的兄弟类。

重点说一下“类”,类是一种约定,一个规格描述和界面,包含丰富的内涵。首先包含数据成员,函数成员,还有成员的访问权限控制,生存期控制,资源控制,可扩展性控制,书写方式控制(语法糖),类型转换,运算符支持。特性非常多,要考虑不同的特性组合,来书写代码。

类是一个高级界面,有很多控制特性,而“委托”就相对简单,它只是对应函数的界面。基于委托变量,“事件”提供了一个特殊的运用界面,它标明自身将引发事件,而由调用方提供处理事件的函数。这在类中,不同于一般的数据成员,也不同于函数成员。

.net中有三个特殊的组成部分,1.linq,2.lambda,2.xaml,3.正则表达式。这三个属于“语言”,也就是和c#是同类性质的。linq专职数据结构的查询,lambda是表达式,用来强化c#的语言功能,xaml用来描述界面,而正则表达式专职字符串的处理。

然后,庞杂的.net剩下的就是比较容易掌握的类库,如:集合,动态语言扩展,反射,安全,互操作,文件和注册表,事务处理,网络,windows服务,本地化,xaml,MEF,winrt,ado.net实体框架,xml,wpf,asp.net,wcf,wf,p2p,消息队列,事件日志等。

总结:

.Net学习分五类:1.约定, 2.算法, 3.数据结构,4.类库,5.部署。

约定包含:注释,单元测试,代码协定,类型,委托,事件,接口,泛型,命名空间,程序集和入口;其中类型包含数据成员和函数成员,运算符和转换等。

算法包含:一般表达式,匿名类型,lambda,linq,正则表达式,一般流程控制语句,异常控制语句,异步编程。

数据结构包含:数组,枚举器,集合等。

类库包含:集合,wpf等。

我的选型:

算法和数据结构的是基础。

约定类可以强化协作性,规范性。

类库应该进行选择,我选择是wpf, xaml做界面,集合和ado.net实体框架做数据处理与存储,wcf做客户端之间的通信,消息队列做客户端之间的协调,wf定制工作流,而winrt做跨平台的基础类库。

对.net技术组件的分析和选择的更多相关文章

  1. IAAS-虚拟化技术组件介绍

    虚拟化技术组件涉及众多,下面对一些组件所处的层级以及定位做个简单的汇总介绍,部分信息来自于网络整理,如有不准确之处,请指正.

  2. Easyswoole的WaitGroup和Csp组件的分析和使用

    Easyswoole的WaitGroup和Csp组件的分析和使用 easyswoole可真是个好名字,只是提供了恰到好处的封装,即使是源码也保持了这样的风格.这种风格不论好坏可能都需要各位适应下,哈哈 ...

  3. Java 远程通讯技术及原理分析

    在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI.MINA.ESB.Burlap.Hessian.SOAP.EJB和JMS等,这些 ...

  4. Java远程通讯技术及原理分析

    在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI.MINA.ESB.Burlap.Hessian.SOAP.EJB和JMS等,这些 ...

  5. 基于数据形式说明杜兰特的技术特点的分析(含Python实现讲解部分)

    ---恢复内容开始--- 注: 本博文系原创,转载请标明原处. 题外话:春节过后,回到学校无所事事,感觉整个人都生锈一般,没什么动力,姑且称为"春节后遗症".在科赛官网得到关于NB ...

  6. Web系统页面打印技术实现与分析

    1 Web页面打印概述应用WEB化,不论对开发商,还是对用户来说,实在是一种很经济的选择,因为基于WEB的应用,客户端的规则很简单,容易学习,容易维护,容易发布.在WEB系统中,打印的确是个烦人的问题 ...

  7. WeUI Picker组件 源代码分析

    前言 由于最近做的一个移动端项目需要使用到类似 WeUI Picker组件 的选择效果,  所以在这里来分析下 WeUI Picker 的实现逻辑.(weui.js项目地址) 之前也做过类似的组件, ...

  8. PacBio三代全长转录组/Iso-Seq技术及案例分析

    参考:产品手册 PacBio三代全长转录组有什么优势? 近年来,随着高通量测序技术的发展,转录组测序已经成为研究基因表达调控的主要手段.但二代的转录本重构准确率很低,三代可以直接得到全长转录本,无需组 ...

  9. window2008 64位系统没有office组件问题分析及解决

    服务器是windows server2008 64位系统, 我的系统需要用到Microsoft.Office.Interop.Excel组件 在上传Excel单据遇到错误:检索 COM 类工厂中 CL ...

随机推荐

  1. gcc boost版本冲突解决日记

    问题背景 项目在Ubuntu10 64位 boost 1.55,boost采用的是项目内包含相对目录的形式部署 项目采用了 -Wall -Wextra -Werror -Wconversion 最高的 ...

  2. iOS - 对OOA、OOD、OOP的理解

    很多人在求职的时候,会遇到一个这样的问题:“对OOD/OOP有较深的理解”,这个时候有人就会问OOD.OOP是什么呢?那么今天咱们就一块来看一下OOA.OOD.OOP到底是什么! (一)OOA--面向 ...

  3. 使用xhprof分析php代码性能

    推荐在Linux平台使用xhprof,win下xhprof目前稳定版本在php5.5 安装xhprof 下载地址 http://pecl.php.net/get/xhprof-0.9.4.tgz 与p ...

  4. Javascript如何实现AOP

    简介: AOP(面向切面的编程)是为了解决功能的独立性与可维护性而提供的一种编程思想.当多个函数大量重复使用同一个功能时通过分层切分,将功能平衡的划分,从而提高低耦合性. JS中实现: index.h ...

  5. [css]我要用css画幅画(八) - Hello Kitty

    接着之前的[css]我要用css画幅画(七) - 哆啦A梦,这次画的是Hello Kitty. /* 开始前先说点废话, 一转眼就2016年了,过完年后一直没更新博客,无他,就是懒得动. 这一转眼,一 ...

  6. StringBuilder用法

    //来自MSDN,不太懂英文可以使用百度翻译. //using System; //using System.Text; //public sealed class App //{ // static ...

  7. Linq专题之提高编码效率—— 第三篇 你需要知道的枚举类

     众所周知,如果一个类可以被枚举,那么这个类必须要实现IEnumerable接口,而恰恰我们所有的linq都是一个继承自IEnumerable接口的匿名类, 那么问题就来了,IEnumerable使了 ...

  8. ActiveMQ 5 入门

    apache-activemq-5.13.2 ActiveMQ使用JAAS授权的配置方式 <plugins> <!– 使用login.config配置授权用户 --> < ...

  9. Autofac在MVC4中牛刀小试

    Autofac是传说中速度最快的一套.NET高效的依赖注入框架.Autofac的介绍与使用请去参考Autofac全面解析系列(版本:3.5).   这里介绍的已经挺详细的啦. 下面我就先来说说MVC4 ...

  10. Migrate Instance 操作详解 - 每天5分钟玩转 OpenStack(40)

    Migrate 操作的作用是将 instance 从当前的计算节点迁移到其他节点上. Migrate 不要求源和目标节点必须共享存储,当然共享存储也是可以的. Migrate 前必须满足一个条件:计算 ...