从景物图像模型生成改景物图像的图像称为图像的绘制,它是由显示卡上装有的专用绘图处理器完成的

1.1 计算机图形的简单历史回顾

摘要:最早的计算机是由一行行的开关和灯组成的() 技术人员和工程师需要工作几个小时、几天甚至几星期,对这些机器进行编程并阅读他們的计算结果。随着时间的变迁这一切逐渐发生了变化。数据可以有效地存储在磁带、磁盘上甚至可以一行行地存储在打孔纸上,或鍺存储在一堆穿孔卡上()

①. 纸作为计算机的输出媒体非常实用,直到今天仍然是主要的输出媒体之一但为常规的显示媒体,纸可能显得過于昂贵了一直用纸作为输出媒体会浪费自然资源,尤其在绝大多数情况下我们实际上并不需要对计算结果或数据库查询进行硬复制嘚输出。

作为计算机的一种辅助设备阴级射线管()是一项震撼人心的技术。作为最初的计算机监视器(显示器)一开始只是一种显示ASCII文本的視频终端(类似CMD黑窗口)。但是CRT能够完美地绘制点和线,以及字母字符不久,其他符号和图形陆续补充到字符终端程序员使用计算机和監视器创建图形,作为文本或表格输出的补充随后,一些用于绘制执行和曲线的算法被开发出来并公布于众。于是计算机图形逐渐從一项业余爱好变成了一门科学。

③. 最初显示在这些终端上的计算机图形是二维的,或简称为2D人们开始用平面的直线、圆和多边形来進行创建组合各种各样的图形。那些富有探索精神的程序员甚至创建了一些简单的街机游戏(如 Lunar Lander、Pong)他们所使用的简单图形就是由各种线型所绘制的,并且每秒刷新数次(重绘)

三维(或3D)这个术语表示一个正在描述或显示的物体具有3个维度:宽度、高度和深度。

例如放在书桌上嘚一张纸(上面画了一些图形或写了一些字)是个二位物体,因为它没有可以令人感觉得到的深度

但是,放在它旁边的一罐苏打水却是个三維物体这个苏打饮料罐又大又圆(宽度和高度)又长(深度)。

类似的计算机3D图形在实质上也是平面的,它只是在计算机屏幕上所显示的二位圖像但它可以提供深度(或第3维)的错觉。(2D + 透视 = 3D)

最初的计算机图形看上去类似(图1.2)所示图形通过12条线段组成了一个简单的三维立方体。使这個正方体看上去具有三维效果的是透视(Perspective)或线段之间的角度。正是它们产生了深度的幻觉

为了真正看到3D图像,实际上需要用两个眼睛观察一个物体或者为每个眼睛分别提供这个物体的一幅独立而又唯一的图像。(图1.3)

每个眼睛看到的都是一幅二维图像非常类似于在每个视網膜(位于眼睛的后半部分)上显示了一幅临时照片。随后大脑对这两幅略微不同的图像进行组合,在脑海中形成一幅单一的、合成的3D图片

由于计算机屏幕是在平面上显示平面画像,而不是通过不同的视角在两只眼睛上显示两幅图像这样一来,绝大多数3D计算机图像实际上呮是近似3D

单凭透视本身就足以创建三维的外观。注意前面(图1.2)所显示的那个立方体即时不着色,这个立方体仍然具有三维物体的外观泹是长时间凝视这个立方体,就会发觉这个立方体的前后将会交换位置由于图中缺少任何表面着色,大脑将会因此而产生混淆的感觉這幅图不能提供足够的信息以帮助大脑确定它到底感知到什么。我们遮住一只眼睛时所看到的世界没有突然看起来像平的原因在于以二維形式观察时,很多3D世界的效果仍然存在这些效果足以激发大脑判别深度的能力。其中一个线索是由光线照射产生的表面着色而另一個线索则是近处的物体看起来比远处的物体要大(透视效果)。这种透视效果称为透视缩短(Foreshortening)这种效果加上颜色的改变、纹理、光照、着色以忣各种不同的颜色强度共同组成了我们对三维图像的感知。

1.2 3D图形技术和术语

本书的每一章都包含一个或多个示例程序用来演示这一章所讨論的编程技术尽管本章有意避免了关于编程细节的讨论,但仍提供了一个示例程序向读者演示最低程序上所需要熟悉的技术和术语以幫助读者充分地利用本书。本章的示例程序叫做BLOCK读者可以从随书提供的示例程序集中的 "Chapter 1"文件夹中找到它。(此示例已上传Github具体链接会在攵末贴出)

将数学和图形数据转换成3D空间图像的操作叫做渲染(Rendering)。当这个术语作为动词使用时指的是计算机创建三维图像时所经历的过程。咜也作为名词使用指的仅仅是最终的图像作品。这个术语在本书中经常出现现在我们来看一看渲染过程中出现的其他一些术语和操作。

(图1.4)所示是BLOCK示例程序的原始输出结果显示的是用线条绘制的一个放置在一张桌子或一个平面上的立方体。通过变换(Transformation)或者说旋转这些点,并在它们之间绘制线段我们就能在平面的2D屏幕上创造出一个3D世界的错觉。

这些点本身叫做顶点(Vertices单数为Vertex)(术语:顶点),它们能够通过一種称为变换矩阵(Transformation Matrix)的数学结果进行旋转(本书第4章将详细讲解变换矩阵相关内容)另外还有一种矩阵叫做投影矩阵(Projection Matrix),用于将3D坐标转换成二维屏幕坐标实际的线条也将在二维屏幕坐标上进行绘制。

实际绘制或填充每个顶点之间的像素形成线段就叫做光栅化(Rasterization)我们可以通过隐藏表媔消除(Hide Surface Removal)来进一步澄清3D设计意图。(图1.5)所示显示了再BLOCK示例程序第一次按空格键后的输出虽然使用的仍然是点和线段,但是一个放置在桌面上嘚正方体的错觉却更加逼真了(相比图1.4)

虽然用线段绘图【也称做线框渲染(Wireframe Rendering)】也有它的用处,但在大多数情况下我们并不是用线段而是用實心三角形进行渲染。像线段一样三角形和多边形也会被光栅化或填充。早期的图形硬件能够用纯色对三角形进行填充但正如(图1.6)所示嘚,这样做并不能增强3D错觉早期的游戏和模拟技术可能会在相邻的多边形上采用不同的纯色,这确实有所帮助但却不能令人信服地对現实进行模拟。

貌似说了这么多还是没入到正题光栅化到底是什么呢?(不懂的读者可以去看下)

由于(图1.6)看的十分模糊在放一张运行了BLOCK示例嘚截图

(图1.7)在运行BLOCK按下两次空格键后将会展示着色(Shading)的效果。通过沿着表面(在顶点之间)改变颜色值能够轻松创建光线照射在一个红色正方體上的效果。

光照和着色在3D图形专业领域占据了非常大的比重并且有专门论述它们的书籍。另一方面着色器(Shader)则是在图形硬件上执行的單独程序,用来处理顶点和执行光栅化任务

同样的由于(图1.7)看的效果太清楚在放一张运行了BLOCK示例的截图

接下来要介绍的硬件技术进步是纹悝贴图(Texture Mapping)。一个纹理不过是一幅用来贴到三角形或多边形上的图片正如我们在(图1.8)中看到的这些纹理将渲染提高到了一个崭新的层次。

在如紟的硬件上纹理是快捷有效的,而一个纹理所能再现的表面如果用三角形来实现的话可能需要几千甚至几百万个。

这个示例可以通过運行BLOCK后按三次空格进行切换显示

同样的由于(图1.8)看的效果太清楚在放一张运行了BLOCK示例的截图

最后,(图1.9)展示了混合(Blending)的效果混合时我们能够將不同的颜色混合在一起。我们首先上下颠倒地绘制这个立方体然后再在他的上面绘制地板并与他们进行混合,在绘制正常方向的立方體就能获得这种反射效果。我们的确"透过"地板看到下面颠倒的立方体大脑告诉我们,"哦……这是个倒影"我们也可以应用混合使物体看起来透明。实际上(图1.9)中真正看到的倒立立方体其实是"透过"地板看到的。

简单说下上面的绘制步骤:

② 绘制地板(应用了混合)

③ 绘制正常方向的立方体

同样的由于(图1.9)看的效果太清楚在放一张运行了BLOCK示例的截图

总而言之言而总之,总之而言上述内容大概就是所谓的计算机圖形了。实心3D几何体无非就是将顶点间的点连接起来然后对三角形进行光栅化而使对象变得有实体。变换、着色、纹理与混合---我们在电影、电视、游戏、医疗或商业应用中看到的任何计算机渲染场景都无非是灵活地运用这4中技术产生

1.3 3D图形的常见用途

在现代计算机应用程序中,三维图形具有广泛的应用实时3D图形的应用范围包括交互游戏和模拟以及数据的可视化显示(供科学、医学或商业应用)。高端3D图形在電影以及技术和教育出版物中也具有广泛的应用

如前面所述,实时3D图形是指活动的并与用户进行交互的图形(实时更新的3D图形)

实时3D图形朂早的用途之一是军事飞行模拟器。即使到了今天飞行模拟器仍然为许多业余爱好者所热衷。

(图1.10)显示了一个流行的飞行模拟器的屏幕截圖它使用了OpenGL进行3D渲染(有兴趣可以去体验)。

在实时3D应用中我们常常需要作出一些妥协。只要有足够的处理时间我们就可以创建更高质量的3D图形。

在一般情况下我们设计模型和场景,并用到一个光线追踪器或扫描线渲染器来处理这些定义产生高质量的3D图形。

① 一个建模应用程序使用实时3D图形与艺术家(使用者)进行交互,创建具体的内容;

② 然后它所创建的帧被发送到另一个应用程序(光线追踪离线渲染器)或子程序由他们对图像进行渲染,渲染可能要耗费很长时间

例如:在一台非常快速的计算机上,为一部电影(例如:熊出没)渲染一个單独的帧可能需要耗费几个小时渲染并保存成千上万个帧的过程生成了一个可以回放的动画序列。尽管这个动画序列在回放时看上去像實时但它的内容却不是交互性的。因此它并不是实时的,而是预渲染的

在实时计算机图形中,最前沿的艺术是可编程着色器(Programmable Shading)

今天嘚图形卡不再是低能的渲染芯片了,而是功能强大的高度可编程的渲染计算机

每年,基于着色器的图形硬件不断侵占系统上由高端光线縋踪器和前面所提到的软件渲染工具所完成的任务

这个应用程序使用了一个自定义的OpenGL着色器,以每秒60幅的速率生成了一幅逼真的地球动態图像

它还包括了大气效果、太阳在水中的倒影,甚至背景中的星星

1.4 3D编程的基本原则

现在,我们对实时3D的基本概念已经有了相当程度嘚认识我们讨论了一些术语以及PC上的一些示例应用程序。那么如何在自己的计算机上创建这样的图像呢?好吧这正是本书剩余部分嘚任务所在。不过读者还需要知道一些基础知识,这正是我们接下来将要讨论的

我们不能告诉它 "在什么地方绘制什么" -----我们需要自己动掱,通过载入三角形应用必要的变换和正确的纹理、着色器并在必要时应用混合模式来组合一个模型。

这使得我们能够进行大量的底层控制与使用高层工具包(游戏引擎)相比,使用OpenGL这样的底层API的动人之处在于我们不能仅仅是重现许许多多的标准3D渲染算法,我们可以创造洎己的算法甚至可以发现一些新的捷径、性能技巧和艺术视觉技术。

现在让我们考虑如何在三维中对物体进行描述。

在指定一个物体嘚位置和大小之前需要一个参考帧对它进行测量和定位。

当我们在一个简单的平面计算机屏幕上绘制点和线时我们根据行和列指定一個位置。(例如: x, y)

在OpenGL或几乎所有的3D API中创建一个用于绘图的窗口时必须指定希望使用的坐标系统以及指定的坐标如何映射到实际的屏幕像素。首先我们讨论在二维绘图中应该怎样做,然后把这个原则扩展到三维图形中

在二维绘图中,最为常用的坐标系统是笛卡尔坐标系统笛卡尔坐标系统由一个x坐标和一个y坐标构成。

x坐标测量水平方向的位置而y坐标则测量垂直方向的位置。

笛卡尔坐标系统的原点(Origin)是(x=0, y=0)笛鉲尔坐标用括号内的一个坐标对来表示,第一个是x坐标第二个是y坐标,中间由一个逗号分隔例如,原点就写为(0, 0)

(图1.17)描述了二维的笛卡爾坐标系统,带刻度的x和y线被称为 "轴"可以从负无穷延伸到正无穷。

这张图是我们在学校时经常使用的真实笛卡尔坐标系统今天,当我們在绘图时指定坐标系统不同的窗口映射模式可能会导致坐标的解释不一致。在本书后面章节我们将会看到如何使用不同的方式把真實的坐标控件映射到窗口坐标。

窗口时以像素为单位进行度量的开始在窗口中绘制点、线和形状之前,必须告诉OpenGL如何把指定的坐标翻译為屏幕坐标

我们可以通过指定占据窗口的笛卡尔控件区域完成这个任务,这个区域称为裁剪区域

在二维空间中,裁剪区域就是窗口内蔀最小和最大的x和y值另一个方法是根据窗口指定原点的位置。

(图1.18)展示了两种常见的裁剪区域

第一个例子:(图1.18左侧)

窗口x坐标的范围自左姠右为 0 到 +150, y坐标的范围从上而下为 0 到 +100屏幕正中的点用(75, 50)来表示。

第二个例子:(图1.18右侧)

窗口x坐标的范围自左向右为 -75 到 +75 y坐标的范围从上而下為 -50 到 +50,屏幕正中的点用原点(0, 0)来表示

当然我们还可以使用OpenGL函数(或用于GDI绘图的普通Window函数)上下反转或左右反转坐标系统。

事实上在Window窗口的默認映射中,坐标的y的值始终为正并且从上而下递增(Win32就是这样的)。

这种默认的映射模式在自上而下绘制文本时非常有用但在绘制图形时則显的不太方便。

视口:把绘图坐标映射到窗口坐标

裁剪区域的宽度和高度很少正好与窗口的宽度和高度(以像素为单位)相匹配

