对.net技术组件的分析和选择

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

然后,庞杂的.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做跨平台的基础类库。

时间: 2024-10-09 10:43:29

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

转载:校园网接入认证技术对比与分析

原文作者: 沙捷 费青松 王雁 作者单位:首都体育学院 信息网络中心 北京市海淀区北三环西路 11号 100088 1 概述 Internet网络是一个自助网络,免费使用,一个用户终端配置IP地址即可接入网络.IP网络规模的扩大使得管理问题凸现,而不管是运营商的IP城域网还是校园网都有运营收费的需求,但是 在校园网中引入用户认证技术,有两个目的,一是可以有效的识别上网用户身份,第二是便于对用户的接入权限.业务权限.用户行为等进行有效的控制和管理,包括提供灵活的计费手段.基于IP地址的用户管理显然

基于cocos2dx的2D手游美术资源制作技术选型(2)--动作编辑器选择

Cocostudio是cocos2dx官方提供的游戏制作工具,其中包含了动作编辑器,其编辑好的动画导出的文件有三种:Atlastexture,json的AtalasTexture描述文件和plist动画描述文件,可以使用LibExtension Amature加载和播放. 但Cocostduio的动作编辑器也有一些不足的地方: 1. Cocostduio的崩溃率较高,很容易造成编辑过程中的数据丢失 2. Cocostudio的动作编辑方式对美术来说学习成本大,使用上也多不方便,美术对此非常抗拒

网络环境中数据加密技术实现与分析

一.前言 随着全球化进程的不断推进,我国的互联网行业取得了前所未有的发展,信息技术的高度发展,也使得人们的生活发生了巨大的变化.但是互联网存在很多安全问题,网络环境的数据加密技术是确保网络安全的关键技术之一,我们应该加强对数据加密技术的学习. 二.数据加密技术的历史起源和概念 密码的起源可能要追溯到人类刚刚出现,并且尝试去学习如何通信的时候,他们会用很多奇妙的方法对数据进行加密.最先有意识地使用一些技术的方法来加密信息的可能是公元六年前的古希腊人,他们使用的是一根叫scytale的棍子.后来,罗

ajax 技术和原理分析

ajax所包含的技术 大家都知道ajax并非一种新的技术,而是几种原有技术的结合体.它由下列技术组合而成. 1.使用CSS和XHTML来表示. 2. 使用DOM模型来交互和动态显示. 3.使用XMLHttpRequest来和服务器进行异步通信. 4.使用javascript来绑定和调用. 在上面几中技术中,除了XmlHttpRequest对象以外,其它所有的技术都是基于web标准并且已经得到了广泛使用的,XMLHttpRequest虽然目前还没有被W3C所采纳,但是它已经是一个事实的标准,因为目

从技术的角度分析我们到底需要什么样的CRM

尽管我们仍然对大数据以及所谓的"数字化决策"怀有戒心,但是我们对CRM的热情依然不减.在"营销即价值交换"的共识下,客户关系管理是数字营销的起点和终点,也是粉丝经济.体验经济等"新经济"的战略支点和实现平台.    上世纪80年代初,由Oracle.Siebel 带领的软件公司开创了CRM行业,把电讯科技带入了传统销售.90年代末,Salesforce.com在1999年第一次将CRM带入了云,用户通过浏览器即可使用.当年贝恩咨询的三位大牛 Da

磁珠磁环的选型--摘自《嵌入式系统可靠性设计技术及案例分析》

p127 – p129 磁珠:当导线中有电流穿过时,铁氧体对低频电流几乎没有什么阻抗,而对较高频率的电流会产生较大的衰减. 参数 额定电流 直流电阻 交流电阻 100MHz时的电阻值,用于衰减高频信号 磁珠磁环的选型--摘自<嵌入式系统可靠性设计技术及案例分析>

浅谈技术组件客户端的并发问题

最近在实现一个基于RabbitMQ的消息总线.因为它提供了Client(客户端),这里就牵扯到凡是技术组件的client都无法回避的并发问题.本文借实现消息总线的client谈谈在实现过程中的想法以及最终的处理方式,当然这些都不仅仅适用于消息总线的client,其他通用组件的client也同样适用. 并发问题的分类 其实上面所提到的并发问题,从大的层面上可以划分为两类问题: 自身固有的并发问题:这个存在的前提条件是client自身内部使用了多线程技术,并且本身就存在线程安全的缺陷. 被动调用的并

IAAS-虚拟化技术组件介绍

虚拟化技术组件涉及众多,下面对一些组件所处的层级以及定位做个简单的汇总介绍,部分信息来自于网络整理,如有不准确之处,请指正. 原文地址:https://www.cnblogs.com/hrbeu05/p/9030644.html

序列化和反序列化技术的分析和选择

转自:https://tech.meituan.com/serialization_vs_deserialization.html 美团点评技术团队的文章 #摘要序列化和反序列化几乎是工程师们每天都要面对的事情,但是要精确掌握这两个概念并不容易:一方面,它们往往作为框架的一部分出现而湮没在框架之中:另一方面,它们会以其他更容易理解的概念出现,例如加密.持久化.然而,序列化和反序列化的选型却是系统设计或重构一个重要的环节,在分布式.大数据量系统设计里面更为显著.恰当的序列化协议不仅可以提高系统的通