.NET的未来和VB、C#的前路(上、下) 收藏

2024-02-15 05:08

本文主要是介绍.NET的未来和VB、C#的前路(上、下) 收藏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  .NET的未来和VB、C#的前路(上、下) 收藏


.NET的未来和VB、C#的前路(上)

 [CSDN 2月9日 编译]在去年微软的专业开发者大会上(Professional Developers Conference PDC 2008),微软就开发者在.NET平台上的未来做了详细的展望,本文我们将概括地来看一下即将到来的.NET 4.0 Framework的一些特性,以及全新的Microsoft 系编程语言,讨论下微软对于.NET Platform在接下来几年的长远展望。

 

VB.NET和C#的联合发展

 

当前来自软件的最首要的信息之一是针对Microsoft Visual Basic .NET开发者的。VB.NET和Microsoft Visual C#都是构建在通用语言运行时(Common Language Runtime—CLR)之上,这意味着它们都向下编译成通用中间语言(Common Intermediate Language—CIL)。由于二者均向下编译成相同的代码,因而两个语言内部也不存在很大的差别。但是,两种语言却由微软两个不同的团队来维护,而且几年来的这种分离由于开发团队在各自产品上有不同的视角和理念,导致C#和VB.NET这两种语言演变出许多语言方面的特性。许多令人兴奋的特性最初出现在C#中最后却成了VB.NET的特性,很多VB.NET开发者都感到了这一点。自然地,这引起了VB.NET阵营的不满。

 

 联合发展是微软的一个承诺,借此承认C# 和VB.NET为相同重要的语言,而且微软承诺在语言特性的发展方面,这些特性会同时加入到两个语言中。开发者不再需要为了某个特性而选择某个语言,也不再需要讨论到底哪个语言更好,他们要做的只是从语法方面来选择自己的语言就可以了。也许C#开发者会有一点挥之不去的优越感,VB.NET开发者会为此不爽,但联合发展后VB.NET开发者可以提醒“骄傲”的C#开发者,因为两种语言只是不同外表下的同一个东西。

 

动态语言运行时(Dynamic Language Runtime)的介绍

 

微软很敏感地意识到.NET Framework并不是构建应用时的唯一选择。快速地看看现在的开发环境,你会发现有很多语言选择。人们花费时间和精力用这些语言来写出有用的组件,问题来了:怎么能够让这些用其他语言写出的组件不至于在.NET上重写?

 

也许即将发布的.NET 4.0最令人激动的新特性是动态语言运行时(Dynamic Language Runtime—DLR)。就像通用语言运行时(Common Language Runtime—CLR)为静态型语言如C# 和VB.NET提供了通用平台一样,动态语言运行时(Dynamic Language Runtime—DLR)为像JavaScript, Ruby, Python甚至COM组件等动态型语言提供了通用平台。这代表.NET Framework在互操作性方面向前迈进了一大步,提供了一种语言操作的抽象,共享存储空间避免数据在进程中反复的集结,像垃圾收集一样的一套通用语言特性,以及将一种数据表达转换成另一种。

 

在更高层,你可以认为动态语言运行时(Dynamic Language Runtime—DLR)有三个层:

 *.NET语言集成(.NET Language Integration)

 * DLR核心组件(DLR Core Components)

 * 语言结合(Language Binders)

 

.NET的未来和VB、C#的前路(下)   [CSDN 2月10日 编译]

 

第一层,.NET语言集成,代表.NET语言有了一个概念即DLR是什么以及它怎么用。大部分来说,你甚至不会注意到DLR的这个方面,因为大部分的.NET语言有一个自然的集成点。IronRuby和IronPython都是动态型语言,所以DLR相合VB.NET总是在对象类型支持后联编(late binding)的概念,所以DLR很好地与后联编(late binding)解决合成一体。然而C#没有后联编(late binding)的概念,所以需要一个附加的静态型来支持动态语言。

 

第二层,是动态语言运行时(Dynamic Language Runtime—DLR)自身,由三个核心组件组成:表达式树(Expression Trees), 动态分配(Dynamic Dispatch),和调用点缓存(Call Site Caching)。一个表达式树是以一棵树方式的代码表现方式,它将语言抽象成一个连续的能够被DLR操作的格式。一旦动态代码以树的方式表现,DLR就能够阅读这棵树并且为了实际的执行从这棵树生成CLR代码。将代码解释成一个表达式树,然后创建CLR是一个昂贵的操作,所以DLR采用了一种性能技术即我们所知道的调用点缓存(Call Site Caching)来避免每次动态代码被调用时的重新编译。动态分配(Dynamic Dispatch)确保适当的语言结合(Language Binders)能够用于动态调用。

 

语言结合(Language Binders)构成了第三层,它是动态语言运行时(Dynamic Language Runtime—DLR)所需要的某些操作的特定语言工具。当然DLR远比本文简单介绍地要详细、功能强大得多,更多的信息来自于你自己的切身应用。

 

转载声明:本文来自CSDN博客,转载请标明出处http://blog.csdn.net/gouyue/archive/2009/02/11/3876243.aspx

这篇关于.NET的未来和VB、C#的前路(上、下) 收藏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/710485

相关文章

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

C#数据结构之字符串(string)详解

《C#数据结构之字符串(string)详解》:本文主要介绍C#数据结构之字符串(string),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录转义字符序列字符串的创建字符串的声明null字符串与空字符串重复单字符字符串的构造字符串的属性和常用方法属性常用方法总结摘

C#如何动态创建Label,及动态label事件

《C#如何动态创建Label,及动态label事件》:本文主要介绍C#如何动态创建Label,及动态label事件,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#如何动态创建Label,及动态label事件第一点:switch中的生成我们的label事件接着,

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ

在C#中调用Python代码的两种实现方式

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#调用python代码的方式1. 使用 Python.NET2. 使用外部进程调用 Python 脚本总结C#调

C#中的 StreamReader/StreamWriter 使用示例详解

《C#中的StreamReader/StreamWriter使用示例详解》在C#开发中,StreamReader和StreamWriter是处理文本文件的核心类,属于System.IO命名空间,本... 目录前言一、什么是 StreamReader 和 StreamWriter?1. 定义2. 特点3. 用

如何使用C#串口通讯实现数据的发送和接收

《如何使用C#串口通讯实现数据的发送和接收》本文详细介绍了如何使用C#实现基于串口通讯的数据发送和接收,通过SerialPort类,我们可以轻松实现串口通讯,并结合事件机制实现数据的传递和处理,感兴趣... 目录1. 概述2. 关键技术点2.1 SerialPort类2.2 异步接收数据2.3 数据解析2.