因此,坐標系统必须从逻辑笛卡尔坐标映射到物理屏幕像素坐标这个映射是通过一种叫做视口(Viewport)的设置来指定的。

视口就是窗口内部用于绘制裁剪區域的客户区域视口简单地把裁剪区域映射到窗口中的一个区域。

通常视口被定义为真个窗口,但这并非严格必须的例如,我们可能只希望窗口下半部分进行绘图

(图1.19)所示是个很大的窗口,其大小为300x300像素它的视口被定义为整个用户区域。

如果这个窗口的裁剪区域被設置为沿x轴 0 至 150沿 y 轴 0 至 100,我们所看到这个窗口的逻辑坐标将被映射到一个更大的屏幕坐标系统中(因为裁剪区域比视口小)

逻辑坐标系统的烸个增量将与窗口物理坐标系统(像素)的两个增量相匹配。

与此形成对比的是(图1.20)展示了一个与裁剪相匹配的视口。我们所看到的这个窗口仍然是300x200像素但是现在可视区域将占据窗口的左下部分。

我们可以使用视口来缩小或放大窗口中的图像也可以通过把视口设置为大于窗ロ的用户区域,从而只显示裁剪区域的一部分

顶点-----空间中的一个位置

在2D和3D中,当我们绘制一个物体时实际上都是用一些更小的称为图え(Primitives)(点,线)的形状来组成这个物体

图元是一维或二维的实体或表面,如点、直线和多表现(平面多变的形状)

在3D空间中,我们把图元组合在┅起创建3D物体例如一个三维立方体是由6个二维的正方形组成,每个正方形代表一个独立的面

正方形(或其他任何图元)的每个角称为顶点(Vertex)。这些顶点就在3D空间中指定了一个特定的坐标

顶点其实也就是2D或3D空间的一个坐标。创建实体3D几何图形其实不过就是一种连线游戏罢了

峩们将在第3章讨论所有的OpenGL图元以及如何使用它们。

现在我们把二维坐标系统扩展到三维空间中,并增加深度分量(Depth)

(图1.21)所示的笛卡尔坐标系统增加了一个新的轴:Z轴。Z轴同时垂直于x轴和y轴

它代表了一条从屏幕的中心朝向读者的直线(我们已经旋转了这个坐标系统的视角,把y軸向左旋转把x轴向下和后旋转)。

否则Z轴将直接面向我们,我们将无法看到Z轴现在我们用3个坐标(x, y z)来指定一个三维空间的一个位置。

我们已经知道如何在3D空间使用笛卡尔坐标来表示位置

但是,不管我们觉得自己的眼睛所看到的三维图像有多么真实屏幕上的像素实際上只是二维的。

那么OpenGL是如何把这些笛卡尔坐标翻译为可以在屏幕上绘图的二维坐标呢

简而意之,答案就是 "三角法和简单的矩阵操纵"

倳实上或许并非如此,但是如果我们花很长的篇幅来讨论其中的概念我们很可能会失去很多对这些细节不感兴趣的读者。

(第4章我们将对此稍做讨论至于更深入的讨论,读者可以参考附录A "更多阅读建议" 中的参考部分)

幸运的是当我们使用OpenGL创建图形时,并不需要对数学有深叺的理解但是,我们在这方面的造诣越深能够利用OpenGL所发挥的威力也就越大。

我们真正需要理解的第一个概念称为投影(Projection)

用于创建集合图形的3D坐标将投影到一个2D表面(窗口背景)(如图1.22)

在OpenGL中,绝大多数情况下我们所关心的两种主要类型的投影。

使用这种投影时我们需要指定┅个正方形或长方形的视景体。

视景体之外的任何物体都会被绘制而且所有实际大小相同的物体在屏幕上都具有相同的大小,不管他们昰远或是近

这种类型的投影(图1.23)最常用于建筑设计、计算机辅助设计或2D图形中。

此外在3D图形场景中,我们也常常需要使用正投影在场景的顶部添加文本或者2D覆盖图。(游戏的GUI)

在这种投影中远处的物体看上去比近处的物体更小。他的视景体(图1.24)看上去有点像一个顶部被削平嘚金字塔

剩下来的这个形状称为平截头体(Frustum)。靠近视景体的物体看上去比较接近它们的原始大小但是,当靠近视景体后部的物体将被 投影到视景体的前部时套门看上去就显的比较小。在模拟和3D动画中这种投影能够获得最大程度的逼真感。

本书的所有示例源码将放到Github中详细地址:

本章的BLOCK的示例源码详细地址:

JoBo是一个用于下载整个Web站点的简单笁具它本质是一个Web Spider。与其它下载工具相比较它的主要优势是能够自动填充form(如:自动登录)和使用cookies来处理sessionJoBo还有灵活的下载规则(如:通过网頁的URL,大小MIME类型等)来限制下载。 压缩包中包含: /vfoxpro 请定期查看该网站以便下载产品的最新版本。 问题 1-2: 从何处可以得到有关 Visual FoxPro 的详细资料 答案: 通过 Microsoft Visual FoxPro Web 站点是随时获得各种最新产品发布信息的最佳途径。在此站点上不仅有新的产品公告而且还提供了产品的更新信息、技术文章、白皮书、专业开发人员设计的优秀示例、会议公告、以及与其他许多 FoxPro web 站点的各种链接。 问题 1-3: 知识库)您还可以阅读一份有关常见问题嘚清单。除联机支持之外还可以直接通过电话获得技术支持。“帮助”菜单中的选项可列出技术支持的电话号码这些电话号码也可用於报告产品中的错误。 问题 1- 问题 1-5: 是否会有 Visual FoxPro /vfoxpro 或 Visual Studio 的/vstudio 的 Web 站点上发布修订公告 问题 1-6: 下载地址:/dow//dow//shop01开发,助从事电子商务,网上销售购物的创业者成功.本系统适合电脑,笔记本电脑,软件,网络,办公设备,专用配件,手机,通讯设备,卡,移动联通充值中心,IP长途,音响,耳机,数码相机,摄像机,图形冲印,随身视听等數码数电子商务商城购物系统;运动,健身,运动明星,乐器,军品,旅游,机票,网络游戏虚拟商品交易,电玩,动漫,Cosplay,居家日用,装饰,文具,园艺,邮币,古董,字画,收藏,汽车,摩托,自行车,家庭装修,五金工具网上购物系统,在线购物系统,购物系统,安防报警,淘宝卖家服务,珠宝首饰,流行饰品,珠宝配件购物软件,电子商务购物,电子商务商城购物,品牌手表,流行手表,眼镜,彩妆,香水,护肤,美体,女士箱包,鞋帽,配件,女装,女士精品,男装,服饰配件,家用电器电子商务网站商城购物,电子购物系统,购物车系统,保健器械,男士精品,ZIPPO,瑞士军刀,玩具,模型,卡通产品,书籍,杂志,报纸,宠物,宠物食品及用品asp购物系统,虚拟购物系统,購物平台,音乐,影视,明星,娱乐,成人用品,避孕用品,情趣内衣购物系统下载,购物软件下载,唐网科技电子商务.电子商务购物网站管理系统是基于WEB开發的大型购物系统.它以构建电子商务网站为目标,由前台购物、后台管理、在线支付三大部分组成.各大部分完美结合,都有着最为完善和强大嘚功能,最大限度的满足客户在线购物和网站管理员管理的需求.系统满足各个级别用户购建电子商务平台的需要,是构建各种大中小电子商务購物网站的首选系统!不需要专门编程,半天便能建立门户级专业电子商务购物网站.购物系统轻松管理维护,经济效率实实在在看得见.如不会本機调试本系统,请查看《IIS安装使用说明书》 强大的模板,将使您的网店从此不再单调!后台只须轻轻一点,整站风格即可改变,从此让枯燥的界面一詓不再复返!本网上购物系统,是您最佳的网上开店平台! 电话:020-官网: 演示:/shop01下载:/dow/正式版下载分类信息网站网页模板 源码版本:V2020 建议分类:源码下载/ 软件网站: 演示网站: 平台开发的分类信息管理系统,它集成了自定义信息发布表单、整站伪静态HTML、分站顶级或二级域名绑定、汾类/分站模板管理、IP自动跳转、搜索引擎优化、网银支付、道具、短信/邮箱验证、论坛整合、网址导航、分站独立管理等多项强大功能通过Dreamweaver 可视化插件能够任意编辑分站、栏目模板页面显示样式。 强大的技术保障 系统由网软志成设计倾力打造进一步拓展分类信息网价值。 网软志成平台为用户提供可持续性技术保障完美无忧。多样化的风格改造为用户提供非凡体验。 非凡的访问速度 秉承网软志成分类網独创的模板和数据库体系以及专业的代码设计保证了网软志成分类信息网系统的持续高效和稳定 卓越的负载能力 网软志成分类信息系統核心参数的合理配置,专业的web 、数据库、附件和图片链的负载均衡处理保证了站点在繁忙的服务器环境下快速而稳定的运行。 严密的咹全体系独创的防攻击技术保障 专业的过滤注入式入侵、严密高效的防护算法和监控程序构成站点严密的安全体系 强大而完善的功能 完善的多重无限分类,分站、分类栏目均可生成html页面、可选用的所见即所得编辑器、自定义信息发布字段、分站完全独立、后台管理权限控淛操作系统 Windows Server 2003(推荐)、Windows 2000、Windows XP 数据库 分类信息源码,生成html的分类信息站源码,此系统是基于荣誉出品,采用信息网源码,信息发布系统源码,物流信息源碼,房产信息网源码.net源码,公安信息网源码,家教信息平台源码,农业信息网源码,浦东信息网源码,北京信息超市源码,本分类信网程序基于综合风格囸式版下载,能帮助用户建立一个像赶集网的专业分类信息网站门户欢迎大家下载使用是一套网软志成免费提供的分类供求信息发布网站商业建站程序。自带四套分类网站模板,强大的生活分类信息网站后台管理系统本分类信息网站建站系统正式版是本公司专业网站软工程師团队花费二年时间精心开发制作的分类信息发布网程序,现免费提供强大的分类信息网后台管理系统,应用本信息网站建站软件,可建立有全國各地分站功能的地方生活分类信息发布网站的优秀网站管理系统正式版,全国城市分站都有独立管理功能,可招商发展加盟代理城市分站,轻松赚钱。分类信息网站系统正式版提供有桔红色.net综合风格分类网站模板,同时还提供有.net同城风格分类信息网页模板,+mssql简易风格分类信息网站系統源代码免费版,前台模块有,首页,商铺排行, 都市114,新闻,同城网购,电子优惠券,信息论坛,发布信息,登记商铺,网址导航,帮助中心,可以发布房屋信息,车輛信息,教育培训信息,交友征婚信息,宠物信息,票务/优惠券,跳蚤市场,求职兼职简历,招聘,办公商务,生活服务信息发布栏目,更多... 分类信息系统源码,汾类信息网源码下载,分类信息网站全站源码,分类信息网站模板,网页模板,分类信息发布网站系统采用分类信息,供求信息发布网站管理系统正式版源码,HTML城市分类信息网站系统是适合多个城市使用的分类信息发布平台网软分类信息系统+MSSQL大型数据库编程的分类信息网站管理系统源程序下载,分类信息网页模板,信息发布网站系统商业版。一个建立分类信息网站的智能建站系统,也是一个自助建站的分类信息网站程序商业蝂分类网站管理系统商业版,建立行业级分类信息网站的史上最强大分类信息建站系统,应用本网站系统注册商家可开店铺,可发布分类信息,供求信息,建立企业网站,黄页功能,可展示产品,并可对商品下订单,并直接在线支付,帐户功能可帐户资料修改,会员密码修改,管理我的收藏,管理我嘚订单 ,信息可管理全部信息,修改管理竟价信息,查看管理未审信息,查看管理过期信息,发布新的分类信息,金币模板有,奖励金币,扣除金币,在线充徝,充值记录,短信模块,有收件箱,发信箱,写短信,评论模块有我的信息评论,我的新闻评论,认证模块,有实名认证。后台功能强大,可实现网站的智能囮管理,傻瓜化操作便可建立全国性的专业门户级的分类信息网站。分类广告,分类信息网站管理系统后台管理同样结构清晰便于管理,提高效率分类信息网站自助建站管理系统源码。

)自由下载PHP遵守GNU公共许可(GPL),在这一许可下诞生了许多流行的软件诸如Linux和Emacs你可以不受限制的获得源码,甚至可以从中加进你自己需要的特色PHP在大多数Unix平台,GUN/Linux和微软Windows平台上均可以运行怎样在Windows环境的PC机器或Unix机器上安装PHP的资料可以在PHP官方站点上找到。安装过程很简单 如果你的机器解决了2000问题,那么PHP也一样没有千年虫问题! )了解更多 PHP的应用在个人性质的web工程中增长显著。根据Netcraft在1999年10月的报告有931122个域和321128个IP地址利用PHP技术。 这样的极受欢迎的站点你不会感觉出PHP的速度与其他的有什么不同。最起碼我就没有感觉出来!好了让我们来看看PHP有那些优点: - 学习过程 我个人更喜欢PHP的非常简单的学习过程。与Java和Perl不同,你不必把头埋进100多页的攵档中努力学习才可以写出一个象样的程序只要了解一些基本的语法和语言特色,你就可以开始你的PHP编码之旅了之后你在编码过程中洳果遇到了什么麻烦,还可以再去翻阅相关文档 PHP的语法与C,PerlASP或者JSP。对于那些对上述之一的语言较熟悉的人来说PHP太简单了。相反的洳果你对PHP了解较多,那么你对于其他几种语言的学习都很简单了 你只需要30分钟就可以将PHP的核心语言特点全部掌握,你可能已经非常了解HTML甚至你已经知道怎样用编辑设计软件或者手工来制作好看的WEB站点。由于PHP代码能够无障碍的添加进你的站点在你设计和维护站点的同时,你可以很轻松的加入PHP使得你的站点更加具有动态特性 - 数据库连接 PHP可以编译成具有与许多数据库相连接的函数。PHP与MySQL是现在绝佳的组合伱还可以自己编写外围的函数取间接存取数据库。通过这样的途径当你更换使用的数据库时可以轻松的更改编码以适应这样的变化。PHPLIB就昰最常用的可以提供一般事务需要的一系列基库 - 可扩展性 就像前面说的那样,PHP已经进入了一个高速发展的时期对于一个非程序员来说為PHP扩展附加功能可能会比较难,但是对于一个PHP程序员来说并不困难 - 面向对象编程 PHP提供了类和对象。基于web的编程工作非常需要面向对象编程能力PHP支持构造器、提取类等。 - 可伸缩性 传统上网页的交互作用是通过CGI来实现的CGI程序的伸缩性不很理想,因为它为每一个正在运行的CGI程序开一个独立进程解决方法就是将经常用来编写CGI程序的语言的解释器编译进你的web服务器(比如mod_perl,JSP)。PHP就可以以这种方式安装虽然很少有人願意这样以CGI方式安装它。内嵌的PHP可以具有更高的可伸缩性 - 更多特点 PHP的开发者们为了更适合web编程,开发了许多外围的流行基库这些库包含了更易用的层。你可以利用PHP连接包括OracleMS-Access,Mysql在内的大部分数据库你可以在苍蝇上画图,编写程序下载或者显示e-mail你甚至可以完成网络相關的功能。最好的是你可以选择你的PHP安装版本需要哪些功能。引用Nissan的Xterra的话来说就是PHP可以做到你想让它做到的一切而且无所不能! 国外 / - PHP官方站点 / - 极好的教程 - 代码交换 / - 教程、专栏和邮件列表档案 / - 文章和代码

sam spade for internet 谭浩强版高级语言C设计课件 长风聯盟软件服务运营推进战略白皮书 一个简单而强大的基于MFC的web server源码 MagicAjax分别源码 C#的一个网页游览的例子 C++自绘窗体的完整代码 注释非常详细相信會帮助大家设计好自己的个性窗体。 C++_Primer_第4版_中文+英文 原书源码+课后习题答案 CameraController(云界面) 实现了自绘控件,云端控制主要在CnComm类多线程串口通讯库 camerads-DirectShow使用示例 演示了摄像头的使用 CatListBoxDemo ListBox控件与其它控件阙套使用方法 CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和垺务端,客户端软件主要作用是监测本主机的活动并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户以便用户对局域网内的主机进行监测和管理。 CClockST_demo 电子钟的实现自绘Button、Static的实现,其中自定了一个辅助主题风格類 CctryLog(web拦截网页帐号密码) 实现了一个控件去获得IHTMLDocument2接口,然后读取内容匹配用户名与密码等。 CFile64_src 操作大文件自定义了一个操作大文件的类,並进行了测试 chapter7 实现了声音录制等功能。 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、清除RAS自动拨号历史记录、清除系统临时文件夹、清空回收站、清除"运行"中的自动匹配历史记录、清除"文档"中的历史记录、清除上次登陆用户记录、清除"查找文件"自动匹配历史记录、清除"查找计算机"自动匹配历史记录、清除网络联接历史記录、清除远程登录历史记录、清除浏览网址历史记录实现的代码很简单。 自绘了CStatic控件实现了标题字符滚动效果。 CSDN免积分下载工具 源碼 演示了使用CInternetSession去下载资源 CStatic文字滚动 如题,此实例非常适合学习重载并自绘了Wnd类,效果是上下文字、图片、文字由大到小和星星闪烁等滾动效果实例使用了加载类似xml文件读取信息,然后显示 COM_ATL_Tutorial 简单的atl控件演示 dll库的演示。 源码 C#的一个网页游览的例子 C++自绘窗体的完整代码 注釋非常详细相信会帮助大家设计好自己的个性窗体。 C++_Primer_第4版_中文+英文 原书源码+课后习题答案 CameraController(云界面) 实现了自绘控件,云端控制主要在CnComm类哆线程串口通讯库 camerads-DirectShow使用示例 演示了摄像头的使用 CatListBoxDemo ListBox控件与其它控件阙套使用方法 CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源碼 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动并将监测到的信息定时发送给服务器。服务器可以将收集到的信息鉯柱状图和文件列表以及其他方式呈现给用户以便用户对局域网内的主机进行监测和管理。 CClockST_demo 电子钟的实现自绘Button、Static的实现,其中自定了┅个辅助主题风格类 CctryLog(web拦截网页帐号密码) 实现了一个控件去获得IHTMLDocument2接口,然后读取内容匹配用户名与密码等。 CFile64_src 操作大文件自定义了一个操作大文件的类,并进行了测试 chapter7 实现了声音录制等功能。 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、清除RAS自动拨号历史记录、清除系统临时文件夹、清空回收站、清除"运行"中的自动匹配历史记录、清除"文档"中的历史记录、清除上次登陆用户记录、清除"查找文件"自动匹配历史记录、清除"查找计算机"自动匹配历史记录、清除网络联接历史记录、清除远程登录历史记录、清除浏览网址历史记录实现的代码很简单。 自绘了CStatic控件实现了标题字符滚动效果。 CSDN免积分下载工具 源码 演示了使用CInternetSession去下载资源 CStatic文字滚动 如题,此实例非常适合学习重载并自绘了Wnd类,效果是上下文字、图片、文字由大箌小和星星闪烁等滚动效果实例使用了加载类似xml文件读取信息,然后显示 COM_ATL_Tutorial 简单的atl控件演示 dll库的演示。 源码 C#的一个网页游览的例子 C++自绘窗体的完整代码 注释非常详细相信会帮助大家设计好自己的个性窗体。 C++_Primer_第4版_中文+英文 原书源码+课后习题答案 CameraController(云界面) 实现了自绘控件,雲端控制主要在CnComm类多线程串口通讯库 camerads-DirectShow使用示例 演示了摄像头的使用 CatListBoxDemo ListBox控件与其它控件阙套使用方法 CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动并将监测到的信息定时发送给服务器。服务器可鉯将收集到的信息以柱状图和文件列表以及其他方式呈现给用户以便用户对局域网内的主机进行监测和管理。 CClockST_demo 电子钟的实现自绘Button、Static的實现,其中自定了一个辅助主题风格类 CctryLog(web拦截网页帐号密码) 自定义了一个类似STL容器的类,并进行了测试 ClearHistory 实现了 清楚internet临时文件、Cookie的清除、遊览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、清除RAS自动拨号历史记录、清除系统临时文件夹、清空回收站、清除"运行"中的自动匹配历史记录、清除"文档"中的历史记录、清除上次登陆用户记录、清除"查找文件"自动匹配历史记录、清除"查找计算机"自动匹配历史记录、清除网络联接历史记录、清除远程登录历史记录、清除浏览网址历史记录。实现的代碼很简单 自绘了CStatic控件,实现了标题字符滚动效果 CSDN免积分下载工具 源码 演示了使用CInternetSession去下载资源。 CStatic文字滚动 如题此实例非常适合学习,偅载并自绘了Wnd类效果是上下文字、图片、文字由大到小和星星闪烁等滚动效果。实例使用了加载类似xml文件读取信息然后显示。 COM_ATL_Tutorial 简单的atl控件演示 dll库的演示 源码 C#的一个网页游览的例子 C++自绘窗体的完整代码 注释非常详细,相信会帮助大家设计好自己的个性窗体 C++_Primer_第4版_中文+英攵 原书源码+课后习题答案。 CameraController(云界面) 实现了自绘控件云端控制主要在CnComm类多线程串口通讯库, camerads-DirectShow使用示例 演示了摄像头的使用 CatListBoxDemo ListBox控件与其它控件闕套使用方法 CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端客户端软件主要作用是监测本主机的活動,并将监测到的信息定时发送给服务器服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网內的主机进行监测和管理 CClockST_demo 电子钟的实现,自绘Button、Static的实现其中自定了一个辅助主题风格类。 CctryLog(web拦截网页帐号密码) 自定义了一个类似STL容器的類并进行了测试。 ClearHistory 实现了 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、清除RAS自动拨号历史记录、清除系统临时文件夹、清空回收站、清除"运行"中的自动匹配历史记录、清除"文档"中的历史记录、清除上次登陆用户记录、清除"查找文件"自动匹配历史记录、清除"查找计算机"自动匹配历史记录、清除网络联接历史记录、清除远程登录历史记录、清除浏览网址历史记录实现的代码很简单。 自绘了CStatic控件实现了标题字符滚动效果。 CSDN免积分下载工具 源码 演示了使用CInternetSession詓下载资源 CStatic文字滚动 如题,此实例非常适合学习重载并自绘了Wnd类,效果是上下文字、图片、文字由大到小和星星闪烁等滚动效果实唎使用了加载类似xml文件读取信息,然后显示 COM_ATL_Tutorial 简单的atl控件演示 dll库的演示。 源码 C#的一个网页游览的例子 C++自绘窗体的完整代码 注释非常详细楿信会帮助大家设计好自己的个性窗体。 C++_Primer_第4版_中文+英文 原书源码+课后习题答案 CameraController(云界面) 实现了自绘控件,云端控制主要在CnComm类多线程串口通訊库 camerads-DirectShow使用示例 演示了摄像头的使用 CatListBoxDemo ListBox控件与其它控件阙套使用方法 CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户以便用户对局域网内的主机进行监测和管理。 CClockST_demo 电子钟的实现自绘Button、Static的实现,其中自定了一个辅助主题風格类 CctryLog(web拦截网页帐号密码) 自定义了一个类似STL容器的类,并进行了测试 ClearHistory 实现了 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、清除RAS自动拨号历史记录、清除系统临时文件夹、清空回收站、清除"运行"中的自动匹配历史记录、清除"文档"中的历史记录、清除上次登陆用户记录、清除"查找文件"自动匹配历史记录、清除"查找计算机"洎动匹配历史记录、清除网络联接历史记录、清除远程登录历史记录、清除浏览网址历史记录。实现的代码很简单 自绘了CStatic控件,实现了標题字符滚动效果 CSDN免积分下载工具 源码 演示了使用CInternetSession去下载资源。 CStatic文字滚动 如题此实例非常适合学习,重载并自绘了Wnd类效果是上下文芓、图片、文字由大到小和星星闪烁等滚动效果。实例使用了加载类似xml文件读取信息然后显示。 COM_ATL_Tutorial 简单的atl控件演示 dll库的演示 源码 C#的一个網页游览的例子 C++自绘窗体的完整代码 注释非常详细,相信会帮助大家设计好自己的个性窗体 C++_Primer_第4版_中文+英文 原书源码+课后习题答案。 CameraController(云界媔) 实现了自绘控件云端控制主要在CnComm类多线程串口通讯库, camerads-DirectShow使用示例 演示了摄像头的使用 CatListBoxDemo ListBox控件与其它控件阙套使用方法 CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送給服务器服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理 CClockST_demo 电子鍾的实现,自绘Button、Static的实现其中自定了一个辅助主题风格类。 CctryLog(web拦截网页帐号密码) 自定义了一个类似STL容器的类并进行了测试。 ClearHistory 实现了 清楚internet臨时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、清除RAS自動拨号历史记录、清除系统临时文件夹、清空回收站、清除"运行"中的自动匹配历史记录、清除"文档"中的历史记录、清除上次登陆用户记录、清除"查找文件"自动匹配历史记录、清除"查找计算机"自动匹配历史记录、清除网络联接历史记录、清除远程登录历史记录、清除浏览网址曆史记录实现的代码很简单。 自绘了CStatic控件实现了标题字符滚动效果。 CSDN免积分下载工具 源码 演示了使用CInternetSession去下载资源 CStatic文字滚动 如题,此實例非常适合学习重载并自绘了Wnd类,效果是上下文字、图片、文字由大到小和星星闪烁等滚动效果实例使用了加载类似xml文件读取信息,然后显示 COM_ATL_Tutorial 简单的atl控件演示 dll库的演示。 专家的梦幻组合编写包含开发人员使用C#所需的所有内容。C#是编写.NET应用程序的一种语言本书适匼于希望提高编程技巧的、有经验的C#程序员,也适用于刚开始使用C#的专业开发人员本书探讨了Visual Studio 2013和.NET Framework Web应用程序。 对于开发人员把C#语言及其楿关联的.NET Framework环境描述为最重要的新技术一点都不夸张。.NET提供了一种环境在这个环境中,可以开发在Windows上运行的几乎所有应用程序而C#是专门鼡于.NET Framework的编程语言。例如使用C#可以编写动态Web页面、Windows Presentation Foundation应用程序、XML Web服务、分布式应用程序的组件、数据库访问组件、传统的Windows桌面应用程序,甚戓可以联机/脱机运行的新型智能客户端应用程序本书介绍.NET Framework Framework 所迷惑,认为这是一个只关注Internet的架构这个名称中的.NET仅强调Microsoft相信分布式应用程序是未来的趋势,即处理过程分布在客户端和服务器上理解C#不仅仅是编写Internet或网络识别应用程序的一种语言也很重要。它还提供了一种编寫Windows平台上几乎任何类型的软件或组件的方式另外,C#和.NET都对开发人员编写程序的方式进行了革新更易于实现在Windows上的编程。 那么.NET和C#有什麼优点? .NET和C#的重要性 为了理解.NET的重要性就一定要了解过去20年来出现的许多Windows技术的本质。尽管所有Windows操作系统在表面上看来完全不同但从Windows 嘚作用。粗略地说.NET是一种在Windows平台上编程的架构—— 一种API。C#是一种从头开始设计的用于.NET的语言它可以利用.NET Framework及其开发环境中的所有新增功能,以及在最近25年来出现的面向对象的编程方法 在继续介绍前,必须先说明后向兼容性并没有在这个演化进程中丧失。现有的程序仍鈳以使用.NET也兼容现有的软件。现在在Windows上软件组件之间的通信几乎都使用COM实现。因此.NET能够提供现有COM组件的包装器(wrapper),以便.NET组件与之通信 我们不需要学习了C#才能给.NET编写代码,因为Microsoft已经扩展了C++还对Visual Basic进行了很多改进,把它转变成了功能更强大的语言并允许把用这些语言编寫的代码用于.NET环境。但其他这些语言都因有多年演化的遗留痕迹并非一开始就用现在的技术来编写,导致它们不能用于.NET环境 本书将介紹C#编程技术,同时提供.NET体系结构工作原理的必要背景知识我们不仅会介绍C#语言的基础,还会给出使用各种相关技术的应用程序对应的示唎包括数据库访问、动态的Web页面、高级的图形和目录访问等。 Windows API自从1993年发布的Windows NT以来一直在演化和扩展但自从2002年以来,.NET Framework对程序编写方式进荇了重大的修改2012年又进行了一次很大的改动。每10年就会发生这种改变吗Windows 8现在提供了一种新的API:用于Windows Store应用程序的Windows运行库(WinRT)。这个运行库是┅个本机API(类似于Windows API)它没有把.NET运行库作为其核心,但提供了基于.NET理念的非常好的新功能Windows 8包含这个API的第一个版本,可用于现代模式的应用程序尽管它不基于.NET,但仍可以将.NET的一个子集应用于Windows Store应用程序用C#编写该应用程序。这个新的运行库正在演化在Windows 的优点 前面阐述了.NET的优点,但并没有说它会使开发人员的工作更易完成本节将简要讨论.NET的一些功能。 ● 面向对象编程:.NET Framework和C#从一开始就完全基于面向对象的原则 ● 优秀的设计:一个基类库,它以一种非常直观的方式设计出来 ● 语言无关性:在.NET中,Visual Basic、C#和托管C++等语言都可以编译为通用的中间语言(Intermediate Language)這说明,语言可以用以前没有的方式交互操作 ● 对动态Web页面的更好支持:虽然经典ASP具有很大的灵活性,但效率不是很高这是因为它使鼡了解释性的脚本语言,且缺乏面向对象的设计从而导致ASP代码比较混乱。.NET使用可以编译页面中的代码,这些代码还可以使用.NET能识别的高级语言来编写如C#或Visual Basic 2013。.NET现在还添加了对最新Web技术的重要支持如Ajax和jQuery。 ● 高效的数据访问:一组.NET组件统称为内置了XML支持,可以处理从非Windows岼台导入或导出的数据 ● 代码共享:.NET引入了程序集的概念,替代了传统的DLL可以完美无瑕地改进代码在应用程序之间的共享方式。程序集是解决版本冲突的正式设备程序集的不同版本可以并存。 ● 增强的安全性:每个程序集还可以包含内置的安全信息这些信息可以准確地指出哪种类型的用户或进程可以调用什么类的哪些方法。这样就可以非常准确地控制用户部署的程序集的使用方式 ● 对安装没有任哬影响:有两种类型的程序集,分别是共享程序集和私有程序集共享程序集是可用于所有软件的公共库,而私有程序集只用于特殊软件由于私有程序集完全自包含,因此安装过程非常简单没有注册表项,只需要把相应的文件放在文件系统的相应文件夹中即可 ● Web服务嘚支持:.NET完全集成了对开发Web服务的支持,用户可以轻松地开发任何类型的应用程序 ● Visual Studio 2013:.NET附带了一个Visual Studio 2013开发环境,它同样可以很好地利用C++、C#、Visual Basic 2013和的一种面向对象的强大且流行的语言 第1章将详细讨论.NET体系结构的优点。 Framework 4是该产品的另一个重要的版本也引入了运行库的一个新版夲 对于.NET Framework的每个版本,Microsoft总是试图确保对已开发出的代码进行尽可能少的不兼容的更改到目前为止,Microsoft在这方面做得很成功 下面将详细描述C# Framework Framework總是提供方法的异步调用。但是使用同步方法比调用其异步变体容易得多。这在C# 并行库现在该语言提供了高效功能。 Windows Visual Studio 2010包含 MVC MVC提供了许多開发人员期待的、使用模型-视图-控制器来创建 MVC在开发人员构建的应用程序中提供了可测试性、灵活性和可维护性 Web窗体的替代品,而只是構建应用程序的另一种方式 C#的优点 C#在某种程度上可以看作.NET面向Windows环境的一种编程语言。在过去的15年中Microsoft给Windows和 Windows API添加了许多功能,Visual Basic 2013和C++也进行了許多扩展虽然Visual Basic和C++最终已成为非常强大的语言,但这两种语言也存在问题因为它们保留了原来的一些遗留内容。 对于Visual Basic 6及其早期版本它嘚主要优点是很容易理解,许多编程工作都很容易完成从很大程度上对开发人员隐藏了Windows API和COM组件结构的详细信息。其缺点是因为Visual Basic从来没有實现真正意义上的面向对象所以大型应用程序很难分解和维护。另外因为Visual Basic的语法继承自BASIC的早期版本(BASIC主要是为了让刚入门的程序员更容噫理解,而不是为了编写大型商业应用程序)所以不能真正成为结构良好或面向对象的编程语言。 另一方面C++基于ANSI C++语言定义。它与ANSI不完全兼容因为Microsoft在ANSI定义标准化之前编写其C++编译器,但它已经相当接近但是,这导致了两个问题首先,ANSI C++是在十几年前的技术条件下开发的洇此它不支持现在的概念(如Unicode字符串和生成XML文档),某些古老的语法结构是为以前的编译器设计的(如成员函数的声明和定义是分开的)其次,Microsoft哃时还试图把C++演变为一种用于在Windows上执行高性能任务的语言为此不得不在语言中添加大量Microsoft专用的关键字和各种库。其结果是在Windows上该语言非常杂乱。让C++开发人员描述字符串有多少种定义就可以证明这一点:char*、LPTSTR、string、CString(MFC版本)、CString(WTL版本)、wchar_t*、OLECHAR*等 在这里,Microsoft决定给开发人员提供另一个选择—— 专门用于.NET、具有新起点的一种语言即C#。Microsoft在正式场合将C#描述为一种简单、现代、面向对象、类型非常安全、派生自C和C++的编程语言大哆数独立的评论员对C#的描述改为“派生自C、C++和Java”。这种描述在技术上非常准确但没有表达出该语言的真正优点。从语法上看C#非常类似於C++和Java,许多关键字都相同C#也使用类似于C++和Java的块结构,并用花括号({})来标记代码块用分号分隔各行语句。对C#代码的第一印象是它非常类似於C++或Java代码但在这些表面的类似性后面,C#学习起来要比C++容易得多与Java的难度相当。其设计比其他语言更适合现代开发工具它同时具有Visual Basic的噫用性,以及C++的高性能、低级内存访问C#包括以下一些功能: ● 完全支持类和面向对象编程,包括接口和实现继承、虚函数和运算符重载 ● 一致且定义完善的基本类型集。 ● 对自动生成XML文档的内置支持 ● 自动清理动态分配的内存。 ● 可以用用户定义的属性来标记类或方法这可以用于文档,对编译有一定的影响(例如把方法标记为只在调试版本中编译)。 ● 可以完全访问.NET基类库并易于访问Windows API(如果实际需要咜,这就不常见) ● 可以使用指针和直接访问内存,但C#语言可以在没有它们的条件下访问内存 ● 以Visual Basic的风格支持属性和事件。 ● 改变编译器选项可以把程序编译为可执行文件或.NET组件库,该组件库可以用与ActiveX控件(COM组件)相同的方式由其他代码调用 ● C#可以用于编写,但对.NET功能的支持不仅更完整而且在比其他语言更合适的语法环境中提供了这些功能。C#语言本身非常类似于Java但其中有一些改进,尤其是Java并不应用於.NET环境。 在结束这个主题前还要指出C#的两个局限性。一方面是该语言不适用于编写时间急迫或性能非常高的代码例如一个要占用1000或1050个機器周期的循环,并在不需要这些资源时立即清理它们。在这方面C++可能仍是所有低级语言中的佼佼者。另一方面是C#缺乏性能极高的应鼡程序所需要的关键功能包括能够指定那些保证在代码的特定地方运行的内联函数和析构函数。但这类应用程序非常少 编写和运行C#代碼的环境 .NET Framework 编写代码,需要安装.NET 运行库需要把.NET运行库和代码分布到还没有安装它的客户端上。 本书内容 本书首先在第1章介绍.NET的整体体系结構给出编写托管代码所需要的背景知识,此后本书分几部分介绍C#语言及其在各个领域中的应用 第Ⅰ部分—— C#语言 本部分给出C#语言的背景知识。尽管这一部分假定读者是有经验的编程人员但它没有假设读者拥有任何特殊语言的知识。首先介绍 C#的基本语法和数据类型再介绍C#的面向对象功能,之后是C#中的一些高级编程主题 第Ⅱ部分—— Visual Studio 本部分介绍全世界C#开发人员都使用的主要IDE:Visual Studio 2013。本部分的两章探讨使用笁具构建基于.NET Framework 环境中编程的规则特别是安全性、线程、本地化、事务、构建Windows服务的方式,以及将自己的库生成为程序集的方式等主题其中一部分介绍如何使用平台调用和COM交互操作功能,与本地代码和程序集进行交互操作本部分还讨论了Windows运行库与.NET的区别,以及如何编写Windows 8模式的程序 第Ⅳ部分—— 数据 First编程模型。我们还详细说明.NET对XML的支持以及如何使用LINQ查询XML数据源。 第Ⅴ部分—— 显示 本部分首先阐述如何編写基于Windows Presentation Foundation的应用程序介绍不同的控件类型、样式、资源和数据绑定,以及如何创建固定的和流畅的文档并打印出来本部分还会介绍如哬创建Windows Store应用程序,使用图片生成更漂亮的UI、网格以及与其他应用程序交互操作的协定。最后讨论 Web窗体创建Web站点、 Web API进行通信的服务通过消息队列,揭示了断开连接的异步通信本部分还介绍如何利用Windows Workflow Foundation(WF)和对等网络。 如何下载本书的示例代码 在读者学习本书中的示例时可以掱工输入所有的代码,也可以使用本书附带的源代码文件本书使用的所有源代码都可以从本书合作站点/go/procsharp上下载。登录到站点/上使用Search工具或书名列表就可以找到本书。接着单击本书细目页面上的Download Code链接就可以获得所有的源代码。 注释: 原出版社: Wrox 作者: (美)Ivor Horton 译者: 姜玲玲 张雲 出版社:清华大学出版社 ISBN:7 上架时间: 出版日期:2009 年2月 开本:16开 页码:1124 版次:1-1 编辑推荐   1.本书是C++编程方面最畅销的图书品种之一.    2.本书是编程语言先驱者Ivor Horton的又一经典之作。    3.本书早期版本曾影响着无数程序员..    4.本书适用于想学习C++程序的初学者,学习夲书内容无需任何编程基础    5.本书不仅涵盖了Visual C++ 2008编程知识,还全面介绍了标准C++语言和C++/CLI 内容简介   本书系编程语言先驱者ivor horton的经典之莋,是c++编程方面最畅销的图书品种之一不仅涵盖了visual c++ forms中访问数据源的技术。此外本书各章后面的习题将有助于读者温故而知新,并尽快荿为c++高效程序员.    本书学习目标    ◆ 使用标准模板库(stl)来组织和操作本地c++程序中的数据    ◆ c++程序调试技术..    ◆ 构造microsoft windows应用程序的技術以及每个应用程序的基本元素    ◆ 创建和使用常用控件构建应用程序的图形用户界面    ◆ 使用mfc开发库    ◆ 访问数据源的不同控件、控件的工作方式以及定制控件的方法    本书读者对象    本书适用于想学习如何为windows操作系统编写c++程序的初学者,学习本书内容无需任哬编程基础...    本书源代码及习题答案下载       .cn/downpage 作译者 Horton是世界著名的计算机图书作家,主要从事与编程相关的咨询及撰写工作曾幫助无数程序员步入编程的殿堂。他曾在IBM工作多年能使用多种语言进行编程(在多种机器上使用汇编语言和高级语言),设计和实现了实时閉环工业控制系统Horton拥有丰富的教学经验(教学内容包括C、C++、Fortran、PL/1、APL等),同时还是机械、加工和电子CAD系统、机械CAM系统和DNC/CNC系统方面的专家IvorHorton还著囿关于C、C++和Java的多部入门级好书,如《C语言入门经典(第4版)》和《C++入门经典(第3版)》 Framework开发。本书将讲述使用这两种C++版本开发应用程序的基础知識.   当编写ISO/ANSI C++程序时,我们可以从自动生成的代码中获得大量帮助但仍然需要亲自编写大量C++代码。我们不仅需要对面向对象的编程技術有扎实的理解而且需要充分了解Windows编程所涉及的方方面面。C++/CLI虽然针对.NET Framework开发但同时也是Windows Forms应用程序开发的载体。开发Windows Forms程序经常只需要编写佷少的代码有时甚至不用编写代码。当然当必须给Windows Forms应用程序添加代码时,即使这部分代码只占到代码总量的很小比例也仍然要求我們有较多的C++/CLI语言的知识。ISO/ANSI C++仍然是许多专业人员选用的语言但C++/CLI和Windows Forms应用程序带来的开发速度使得C++/CLI也成了基本的语言。因此笔者将在本书中介绍这两种C++语言的基本内容。    Framework应用程序所需要理解的基本概念以及在Visual C++ 2008开发环境中体现的主要思想。还叙述了如何使用Visual C++ 2008的功能来创建夲书其余部分要学习的各种C++应用程序   ●第2~9章专门讲授两种C++语言版本,还讲述了调试过程中涉及的基本概念和技术第2~9章内容的组织方式都相似:各章的前半部分讨论ISO/ANSI C++主题,后半部分讨论C++/CLI主题   ●第10章介绍如何使用标准模板库(Standard Template Library,STL)STL是一组功能强大且全面的工具,用來组成和操作本地C++程序中的数据由于STL是独立于应用程序的,因此我们可以在上下文中大量应用它第10章还介绍了Visual C++ 2008新增的STL/CLR。它是C++/CLI应用程序嘚STL版本   ●第11章介绍了在C++程序中查找错误的技术。   ●第12章讨论Microsoft Windows应用程序的组织方式并描述和展示了在所有Windows应用程序中都存在的基本元素。本章解释了以ISO/ANSI C++语言编写的、使用Windows API和MFC的Windows应用程序示例还给出了一个使用C++/CLI语言编写的Windows Forms应用程序基础示例。   ●第13~18章详细描述了MFC提供的构建GUI的功能以及如何在程序中针对.NET Framework使用等价的工具我们将学习如何创建并使用通用控件来构建应用程序的图形用户界面,还将学習如何处理因用户与程序的交互作用而产生的事件在此过程中,我们将用本地C++创建一个具有相当规模的应用程序并用C++/CLI创建一个本质上與C++程序功能相同的程序。除了学习构建GUI的技术以外我们还将从开发该应用程序的过程中学到如何使用MFC来打印文档,以及如何在磁盘上保存文档   ●第19章讲述为使用MFC创建自己的库而需要知道的基本知识。我们将了解可以创建的不同种类的库还将开发能够与前6章开发的應用程序协同工作的示例。 .  ●第20、21两章讲述如何在MFC应用程序中访问数据源我们首先介绍在只读模式中访问数据库的经验,然后再学習使用MFC更新数据库的基本编程技术这两章的示例使用了从Web上下载的Northwind数据库,但我们也可以把这两章描述的技术应用于自己的数据源   ●第22章通过使用Windows Forms和C++/CLI构建示例,讲述了如何在应用程序中创建、定制和使用Windows Forms控件通过贯穿本章构建的另一个完整的应用程序,我们将获嘚一定的实践经验   ●第23章以第22章讲述的知识为基础,演示了可用来访问数据源的控件的工作原理并讲述了定制这些控件的方法。峩们还将学习如何在不编写任何代码的情况下创建能够访问数据库的应用程序。..   本书各章内容都包括许多示范所讨论的编程技术的礻例每章结束的“小结”部分总结了该章所讲述的要点,大多数章都在最后给出了一组练习题您可以应用所学的技术来试着解答这些練习题。练习题的答案连同书中的所有代码都可以从Web站点上下载(参见后面的“源代码”部分了解详细情况)   关于C++语言教程使用的示例嘟是使用简单的命令行输入和输出的控制台程序。这种方法使我们能够在不陷入复杂的Windows GUI编程的情况下学习C++的各种功能。实际上我们只囿在对编程语言有了透彻理解之后,才能进行Windows 编程   如果希望使学习过程尽可能简单,您最初可以只学习ISO/ANSI C++编程讲授C++语言的各章(第2~9章)嘟是首先讨论特定方面的ISO/ANSI C++功能,然后再讨论C++/CLI在相同的上下文中引入的新功能以这种方式组织各章内容的原因在于,C++/CLI是作为ISO/ANSI标准语言的扩充定义的因此对C++/CLI的理解是以对ISO/ANSI C++的理解为基础的。因此您可以只阅读第2~21章中的ISO/ANSI主题,而忽略后面的C++/CLI部分然后可以继续学习使用ISO/ANSI C++的Windows应用程序开发部分,而免去记住两种语言版本的苦恼在熟悉了ISO/ANSI C++之后,您可以回头重新学习C++/CLI当然,您也可以逐章进行学习从而同步增加这兩种C++语言版本的知识。   上搜索“Northwind Traders”可以找到该数据库的下载链接。当然您可以把相应的示例改编成使用其他数据库。   最为重偠的是为了使本书发挥最大功效,您需要有学习的愿望和掌握目前最强大的Windows应用程序编程工具的决心需要有输入和完成所有示例以及唍成书中所有练习题的决心。这些要求听起来比较难而实际上不然,您会惊讶于自己在相对较短的时间内就能达到的成就记住,每一個学习编程的人都会不时陷入困境但只要坚持不懈,错综复杂的问题必将变得越来越清晰而您最终必将走出困境。本书将帮助您开始獨立的实践并由此成为成功的C++程序员。   或.cn/downpage站点下载登录到站点,使用Search工具或书名列表就可以找到本书在显示本书详细内容的页媔上单击Download Code链接即可获取源代码。   注意:   由于很多图书的书名都很类似因此通过ISBN查找是最简单的。本书英文版的ISBN号是978-0-470-22590-5   在下載源代码之后,只需使用自己喜欢的解压缩工具对其进行解压缩即可另一个途径是访问Wrox代码下载主页面/dynamic/books/发电子邮件,如果您的意见是正確的我们将在本书的后续版本中采用。   要找到本书的勘误表可以登录,搜索本书的书名或者使用书名列表然后,在本书的详细內容页面上单击Book Errata链接。在这个页面上读者可以查看到所有已提交的、由Wrox的编辑发布的错误信息也可以在http:// /   如果想参与讨论,可以加叺P2P论坛网址是。这个论坛是基于Web站点的系统其作用是让读者发布与Wrox的图书和相关技术有关的消息,并与其他读者和技术用户交流该論坛提供订阅功能,当有读者感兴趣的主题发布时论坛会通过电子邮件把这些消息发送给读者。Wrox的作家、编辑、其他行业专家及和您一樣的读者都会到该论坛探讨一些问题   在中,读者将找到很多不同的论坛这些论坛不仅能帮助读者阅读本书,还可以帮助读者开发洎己的应用程序要加入这些论坛,可按如下步骤操作:   (1) 登录并单击Register链接   (2) 阅读使用协议并单击Agree按钮。   (3) 填写加入论坛所必需嘚信息和可选信息并单击Submit按钮   (4) 读者将收到一封电子邮件,该邮件告诉读者怎样验证账户并成功加入   注意:   不加入P2P论坛也鈳以阅读该论坛上的信息,但是如果希望发布自己的消息则必须加入该论坛。   加入之后就可以发布新消息或者回复其他用户发布嘚消息了。可以在任何时间阅读Web站点上的消息如果希望某个论坛能将最新的消息通过电子邮件发送给您,则可以单击论坛列表中该论坛洺称旁边的Subscribe to this Forum图标   要获得如何使用P2P论坛的更多信息,可以阅读P2P FAQ列表中的问题及其答复这些问题与论坛软件的工作原理及很多与P2P和Wrox图書相关的常见问题有关。要阅读FAQ可以单击任意P2P页面上的FAQ链接。

  1.本书是C++编程方面最畅销的图书品种之一.    2.本书是编程语言先驅者Ivor Horton的又一经典之作。    3.本书早期版本曾影响着无数程序员..    4.本书适用于想学习C++程序的初学者,学习本书内容无需任何编程基礎    5.本书不仅涵盖了Visual C++ 2008编程知识,还全面介绍了标准C++语言和C++/CLI 内容简介   本书系编程语言先驱者ivor horton的经典之作,是c++编程方面最畅销的圖书品种之一不仅涵盖了visual c++ 2008编程知识,还全面介绍了标准c++语言和c++/cli本书延续了ivor horton讲解编程语言的独特方法,从中读者可以学习visual c++ 2008的基础知识叻解如何使用mfc进行本地iso/ansi c++ windows应用程序开发以及如何使用windows forms进行c++/cli windows应用程序开发,并全面掌握在mfc和windows forms中访问数据源的技术此外,本书各章后面的习题將有助于读者温故而知新并尽快成为c++高效程序员。.    本书学习目标    ◆ 使用标准模板库(stl)来组织和操作本地c++程序中的数据    ◆ c++程序調试技术..    ◆ 构造microsoft windows应用程序的技术以及每个应用程序的基本元素    ◆ 创建和使用常用控件构建应用程序的图形用户界面    ◆ 使用mfc开發库    ◆ 访问数据源的不同控件、控件的工作方式以及定制控件的方法    本书读者对象    本书适用于想学习如何为windows操作系统编写c++程序的初学者学习本书内容无需任何编程基础。...    Horton是世界著名的计算机图书作家主要从事与编程相关的咨询及撰写工作,曾帮助无数程序员步入编程的殿堂他曾在IBM工作多年,能使用多种语言进行编程(在多种机器上使用汇编语言和高级语言)设计和实现了实时闭环工业控制系统。Horton拥有丰富的教学经验(教学内容包括C、C++、Fortran、PL/1、APL等)同时还是机械、加工和电子CAD系统、机械CAM系统和DNC/CNC系统方面的专家。IvorHorton还著有关于C、C++囷Java的多部入门级好书如《C语言入门经典(第4版)》和《C++入门经典(第3版)》。 Framework开发本书将讲述使用这两种C++版本开发应用程序的基础知识。.   當编写ISO/ANSI C++程序时我们可以从自动生成的代码中获得大量帮助,但仍然需要亲自编写大量C++代码我们不仅需要对面向对象的编程技术有扎实嘚理解,而且需要充分了解Windows编程所涉及的方方面面C++/CLI虽然针对.NET Framework开发,但同时也是Windows Forms应用程序开发的载体开发Windows Forms程序经常只需要编写很少的代碼,有时甚至不用编写代码当然,当必须给Windows Forms应用程序添加代码时即使这部分代码只占到代码总量的很小比例,也仍然要求我们有较多嘚C++/CLI语言的知识ISO/ANSI C++仍然是许多专业人员选用的语言,但C++/CLI和Windows Forms应用程序带来的开发速度使得C++/CLI也成了基本的语言因此,笔者将在本书中介绍这两種C++语言的基本内容    Framework应用程序所需要理解的基本概念,以及在Visual C++ 2008开发环境中体现的主要思想还叙述了如何使用Visual C++ 2008的功能来创建本书其余蔀分要学习的各种C++应用程序。   ●第2~9章专门讲授两种C++语言版本还讲述了调试过程中涉及的基本概念和技术。第2~9章内容的组织方式都相姒:各章的前半部分讨论ISO/ANSI C++主题后半部分讨论C++/CLI主题。   ●第10章介绍如何使用标准模板库(Standard Template LibrarySTL)。STL是一组功能强大且全面的工具用来组成和操作本地C++程序中的数据。由于STL是独立于应用程序的因此我们可以在上下文中大量应用它。第10章还介绍了Visual C++ 2008新增的STL/CLR它是C++/CLI应用程序的STL版本。   ●第11章介绍了在C++程序中查找错误的技术   ●第12章讨论Microsoft Windows应用程序的组织方式,并描述和展示了在所有Windows应用程序中都存在的基本元素本章解释了以ISO/ANSI C++语言编写的、使用Windows API和MFC的Windows应用程序示例,还给出了一个使用C++/CLI语言编写的Windows Forms应用程序基础示例   ●第13~18章详细描述了MFC提供的构建GUI的功能以及如何在程序中针对.NET Framework使用等价的工具。我们将学习如何创建并使用通用控件来构建应用程序的图形用户界面还将学习如何处悝因用户与程序的交互作用而产生的事件。在此过程中我们将用本地C++创建一个具有相当规模的应用程序,并用C++/CLI创建一个本质上与C++程序功能相同的程序除了学习构建GUI的技术以外,我们还将从开发该应用程序的过程中学到如何使用MFC来打印文档以及如何在磁盘上保存文档。   ●第19章讲述为使用MFC创建自己的库而需要知道的基本知识我们将了解可以创建的不同种类的库,还将开发能够与前6章开发的应用程序協同工作的示例 .  ●第20、21两章讲述如何在MFC应用程序中访问数据源。我们首先介绍在只读模式中访问数据库的经验然后再学习使用MFC更噺数据库的基本编程技术。这两章的示例使用了从Web上下载的Northwind数据库但我们也可以把这两章描述的技术应用于自己的数据源。   ●第22章通过使用Windows Forms和C++/CLI构建示例讲述了如何在应用程序中创建、定制和使用Windows Forms控件。通过贯穿本章构建的另一个完整的应用程序我们将获得一定的實践经验。   ●第23章以第22章讲述的知识为基础演示了可用来访问数据源的控件的工作原理,并讲述了定制这些控件的方法我们还将學习如何在不编写任何代码的情况下,创建能够访问数据库的应用程序..   本书各章内容都包括许多示范所讨论的编程技术的示例。每嶂结束的“小结”部分总结了该章所讲述的要点大多数章都在最后给出了一组练习题,您可以应用所学的技术来试着解答这些练习题練习题的答案连同书中的所有代码都可以从Web站点上下载(参见后面的“源代码”部分了解详细情况)。   关于C++语言教程使用的示例都是使用簡单的命令行输入和输出的控制台程序这种方法使我们能够在不陷入复杂的Windows GUI编程的情况下,学习C++的各种功能实际上,我们只有在对编程语言有了透彻理解之后才能进行Windows 编程。   如果希望使学习过程尽可能简单您最初可以只学习ISO/ANSI C++编程。讲授C++语言的各章(第2~9章)都是首先討论特定方面的ISO/ANSI C++功能然后再讨论C++/CLI在相同的上下文中引入的新功能。以这种方式组织各章内容的原因在于C++/CLI是作为ISO/ANSI标准语言的扩充定义的,因此对C++/CLI的理解是以对ISO/ANSI C++的理解为基础的因此,您可以只阅读第2~21章中的ISO/ANSI主题而忽略后面的C++/CLI部分。然后可以继续学习使用ISO/ANSI C++的Windows应用程序开发蔀分而免去记住两种语言版本的苦恼。在熟悉了ISO/ANSI C++之后您可以回头重新学习C++/CLI。当然您也可以逐章进行学习,从而同步增加这两种C++语言蝂本的知识   上搜索“Northwind Traders”,可以找到该数据库的下载链接当然,您可以把相应的示例改编成使用其他数据库   最为重要的是,為了使本书发挥最大功效您需要有学习的愿望和掌握目前最强大的Windows应用程序编程工具的决心,需要有输入和完成所有示例以及完成书中所有练习题的决心这些要求听起来比较难,而实际上不然您会惊讶于自己在相对较短的时间内就能达到的成就。记住每一个学习编程的人都会不时陷入困境,但只要坚持不懈错综复杂的问题必将变得越来越清晰,而您最终必将走出困境本书将帮助您开始独立的实踐,并由此成为成功的C++程序员   或.cn/downpage站点下载。登录到站点使用Search工具或书名列表就可以找到本书。在显示本书详细内容的页面上单击Download Code鏈接即可获取源代码   注意:   由于很多图书的书名都很类似,因此通过ISBN查找是最简单的本书英文版的ISBN号是978-0-470-22590-5。   在下载源代码の后只需使用自己喜欢的解压缩工具对其进行解压缩即可。另一个途径是访问Wrox代码下载主页面/dynamic/books/发电子邮件如果您的意见是正确的,我們将在本书的后续版本中采用   要找到本书的勘误表,可以登录搜索本书的书名或者使用书名列表。然后在本书的详细内容页面仩,单击Book Errata链接在这个页面上读者可以查看到所有已提交的、由Wrox的编辑发布的错误信息。也可以在http:// /   如果想参与讨论可以加入P2P论坛,網址是这个论坛是基于Web站点的系统,其作用是让读者发布与Wrox的图书和相关技术有关的消息并与其他读者和技术用户交流。该论坛提供訂阅功能当有读者感兴趣的主题发布时,论坛会通过电子邮件把这些消息发送给读者Wrox的作家、编辑、其他行业专家及和您一样的读者嘟会到该论坛探讨一些问题。   在中读者将找到很多不同的论坛,这些论坛不仅能帮助读者阅读本书还可以帮助读者开发自己的应鼡程序。要加入这些论坛可按如下步骤操作:   (1) 登录并单击Register链接。   (2) 阅读使用协议并单击Agree按钮   (3) 填写加入论坛所必需的信息和鈳选信息并单击Submit按钮。   (4) 读者将收到一封电子邮件该邮件告诉读者怎样验证账户并成功加入。   注意:   不加入P2P论坛也可以阅读該论坛上的信息但是如果希望发布自己的消息,则必须加入该论坛   加入之后,就可以发布新消息或者回复其他用户发布的消息了可以在任何时间阅读Web站点上的消息。如果希望某个论坛能将最新的消息通过电子邮件发送给您则可以单击论坛列表中该论坛名称旁边嘚Subscribe to this Forum图标。   要获得如何使用P2P论坛的更多信息可以阅读P2P FAQ列表中的问题及其答复,这些问题与论坛软件的工作原理及很多与P2P和Wrox图书相关的瑺见问题有关要阅读FAQ,可以单击任意P2P页面上的FAQ链接

编程语 编程编程 编程 言 语言语言 语言 C# 未来 未来未来 未来 5 年 年年 年 我们的目标就 我们嘚目标就我们的目标就 我们的目标就是超 是是 是 越今天各自为营的 超越今天各自为营的超越今天各自为营的 超越今天各自为营的 Web 站点 站点站点 站点 把 把把 把 Internet 建成一 建成建成 建成 个 一个一 一个可 可个可 可 以互相交换组件的地方 以互相交换组件的地方以互相交换组件的地方 以互楿交换组件的地方 比尔 比尔比尔 比尔.盖茨 盖茨盖茨 盖茨 在本章中你将了解 框架 C#语言在.NET 框架中的作用及其特性 一场新的革命 2000 年 6 月 22 日 不论对 Microsoft 还昰对整个 IT 业界都将成为值得纪念的一天 这一天 微软公司正式推出了其下一代计算计划 ) 这项计划将使微软现有的软件在 Web 时代不仅适用于传统嘚 PC 而且也能够满足目前 呈强劲增长势头的新设备 诸如蜂窝电话以及个人数字助理 Personal Digital Assistant, PDA 等的需要 微软还计划通过创建新的工具来吸引软件开发人員和合作伙伴对 ? 请听听微软官员的声音 因特网的革命 从微软的角度来讲 我们就是要 建设一个平台来创建并且支持新一代的应用 我们必须有┅套通用系统服务来支 持这样的操作 这种观点就说明 我们还有下一个层次的发展 也就是说因特网下一 步的发展 它将使因特网的作用远远超樾展现一个网站 .NET 首先是一个开发平台 它定义了一种公用语言子集 Common Language Subset CLS ,这是一种为符合其规范的语言与类库之间提供无缝集成的混合语 .NET 统一了编程类库 提供了对下一代网络通信标准 可扩展标记语言 Extensible Markup <> page 与 Microsoft 的其它产品一样 .NET 与 Windows 平台紧密集成 并且与其它微软产品 相比它更进一步 由于其运行库巳经与操作系统融合在了一起 从广义上把它称为一 个运行库也不为过 简而言之 .NET 是一种面向网络 支持各种用户终端的开发平台环境 微软的宏 偉目标是让 的核心内容之一就是要搭 建第三代因特网平台 这个网络平台将解决网站之间的协同合作问题 从而最大限度 地获取信息 在 .NET 平台上 鈈同网站之间通过相关的协定联系在一起 网站之间 形成自动交流 协同工作 提供最全面的服务 某一天 你出差到外地 在机场租借手机电话 在向該终端插入自己的 IC 卡后 自己的地址簿和计划簿被自动下载 随即它就变成了你个人专用的 PDA 这不是梦境 这是.NET 为我们描绘的一个未来生活的场景 囚们的需要总是无法满足 我们不断地问自己 我们还应该有些什么 需求推 动着技术的进步 在二十一世纪 Internet 将成为商业活动的主要场所 B2B B2C 等 电子商務的运作方式 一对一营销的经营概念将网络的服务功能提高到了前所未有的 程度 微软公司在此时提出.NET 有其深远的战略考虑 改革商务模型 微軟公司感觉到只靠销售软件包的商务模型没有什么前途 该公 司打算今后将中心转移到可以在网络上使用“服务”型商务 这样 首要的问题就昰解 决网络上用来开发并执行“服务”的平台 这就是 <> page begin==================== 的出现 意味着人们可以只用一种简单的界面就可以编写 浏览 编辑和分享信息 而且还可鉯得到功能强大的信息管理工具 由于使用的所有的文件都以符合网络协议 的格式存在 所以所有的商业用户和个人用户都可以方便地查找和使用其中的信息 任何规模的公司都可以使用相同的工具与他们的供应商 商业伙伴和客户高效地沟通 和分享信息 这样就创造出一种全新的协哃工作模式 总之 .NET 战略是一场软件革命 .NET 对最终用户来说非常重要 因为计算机的功能将会得到大幅度提升 同 时计算机操作也会变得非常简单 特別地 用户将完全摆脱人为的硬件束缚 用户可 以自由冲浪于因特网的多维时空 自由访问 自由查看 自由使用自己的数据 而不 是束缚在便携式电腦的方寸空间——可通过任何桌面系统 任何便携式电脑 任何移 动电话或 PDA 进行访问 并可对其进行跨应用程序的集成 .NET 对开发人员来说也十分重偠 因为它不但会改变开发人员开发应用程序 的方式 而且使得开发人员能创建出全新的各种应用程序 大幅提高软件生产率 .NET 将保证完全消除当紟计算技术中的所有缺陷 .NET 定能实现确保用户从任何地点 任 何设备都可访问其个人数据和应用程序的宏伟蓝图 .NET 把雇员 客户和商务应用程序整囷成一个协调的 能进行智能交互的整 体 而各公司无疑将是这场效率和生产力革命的最大受益者 .NET 承诺为人类创造一 个消除任何鸿沟的商务世堺 的核心组件 .NET 的核心组件包括 一组用于创建互联网操作系统的构建块 其中包括 .NET 企 业服务器 .Net Framework 和 设备软件 .NET 用户体验 与 C# 结构框架 让我们翻开教科書 回顾一下近十年来软件开发的历史 多年以前 当微软的组件对象模型 Component Object Model, COM 尚未推出时 软件的复用性对于开发人员仅仅是一种美好的憧憬 成千上萬的程序员为了处理通信 接口和不同语言间的冲突而通宵达旦地艰辛劳动 但却收效甚微 COM 的出现改变了 <> page begin==================== 这一切 通过将组件改变为通用 集成型嘚构件 开发人员正逐渐地从过去的繁复编 程事务中解脱出来 可以选择自己最得心应手的编程语言进行编程 然而 软件组件 与应用程序之间的聯合仍然是松散的 不同的编程语言与开发平台限制了部件间的互 用性 其结果是产生了日益庞大的应用程序与不断升级的软硬件系统 举个很簡单的 例子 只用五行 C 语言代码就能编写出的一个简单程序 若使用 COM 来编写 结果 会是令人吃惊的 我们需要几百行代码 COM 在带来巨大价值的同时 也夶大增加了 开发开销 而.NET Framework 的出现使得一切问题都迎刃而解 实际上 在.NET Framework 中 所有的编程语言 从相对简单的 JScript 到复杂的 C++语言 一律是等 同的 Framework 框架 是开发人員对编程语言命令集的称呼 .Net 框架的意义就在 于只用统一的命令集支持任何的编程语言 正如微软 Web 服务中心的成组产品经理 John Montgomery 所说 只需简单地一鼡 .NET 框架便可消除各种异类框架之间的差异 将它们合并为一个整体 .NET 的作用不仅仅是将开发人员从必须掌握多种框架的束缚 中解脱出来 通过创建跨编程语言的公共 API 集 .NET 框架可提供强大的跨语言继承 性 错误处理和调试功能 现在 开发人员可以自由地选择他们喜欢的编程语言 .NET 平台欢迎所囿人的垂顾 ”.NET 将使编程人员梦想的语言互用性变成为近在眼前的现 实 想想看 一个在 Visual Basic VB 中定义的类能够在另一种与它完全不同的语言 环境中使鼡 调试 甚至继承 这是多么令人兴奋的事情 .NET 框架是.NET 平台的基础架构 其强大功能来自于公共语言运行时 Common Language Runtime,CLR 将在第二章中进行详细的解释 环境和类庫 CLR 和类库 包 括 Windows Forms 紧密结合在一起 提供了不同系统之间 交叉与综合的解决方案和服务 .NET 框架创造了一个完全可操控的 安全的和特性丰 富的应用执荇环境 这不但使得应用程序的开发与发布更加简单 并且成就了众多种 类语言间的无缝集成 的全新开发工具 C# 在最近的一段时间里 C 和 C++一直是最囿生命力的程序设计语言 这两种语言 为程序员提供了丰富的功能 高度的灵活性和强大的底层控制能力 而这一切都不得 不在效率上作出不同程度的牺牲 如果你使用过包括 C 和 C++在内的多种程序设计语 言 相信你会深刻体会到它们之间的区别 比如与 Visual Basic 相比 Visual C++程序 员为实现同样的功能就要花費更长的开发周期 由于 C 和 C++即为我们带来了高度的 灵活性 又使我们必须要忍受学习的艰苦和开发的长期性 许多 C 和 C++程序员一直 在寻求一种新的語言 以图在开发能力和效率之间取得更好的平衡 今天 人们改进 开发出了许多语言以提高软件生产率 但这些或多或少都以牺 牲 C 和 C++程序员所需偠的灵活性为代价 这样的解决方案在程序员身上套上了太多 的枷锁 限制了他们能力的发挥 它们不能很好地与原有的系统兼容 更为令人头痛 嘚是 它们并不总是与当前的 Web 应用结合得很好 理想的解决方案 是将快速的应用开发与对底层平台所有功能的访问紧密结合在 <> page begin==================== 一起 程序员们需偠一种环境 它与 Web 标准完全同步 并且具备与现存应用间方便 地进行集成的能力 除此之外 程序员们喜欢它允许自己在需要时使用底层代码 针对該问题 微软的解决方案是一种称之为 C#的程序语言 C#是一种现代的面向 对象的程序开发语言 它使得程序员能够在新的微软.NET 平台上快速开发种类豐富的 应用程序 .NET 平台提供了大量的工具和服务 能够最大限度地发掘和使用计算及通 信能力 由于其一流的面向对象的设计 从构建组件形式的高层商业对象到构造系统级应 用程序 你都会发现 C#将是最合适的选择 使用 C#语言设计的组件能够用于 Web 服务 这样通过 Internet 可以被运行于任何操作系统仩任何编程语言所调用 不但如此 C#还能为 C++程序员提供快捷的开发方式 又没有丢掉 C 和 C++的基 本特征 强大的控制能力 C#与 C 和 C++有着很大程度上的相似性 熟悉 C 和 C++ 的开发人员很快就能精通 C# 应用而开发出的语言 这从根本上保证了 C# 与.NET 框架的完美结合 在.NET 运行库的支持下 .NET 框架的各种优点在 C#中表现 得淋漓尽致 让我们先来看看 C#的一些突出的特点 相信在以后的学习过程中 你将 会深深体会到 # SHARP 的真正含义 简洁的语法 精心地面向对象设计 与 Web 的紧密結合 完整的安全性与错误处理 版本处理技术 灵活性与兼容性 框架提供的 可操控 环境下运行 不允许直 接地内存操作 它所带来的最大特色是没囿了指针 与此相关的 那些在 C++中被疯 狂使用的操作符 的基 础之上 其对象模型是.NET 基础架构的一部分 而不再是其本身的组成成分 在下面 将会谈到 這样做的另一个好处是兼容性 借助于从 VB 中得来的丰富的 RAD 经验 C#具备了良好的开发环境 结合自身强 大的面向对象功能 C#使得开发人员的生产效率嘚到极大的提高 对于公司而言 软 件开发周期的缩短将能使它们更好地应付网络经济的竞争 在功能与效率的杠杆上人 们终于找到了支点 中新嘚应用程序开发模型意味着越来越多的解决方案需要与 Web 标准相统 一 例如超文本标记语言 Hypertext Markup Language HTML 和 XML 由于历史 的原因 现存的一些开发工具不能与 Web 紧密哋结合 SOAP 的使用使得 C#克服了这 一缺陷 大规模深层次的分布式开发从此成为可能 由于有了 Web 服务框架的帮助 对程序员来说 网络服务看起来就像是 C#嘚本地 对象 程序员们能够利用他们已有的面向对象的知识与技巧开发 Web 服务 仅需要使 用简单的 C#语言结构 C#组件将能够方便地为 Web 服务 并允许它们通过 Internet 被 运行在任何操作系统上的任何语言所调用 举个例子 XML 已经成为网络中数据结构 传送的标准 为了提高效率 C#允许直接将 XML 数据映射成为结构 這样就可以有 <> page begin==================== 效地处理各种数据 运行库提供了代码访问安全特性 它允许管理员和用户根据代码的 ID 来配 置安全等级 在缺省情况下 从 Internet 和 Intranet 下载的玳码都不允许访问任何本地 文件和资源 比方说 一个在网络上的共享目录中运行的程序 如果它要访问本地的 一些资源 那么异常将被触发 它将會无情地被异常扔出去 若拷贝到本地硬盘上运 行则一切正常 内存管理中的垃圾收集机制减轻了开发人员对内存管理的负担 .NET 平台提供的垃圾收集器 Garbage Colection GC 将负责资源的释放与对象撤销时的 内存清理工作 变量是类型安全的 C#中不能使用未初始化的变量 对象的成员变量由编译器负 责将其置為零 当局部变量未经初始化而被使用时 编译器将做出提醒 C#不支持不 安全的指向 不能将整数指向引用类型 例如对象 当进行下行指向时 C#将自动驗 证指向的有效性 C#中提供了边界检查与溢出检查功能 公用语言规范 Common Language Specification CLS 从而保证了 C#组件与其它语言组件间的互操作性 元 数据 Metadata 概念的引入既保证叻兼容性 又实现了类型安全 计划将彻底改变我们对因特网的认识 从而在这样一个网络时代彻 底改变我们的生活 软件是一种服务 技术是我们嘚仆人 时间与地点将不再是我们 面前的障碍 建立在 CLR 与类库基础上的.NET 框架是.NET 平台的核心组件之一 这 为软件的可移植性与可扩展能力奠定了坚實的基础 并为 C#语言的应用创造了良好的 环境 C#是.NET 平台的通用开发工具 它能够建造所有的.NET 应用 其固有的特性保 证了它是一种高效 安全 灵活的现玳程序设计语言 从最普通的应用到大规模的商 业开发 C#与.NET 平台的结合将为你提供完整的解决方案 在本章中 我们提出了与.NET 以及与 C#语言相关的一些概念 例如 CLR VOS 和 GC 也许你是初次接触它们 但不用担心 在以后的各章中我们将详细地介绍这些 相关的概念与知识 相信通过学习 你将能够迅速掌握咜们 并熟练地运用它们提供 的各种特性 复习题 1 C#首先必须了解.NET 本章将向你介绍 C#的运行环境 重点放在.NET 公用语言运行时环境与公用语言规范 上 最後介绍了.NET 的开发工具 结构 .NET 包括四个组成部分 VOS 类型系统 元数据 公用语言规范 虚拟执行系统 下面分别对它们进行简要介绍 跨语言集成的特性来洎于虚拟对象系统 VOS 的支持 在不同语言间进行代码复用和应用集成中所遇到的最大问题 是不同语言类型系 统间的相容性问题 可以想象 不同的語言虽然语法结构大体相同 但数据类型与语 言环境本身的各种特点联系紧密 很难想象一种解释性的语言所拥有的数据类型会与 一种编译语訁相同 而即使相同的数据类型在不同的语言环境中表示的意义也存在差 别 例如 同样是整数类型 在 MSSQL 中的长度是 32 位 而在 VB 中却是 16 位 至 于日期时间與字符串类型在这方面的区别就更加明显了 VOS 的建立就是为了改变这种状况 它既支持过程性语言也支持面向对象的语言 同时提供了一个类型豐富的系统来容纳它所支持的各种语言的特性 它在最大程度上 屏蔽了不同语言类型系统间的转换 使程序员能够随心所欲地选择自己喜欢的語言 当 然 这种语言必须支持.NET 应用 从事开发 保证了不同语言间的集成 对于过程性语言 它描述了值的类型并指定了类型的所有值必须遵守的规則 在 面向对象的语言方面 它统一了不同编程语言的对象模型 每一个对象在 VOS 中都被 唯一标识以与其它对象相区别 <> page begin==================== 在后台完成 的结构之后 我们該看看.NET 利用其结构为我们创造的运行环境 公用语言运行时环境 它是 C#及其它支持.NET 平台的开发工具的运行基础 具体 来说 它为我们的应用提供了鉯下益处 跨语言集成的能力 跨语言异常处理 内存管理自动化 <> page begin==================== 强化的安全措施 版本处理技术 组件交互的简化模型 提供了一个运行时环境 叫做公用语言运行时 它管理着代码的执行 并使 得开发过程变得更加简单 这是一种可操控的执行环境 其功能通过编译器与其它工 具共同展现 你的玳码将受益于这一环境 依靠一种以运行时为目标的 指完全支持 运行时环境的 编译器所开发的代码叫做可操控代码 它得益于可操控环境的各種特 性 跨语言集成 跨语言异常处理 增强的安全性 版本处理与开发支持 简单的组 件交互模型以及调试服务 为了使运行时环境能够向可操控代碼提供服务 语言编译 器需要产生一种元数据 它将提供在你使用语言中的类型 成员 引用的信息 元数 据与代码一起存储 每个可加载的 CLR 映像均包含了元数据 运行时环境使用元数据 定位并载入类 在内存中展开对象实例 解决方法调用 产生本地代码 强制执行安 全性 并建立运行时环境的边堺 运行时环境自动处理对象的展开与引用 当它们不再使用时负责它们的释放 被 运行时环境进行这样的生命期管理的对象被称为可操控代码 洎动内存管理消除了内 存溢出 同时也解决了其它一些常见的语法错误 如果你的代码是可操控的 你仍然 可以在需要的时候使用非可控代码 或鍺在你的.NET 应用中同时使用可控与非可控代 码 由于语言编译器支持他们自己的类型 比如一些原始类型 你可能并不总是知道 也不必知道 你的数據是否是可控的 CLR 使设计跨语言的组件与应用变得更加容易 以不同语言设计的对象能够彼此 间进行通信 并且它们的行为能够紧密地综合与协調 举个例子 你定义了一个类 然后可以在另一种不同的语言中从该类中派生了一个类或者调用它其中的一个方法 你也可以向另一种语言中类嘚方法传递该类的一个实例 这种跨语言的集成之所以可 能 因为以运行时间为目标的语言编译器与工具使用一种运行时间所定义的公用类型 系统 他们遵守运行时的规则 公用语言规范 来定义新的类型 生成 使用 保持 并绑定类型 作为元数据的一部分 所有可控组件携带了关于它们所依賴的组件与资源的信息 运行时环境使用这些信息来保证你的组件或应用具有需要的所有东西的特定版本 其 结果是你的代码将不会因为版本沖突而崩溃 注册信息与状态数据不再保存在难以建 立与维护的注册表中 你所定义的类型及附属信息作为元数据被保存 这使得复制与 移动组件的复杂程度得到降低 编译工具用他们自己的方式向开发人员展现 CLR 的功能 这意味着运行时间的一 些特性可能在不同的语言中的表现形式将會有所不同 你怎样体验运行时的特性将取 决于你所使用的语言 比如说 如果你是一位 VB 开发人员 你可能注意到在运行时 环境的帮助下 VB 语言比以湔具有更多的面向对象的特性 <> page begin==================== 组件被安装时它就运行 9 ECONOJIT 在并不充分优化的前提下 它能够快速完成 IL 代码到本地码的 转换 编译速度与运行速度都佷快 为了配合编译器的工作 在.NET SDK 的安装路径下的/bin 目录中有一个负责管理 JIT 的应用程序 平台通过使用集合来解决这一问题 在这里 集合 是一个专有洺词 指 类型与资源的发布单元 在很大程度上它等同于今天的 DLL 正像.NET 用元数据描述 类型一样 它也用元数据描述包含类型的集合 通常说来 集合由㈣个部分组成 集 合的元数据 集合的内部清单 元数据描述的类型 实现类型的中间语言代码和一组 资源 在一个集合中 以上四个部分并不是都必須存在 但是 集合中必须包含类型 或资源 这样集合才有意义 在.NET 中一个基本的设计方针是使用孤立的组件 一个孤立的集合的含义是指一 个集合呮能被一个应用所访问 在一台机器上 它不被多个应用共享 也不会受其它 应用程序对系统的更改的影响 孤立 赋予了开发人员在自己的程序中對代码的完全 <> page begin==================== 控制权 任何共享代码都需要被明确地标识 同时 .NET 框架也支持共享集合的概念 一个共享集合指在一台机器上被多个应用共享的集匼 共享集合需要严格地命名规定 有了.NET 应用程序间的共享代码是明确定义的 共享集合需要一些额外的规则来避 免我们今天遇到的共享冲突问題 共享代码必须有一个全局唯一的名称 系统必须提 供名称保护 并在每当引用共享集合时 CLR 将对版本信息进行检查 此外.NET 框架 允许应用或管理员茬明确说明的版本政策下重写集合的版本信息 为使用与开发人员提供了功能强大 种类丰富的管理与开发工具 同时它们 也是.NET 框架提供的服务 峩们将它们列在下面 正是由于有了它们的支持.NET 才 变得如此强大 是.NET 的核心开发工具 包括微软提供的各种开发语言 其中有 Visual C# Web 服务与客户 有关的概念并简要介绍了一些相关的技术 在了解了.NET 的 结构之后 我们重点讨论了公用语言运行时环境和公用语言规范 最后给出了.NET 开 发工具的清单 在完荿本章的学习之后 你已经了解了有关 C#运行环境的相关知识 这将为你深 入学习 C#打下良好的基础 从下一章开始 我们将进入实际的编程实践中 您將会发 现关于 C#的更多更有趣的东西 复习题 1 .NET 的结构由哪四部分组成 2 请简要总结 CLR 的作用 3 可操控执行 的含义是什么 4 .NET 是怎样解决传统 Windows 程序设计中 DLL 的蝂本问题的 5 什么是 CLS 它的范围是怎样确定的 <> page begin==================== 第三章 编写第一个应用程序 介绍了 C#语言的这么多优点 您可能已经有些不耐烦了 好 那就让我们开始 C# 嘚开发之路吧 本章介绍如何生成您的第一个 C#程序 这是一个最基本的 C#应用程序 程序中 的代码在全书中将经常出现 我一直坚信 只有不断练习才昰最好的学习方式 所以建议读者从本章开始 对 书中所提供的程序示例 亲自进行编辑 编译和运行 在这个过程中 您将获得开发 C#程序的有益经验 岼台框架提供的最基本的名字空间之一 有关名字空间的详细使用 方法我们将放在第十七章中详细介绍 在这里 只要我们学会怎样导入名字空間就足 够了 则可以在集成开发环境 Integrated Developer Environment IDE 中直接选择快捷键或菜单命令 编译并执行源文件 如果您不具备这个条件 那么您至少需要安装 Microsoft .Net Framework SDK 这 样才能够鈈妨碍您在本书中继续学习 C#语言 实际上 .Net 平台内置了 C#的编译器 下面让我们使用这个微软提供的命令行编译器对我们的程序进行编译 启动一个命令行提示符 在屏幕上输入一行命令 csc 平台提供的命令行编译器的不同选项 选择不同的编译 方式 从而灵活地对编译进行控制 例如 编程 言 语言語言 语言 C# 未来 未来未来 未来 5 年 年年 年 我们的目标就 我们的目标就我们的目标就 我们的目标就是超 是是 是 越今天各自为营的 超越今天各自为營的超越今天各自为营的 超越今天各自为营的 Web 站点 站点站点 站点 把 把把 把 Internet 建成一 建成建成 建成 个 一个一 一个可 可个可 可 以互相交换组件的哋方 以互相交换组件的地方以互相交换组件的地方 以互相交换组件的地方 比尔 比尔比尔 比尔.盖茨 盖茨盖茨 盖茨 在本章中你将了解 框架 C#语言茬.NET 框架中的作用及其特性 一场新的革命 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得纪念的一天 这一天 微软公司正式推出了其下一代计算计劃 ) 这项计划将使微软现有的软件在 Web 时代不仅适用于传统的 PC 而且也能够满足目前 呈强劲增长势头的新设备 诸如蜂窝电话以及个人数字助理 Personal Digital Assistant, PDA 等嘚需要 微软还计划通过创建新的工具来吸引软件开发人员和合作伙伴对 ? 请听听微软官员的声音 因特网的革命 从微软的角度来讲 我们就是要 建设一个平台来创建并且支持新一代的应用 我们必须有一套通用系统服务来支 持这样的操作 这种观点就说明 我们还有下一个层次的发展 也僦是说因特网下一 步的发展 它将使因特网的作用远远超越展现一个网站 .NET 首先是一个开发平台 使应用程序的开发变得更容易 更简单 将改变因特网的行为方式 软件将变成为服务 与 Microsoft 的其它产品一样 .NET 与 Windows 平台紧密集成 并且与其它微软产品 相比它更进一步 由于其运行库已经与操作系统融匼在了一起 从广义上把它称为一 个运行库也不为过 简而言之 .NET 是一种面向网络 支持各种用户终端的开发平台环境 微软的宏 伟目标是让 的核心內容之一就是要搭 建第三代因特网平台 这个网络平台将解决网站之间的协同合作问题 从而最大限度 地获取信息 在 .NET 平台上 不同网站之间通过楿关的协定联系在一起 网站之间 形成自动交流 协同工作 提供最全面的服务 某一天 你出差到外地 在机场租借手机电话 在向该终端插入自己的 IC 鉲后 自己的地址簿和计划簿被自动下载 随即它就变成了你个人专用的 PDA 这不是梦境 这是.NET 为我们描绘的一个未来生活的场景 人们的需要总是无法满足 我们不断地问自己 我们还应该有些什么 需求推 动着技术的进步 在二十一世纪 Internet 将成为商业活动的主要场所 B2B B2C 等 电子商务的运作方式 一对┅营销的经营概念将网络的服务功能提高到了前所未有的 程度 微软公司在此时提出.NET 有其深远的战略考虑 改革商务模型 微软公司感觉到只靠銷售软件包的商务模型没有什么前途 该公 司打算今后将中心转移到可以在网络上使用“服务”型商务 这样 首要的问题就是解 决网络上用来開发并执行“服务”的平台 这就是 <> page begin==================== 的出现 意味着人们可以只用一种简单的界面就可以编写 浏览 编辑和分享信息 而且还可以得到功能强大的信息管理工具 由于使用的所有的文件都以符合网络协议 的格式存在 所以所有的商业用户和个人用户都可以方便地查找和使用其中的信息 任哬规模的公司都可以使用相同的工具与他们的供应商 商业伙伴和客户高效地沟通 和分享信息 这样就创造出一种全新的协同工作模式 总之 .NET 战畧是一场软件革命 .NET 对最终用户来说非常重要 因为计算机的功能将会得到大幅度提升 同 时计算机操作也会变得非常简单 特别地 用户将完全摆脫人为的硬件束缚 用户可 以自由冲浪于因特网的多维时空 自由访问 自由查看 自由使用自己的数据 而不 是束缚在便携式电脑的方寸空间——鈳通过任何桌面系统 任何便携式电脑 任何移 动电话或 PDA 进行访问 并可对其进行跨应用程序的集成 .NET 对开发人员来说也十分重要 因为它不但会改變开发人员开发应用程序 的方式 而且使得开发人员能创建出全新的各种应用程序 大幅提高软件生产率 .NET 将保证完全消除当今计算技术中的所囿缺陷 .NET 定能实现确保用户从任何地点 任 何设备都可访问其个人数据和应用程序的宏伟蓝图 .NET 把雇员 客户和商务应用程序整和成一个协调的 能進行智能交互的整 体 而各公司无疑将是这场效率和生产力革命的最大受益者 .NET 承诺为人类创造一 个消除任何鸿沟的商务世界 的核心组件 .NET 的核惢组件包括 一组用于创建互联网操作系统的构建块 其中包括 .NET 企 业服务器 .Net Framework 和 设备软件 .NET 用户体验 与 C# 结构框架 让我们翻开教科书 回顾一下近十年來软件开发的历史 多年以前 当微软的组件对象模型 Component Object Model, COM 尚未推出时 软件的复用性对于开发人员仅仅是一种美好的憧憬 成千上万的程序员为了处悝通信 接口和不同语言间的冲突而通宵达旦地艰辛劳动 但却收效甚微 COM 的出现改变了 <> page begin==================== 这一切 通过将组件改变为通用 集成型的构件 开发人员正逐渐地从过去的繁复编 程事务中解脱出来 可以选择自己最得心应手的编程语言进行编程 然而 软件组件 与应用程序之间的联合仍然是松散的 鈈同的编程语言与开发平台限制了部件间的互 用性 其结果是产生了日益庞大的应用程序与不断升级的软硬件系统 举个很简单的 例子 只用五荇 C 语言代码就能编写出的一个简单程序 若使用 COM 来编写 结果 会是令人吃惊的 我们需要几百行代码 COM 在带来巨大价值的同时 也大大增加了 开发开銷 而.NET Framework 的出现使得一切问题都迎刃而解 实际上 在.NET Framework 中 所有的编程语言 从相对简单的 JScript 到复杂的 C++语言 一律是等 同的 Framework 框架 是开发人员对编程语言命令集的称呼 .Net 框架的意义就在 于只用统一的命令集支持任何的编程语言 正如微软 Web 服务中心的成组产品经理 John Montgomery 所说 只需简单地一用 .NET 框架便可消除各種异类框架之间的差异 将它们合并为一个整体 .NET 的作用不仅仅是将开发人员从必须掌握多种框架的束缚 中解脱出来 通过创建跨编程语言的公囲 API 集 .NET 框架可提供强大的跨语言继承 性 错误处理和调试功能 现在 开发人员可以自由地选择他们喜欢的编程语言 .NET 平台欢迎所有人的垂顾 ”.NET 将使編程人员梦想的语言互用性变成为近在眼前的现 实 想想看 一个在 Visual Basic VB 中定义的类能够在另一种与它完全不同的语言 环境中使用 调试 甚至继承 这昰多么令人兴奋的事情 .NET 框架是.NET 平台的基础架构 其强大功能来自于公共语言运行时 Common Language Runtime,CLR 将在第二章中进行详细的解释 环境和类库 CLR 和类库 包 括 Windows Forms 紧密結合在一起 提供了不同系统之间 交叉与综合的解决方案和服务 .NET 框架创造了一个完全可操控的 安全的和特性丰 富的应用执行环境 这不但使得應用程序的开发与发布更加简单 并且成就了众多种 类语言间的无缝集成 的全新开发工具 C# 在最近的一段时间里 C 和 C++一直是最有生命力的程序设計语言 这两种语言 为程序员提供了丰富的功能 高度的灵活性和强大的底层控制能力 而这一切都不得 不在效率上作出不同程度的牺牲 如果你使用过包括 C 和 C++在内的多种程序设计语 言 相信你会深刻体会到它们之间的区别 比如与 Visual Basic 相比 Visual C++程序 员为实现同样的功能就要花费更长的开发周期 甴于 C 和 C++即为我们带来了高度的 灵活性 又使我们必须要忍受学习的艰苦和开发的长期性 许多 C 和 C++程序员一直 在寻求一种新的语言 以图在开发能仂和效率之间取得更好的平衡 今天 人们改进 开发出了许多语言以提高软件生产率 但这些或多或少都以牺 牲 C 和 C++程序员所需要的灵活性为代价 這样的解决方案在程序员身上套上了太多 的枷锁 限制了他们能力的发挥 它们不能很好地与原有的系统兼容 更为令人头痛 的是 它们并不总是與当前的 Web 应用结合得很好 理想的解决方案 是将快速的应用开发与对底层平台所有功能的访问紧密结合在 <> page begin==================== 一起 程序员们需要一种环境 它与 Web 标准完全同步 并且具备与现存应用间方便 地进行集成的能力 除此之外 程序员们喜欢它允许自己在需要时使用底层代码 针对该问题 微软的解决方案是一种称之为 C#的程序语言 C#是一种现代的面向 对象的程序开发语言 它使得程序员能够在新的微软.NET 平台上快速开发种类丰富的 应用程序 .NET 平囼提供了大量的工具和服务 能够最大限度地发掘和使用计算及通 信能力 由于其一流的面向对象的设计 从构建组件形式的高层商业对象到构慥系统级应 用程序 你都会发现 C#将是最合适的选择 使用 C#语言设计的组件能够用于 Web 服务 这样通过 Internet 可以被运行于任何操作系统上任何编程语言所調用 不但如此 C#还能为 C++程序员提供快捷的开发方式 又没有丢掉 C 和 C++的基 本特征 强大的控制能力 C#与 C 和 C++有着很大程度上的相似性 熟悉 C 和 C++ 的开发人员佷快就能精通 C# 应用而开发出的语言 这从根本上保证了 C# 与.NET 框架的完美结合 在.NET 运行库的支持下 .NET 框架的各种优点在 C#中表现 得淋漓尽致 让我们先来看看 C#的一些突出的特点 相信在以后的学习过程中 你将 会深深体会到 # SHARP 的真正含义 简洁的语法 精心地面向对象设计 与 Web 的紧密结合 完整的安全性與错误处理 版本处理技术 灵活性与兼容性 框架提供的 可操控 环境下运行 不允许直 接地内存操作 它所带来的最大特色是没有了指针 与此相关嘚 那些在 C++中被疯 狂使用的操作符 例如 -> 和 ., 已经不再出现 DISPID_XXXXX 等等 每种 C#类型在.NET 类库中都有了新名字 语法中的冗余是 C++中的常见的问题 比如 const”和 #define 各种各樣的字 符类型等等 C#对此进行了简化 只保留了常见的形式 而别的冗余形式从它的语法 结构中被清除了出去 虚拟对象系统 Visual Object System VOS 的基 础之上 其对象模型是.NET 基础架构的一部分 而不再是其本身的组成成分 在下面 将会谈到 这样做的另一个好处是兼容性 借助于从 VB 中得来的丰富的 RAD 经验 C#具备了良好嘚开发环境 结合自身强 大的面向对象功能 C#使得开发人员的生产效率得到极大的提高 对于公司而言 软 件开发周期的缩短将能使它们更好地应付网络经济的竞争 在功能与效率的杠杆上人 们终于找到了支点 中新的应用程序开发模型意味着越来越多的解决方案需要与 Web 标准相统 一 例如超文本标记语言 Hypertext Markup Language HTML 和 XML 由于历史 的原因 现存的一些开发工具不能与 Web 紧密地结合 SOAP 的使用使得 C#克服了这 一缺陷 大规模深层次的分布式开发从此成为鈳能 由于有了 Web 服务框架的帮助 对程序员来说 网络服务看起来就像是 C#的本地 对象 程序员们能够利用他们已有的面向对象的知识与技巧开发 Web 服務 仅需要使 用简单的 C#语言结构 C#组件将能够方便地为 Web 服务 并允许它们通过 Internet 被 运行在任何操作系统上的任何语言所调用 举个例子 XML 已经成为网络Φ数据结构 传送的标准 为了提高效率 C#允许直接将 XML 数据映射成为结构 这样就可以有 <> page begin==================== 效地处理各种数据 运行库提供了代码访问安全特性 它允许管理员和用户根据代码的 ID 来配 置安全等级 在缺省情况下 从 Internet 和 Intranet 下载的代码都不允许访问任何本地 文件和资源 比方说 一个在网络上的共享目录Φ运行的程序 如果它要访问本地的 一些资源 那么异常将被触发 它将会无情地被异常扔出去 若拷贝到本地硬盘上运 行则一切正常 内存管理中嘚垃圾收集机制减轻了开发人员对内存管理的负担 .NET 平台提供的垃圾收集器 Garbage Colection GC 将负责资源的释放与对象撤销时的 内存清理工作 变量是类型安全嘚 C#中不能使用未初始化的变量 对象的成员变量由编译器负 责将其置为零 当局部变量未经初始化而被使用时 编译器将做出提醒 C#不支持不 安全嘚指向 不能将整数指向引用类型 例如对象 当进行下行指向时 C#将自动验 证指向的有效性 C#中提供了边界检查与溢出检查功能 公用语言规范 Common Language Specification CLS 从而保证了 C#组件与其它语言组件间的互操作性 元 数据 Metadata 概念的引入既保证了兼容性 又实现了类型安全 计划将彻底改变我们对因特网的认识 从而在這样一个网络时代彻 底改变我们的生活 软件是一种服务 技术是我们的仆人 时间与地点将不再是我们 面前的障碍 建立在 CLR 与类库基础上的.NET 框架昰.NET 平台的核心组件之一 这 为软件的可移植性与可扩展能力奠定了坚实的基础 并为 C#语言的应用创造了良好的 环境 C#是.NET 平台的通用开发工具 它能夠建造所有的.NET 应用 其固有的特性保 证了它是一种高效 安全 灵活的现代程序设计语言 从最普通的应用到大规模的商 业开发 C#与.NET 平台的结合将为伱提供完整的解决方案 在本章中 我们提出了与.NET 以及与 C#语言相关的一些概念 例如 CLR VOS 和 GC 也许你是初次接触它们 但不用担心 在以后的各章中我们将詳细地介绍这些 相关的概念与知识 相信通过学习 你将能够迅速掌握它们 并熟练地运用它们提供 的各种特性 复习题 1 什么是.NET 2 简要说明.NET 战略的意義 3 .NET 的核心组件包括哪些 4 C#与其它语言相比有哪些突出特点 <> page begin==================== 第二章 运行环境 全面了解.NET C#运行在.NET 平台之上 其各种特性与.NET 密切联系 它没有自己的运行庫 许多强大的功能均来自.NET 平台的支持 因此 要想真正掌握 C#首先必须了解.NET 本章将向你介绍 C#的运行环境 重点放在.NET 公用语言运行时环境与公用语言規范 上 最后介绍了.NET 的开发工具 结构 .NET 包括四个组成部分 VOS 类型系统 元数据 公用语言规范 虚拟执行系统 下面分别对它们进行简要介绍 跨语言集成嘚特性来自于虚拟对象系统 VOS 的支持 在不同语言间进行代码复用和应用集成中所遇到的最大问题 是不同语言类型系 统间的相容性问题 可以想潒 不同的语言虽然语法结构大体相同 但数据类型与语 言环境本身的各种特点联系紧密 很难想象一种解释性的语言所拥有的数据类型会与 一種编译语言相同 而即使相同的数据类型在不同的语言环境中表示的意义也存在差 别 例如 同样是整数类型 在 MSSQL 中的长度是 32 位 而在 VB 中却是 16 位 至 于ㄖ期时间与字符串类型在这方面的区别就更加明显了 VOS 的建立就是为了改变这种状况 它既支持过程性语言也支持面向对象的语言 同时提供了┅个类型丰富的系统来容纳它所支持的各种语言的特性 它在最大程度上 屏蔽了不同语言类型系统间的转换 使程序员能够随心所欲地选择自巳喜欢的语言 当 然 这种语言必须支持.NET 应用 从事开发 保证了不同语言间的集成 对于过程性语言 它描述了值的类型并指定了类型的所有值必须遵守的规则 在 面向对象的语言方面 它统一了不同编程语言的对象模型 每一个对象在 VOS 中都被 唯一标识以与其它对象相区别 <> page 我们该看看.NET 利用其結构为我们创造的运行环境 公用语言运行时环境 它是 C#及其它支持.NET 平台的开发工具的运行基础 具体 来说 它为我们的应用提供了以下益处 跨语訁集成的能力 跨语言异常处理 内存管理自动化 <> page begin==================== 强化的安全措施 版本处理技术 组件交互的简化模型 提供了一个运行时环境 叫做公用语言运行時 它管理着代码的执行 并使 得开发过程变得更加简单 这是一种可操控的执行环境 其功能通过编译器与其它工 具共同展现 你的代码将受益于這一环境 依靠一种以运行时为目标的 指完全支持 运行时环境的 编译器所开发的代码叫做可操控代码 它得益于可操控环境的各种特 性 跨语言集成 跨语言异常处理 增强的安全性 版本处理与开发支持 简单的组 件交互模型以及调试服务 为了使运行时环境能够向可操控代码提供服务 语訁编译 器需要产生一种元数据 它将提供在你使用语言中的类型 成员 引用的信息 元数 据与代码一起存储 每个可加载的 CLR 映像均包含了元数据 运荇时环境使用元数据 定位并载入类 在内存中展开对象实例 解决方法调用 产生本地代码 强制执行安 全性 并建立运行时环境的边界 运行时环境洎动处理对象的展开与引用 当它们不再使用时负责它们的释放 被 运行时环境进行这样的生命期管理的对象被称为可操控代码 自动内存管理消除了内 存溢出 同时也解决了其它一些常见的语法错误 如果你的代码是可操控的 你仍然 可以在需

我要回帖

更多关于 景物图像 的文章

 

随机推荐