其他途径访问的方式正常,唯独手机百度app访问的方式是出现403.0错误,请大神们帮忙看看

网管教程 从入门到精通软件篇 ★┅★详细的xp修复控制台命令和用法!!! 放入xp(2000)的光盘,安装时候选R修复! Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非瑺有效的诊断和测试以及恢复系统功能的工具。小编的确一直都想把这方面的命令做个总结这次辛苦老范给我们整理了这份实用的秘笈。   Bootcfg   bootcfg 假设你使用的是WinXP一般来讲你会把日常所用的工具软件都放到一个名为“Tools”的文件夹中。好的先容我猜猜,里面都有些什么東东――加密的、图片浏览处理的、压缩/解压缩的、音视频播放的、刻录的、系统优化的……怎么样猜得八九不离十吧?相信这些Tools平日裏一定带来了不少方便不过如果你仅满足于使用这些“Tools”的一般用途,那笔者就要为WinXP道一声“可惜”――它辛辛苦苦为你准备的百宝箱卻被不经意地抛在了一旁相比常用的工具软件,WinXP所提供工具的特点是整合在系统中因此使用简单、快捷而方便,那么就随笔者一起掀開这个箱子看看里面到底都有些什么宝贝吧。 WinXP有着很好的多用户功能允许不同用户拥有个性的系统设置。但在这样一个共享环境下個人的隐私问题又凸现出来,由此涉及到了多用户使用下的文件保密问题对于这个问题,你可能会考虑诸如“文件保密专家”之类的文件加密软件其实在WinXP中,大可不必为文件的保密问题操心因为它为我们提供了多种文件保密的方法。不过在为文件进行保密操作之前艏先要确定待保密的文件是放在NTFS分区上的,这是WinXP里进行文件保密的基础以下的操作都是在NTFS分区上进行的。 1.个人文件夹的保密 在WinXP里最简单嘚文件保密方法是对“个人文件夹”的加密所谓“个人文件夹”是指在“系统盘ocuments and Settings”下,以当前用户名命名的文件夹;其中包含了如“我嘚文档”、“开始菜单”一类的个人用户文件对其进行加密,只需直接在其文件夹或其子文件夹的“属性”对话框的“共享”页上勾選“将这个文件夹设为专用”(若为管理员用户则此处默认为勾选),那么其他用户(包括管理员)都无法访问的方式此文件夹此方法呮适合于对“个人文件夹”的保密,对于系统的其他文件和文件夹则无能为力了需要注意的是,设为“专用”的个人文件夹将不能被共享同样,已共享的个人文件夹在取消共享之前也不能被设为“专用”实际应用中,可将要保密的文件保存到设为专用的“我的文档”裏即可实现文件保密的目的。 2.利用用户权限保密文件 对于没有放在“个人文件夹”中的文件我们可以有第2种保密方法:控制用户权限――通过对不同用户或者组,赋予对文件(文件夹)不同的操作权限从而达到文件保密的目的。此操作进行之前先要确定WinXP中文件权限的設置功能是否开启:在文件浏览窗口中选择菜单“工具”→“文件夹选项”选择“查看”页,确定“使用简单文件共享”没有被勾选 の后,我们就能对系统的文件(文件夹)访问的方式权限进行具体设置:打开文件夹的属性对话框可以看到多出了一个“安全”页。在其中可以一目了然对于此文件夹可操作的用户及其不同的权限分派各类权限有“允许”和“拒绝”两项可选,先在“组或用户名称”一欄里选择要保密的对象(如Guest用户)再将其“读取”的权限设为“拒绝”,如此便实现了此文件夹的保密如果“组或用户名称”里没对潒用户,选择下面的“添加”输入(或搜索出)其用户名即可。 有可能你看到的用户权限设置是不可选的那是因为此子文件夹从其父攵件夹(上级文件夹)继承了权限,因此不可改要使其权限可改,应删除其和父文件夹的继承关系:选择“安全”页的“高级”选项咑开“高级安全设置”对话框,在“权限”页里取消对“从父项继承那些可以应用到子对象的权限项目包括那些在此明确定义的项目”嘚勾选,在弹出的对话框中选择“删除”即可 3.加密文件系统(EFS)对文件的保密 这是WinXP我们提供的一种高级文件加密方法――加密文件系统(EFS)。EFS是一种数字加密方式:Windows首先以一把“公钥”(WinXP自己的加密算法)对文件进行加密再配给用户一把用于解密的“私钥”(包含在个囚数字证书中)。加密过的文件只有通过“公钥”与“私钥”共同认证后产生的“金钥”才能被解密。 打开要加密的文件或文件夹的“屬性”对话框选择其“常规”页中的“高级”,勾选“高级属性”里的“加密内容以便保护数据”确定后,加密的文件/文件夹名会以綠色表示这样,即使是管理员账户也不能读取文件的内容了。 这就是WinXP的高级文件保密就这么简单。之后的问题是如果加密文件拷貝到其他机器上,如何实现其解密这就涉及到了个人数字证书的使用。 4.个人数字证书的导出与导入 在“运行”栏里输入“certmgr.msc”打开“证書”,依次展开“个人”→“证书”右键单击要导出的证书,在“所有任务”中选择“导出”在向导中选择“是,导出私钥”再按需要设置好私钥保护密码和导出路径后,即导出了个人数字证书 加密文件被拷贝到其他机器上后,要对其进行解密需要先在此机器上噺建一个与原加密用户相同用户名及密码的账户,再将之前导出的证书拷贝到此机器上双击运行即可实现数字证书的导入。 注意:WinXP为了防止私钥被随意导出凡导入的证书在默认情况下均不能被再次导出。如果有再次导出的需要需要在导入数字证书过程中,输入私钥保護密码一步时勾选“标志此密钥为可导出的……”,这样才能使导入的证书能被再次导出 二、资源管理器的增强 1.图片浏览 WinXP之前这一功能非ACDSee莫属,然而WinXP却带来了更为易用的图片浏览功能众所周知,只要选择“缩略图”方式显示图片我们就可以图片的缩略图预览其效果。选择“幻灯片”方式则可以更清楚地看到图片的预览效果。WinXP还为我们提供了第3种方式浏览图片:“幻灯片播放”只需选择资源管理器左侧“图片任务”中的“作为幻灯片查看”,即可浏览图片在屏幕的右上角依次有播放、暂停、上一幅、下一幅及关闭的功能按钮。需要提醒的是如果选择了一张或者多张图片后再选择“作为幻灯片查看”,则只会放映所选择的图片 还有一点技巧:如果嫌“缩略图”方式预览的图片太小,我们可以通过修改注册表的方式改变其大小在“运行”栏里输入“regedit”,打开注册表编辑器依次展开HKEY_CUR RENT_USER Software MicrosoftWindows CurrentVersion Explorer,在其下噺建一名为ThumbnailSize的DWORD值将值改为十进制的200,可以看到预览图变大了吧另外,新建名为ThumbnailQuality的DWORD值通过设置其值改变缩略图的图片质量,如设为80則以80%的质量显示缩略图。通过减小其值可以缩短系统显示缩略图的时间。 注意:如果当前目录下有图片却没有出现“图片任务”或找不箌“幻灯片”方式可参见后文设置文件夹模板。 2.数码图片的处理 使用数码相机等设备WinXP也准备了“扫描仪与照相机向导”。当数码相机連接到计算机后在系统弹出的任务选择对话框里选择“将图片复制到计算机上的一个文件夹”,WinXP会自动读取相机里的图片接下来在“掃描仪和照相机向导”选择要获取的图片,还有存放的路径完成后WinXP就会把所选择的照片存放到指定目录了。值得一提的是在选择存放蕗径时,WinXP已默认提供了一系列有助于分类的存放方式方便我们对数码图片的管理。 双击一个图片文件如果没有安装其他图片浏览软件,WinXP会首先调用“Windows图片和传真查看器”来打开文件(若已安装其他图片软件也可右击图片文件并在“打开方式”中选择此工具)。可用其對图片进行简单加工如缩放查看、旋转、打印、复制到等。试过用“Windows图片和传真查看器”打开TIFF文件吗可以看到工具栏上又多出不少东覀,通过这些工具可以给图片添加“注释”至于用处,想想看可以在数码相片上写上照相的时间地点,场景描述等多年后回味,别囿一番滋味啊这一注释功能并不直接修改图片,在你不需要时可随时删去所加的注释而保留图片的原样。 3.个性的文件夹 如果你也崇尚個性张扬相信总会想方设法把自己的WinXP弄得与众不同。这里就来看一下如何用WinXP百宝箱里的东东,把系统里大大小小的文件夹们统统换掉那黄色的夹子外套。WinXP提供了很方便的文件夹自定义功能在文件夹“属性”对话框的“自定义”页上,即可看见很多定义的内容 文件夾模板:可供选择的有相册、图片、音乐和视频等,其区别在于不同的模板对应不同的默认文件查看方式(幻灯片、平铺、图标等)以及攵件夹任务使用了以上两种图片类文件夹模板,文件夹左侧的“常见任务栏”里都会有“图片任务”供选择,而使用了音乐类或视频類文件夹模板则分别对应的是“音乐任务”与“视频任务”。 文件夹图片:当文件夹以缩略图方式查看时WinXP会把该文件夹里最近修改的4個图片作为默认的文件夹图片显示,但为了提醒自己可以让它变得更醒目。只需单击“选择图片”就可选择某个图片作为此文件夹的图爿 文件夹图标:如果不以缩略图方式查看,文件夹将会以其“标准图标”表示――一个黄色的夹子如果觉得这千篇一律的黄夹子没有個性,我们也可以换单击“更改图标”,可以看到WinXP为我们在Shell32.dll里提供的许多图标我们当然可以随便用上一用。 三、压缩与解压缩 目前我們使用的压缩解压缩软件想必都是WinZip或WinRAR等它们各有自己的特点与用途,但实际应用中可以说95%以上的工作都是简单的压缩与解压缩在这一點上,WinXP自带的压缩工具就足以满足需要了 1.通过压缩磁盘对文件进行压缩 这种方法被WinXP冠名为“NTFS文件压缩”,只能在硬盘的NTFS分区上使用打開要压缩文件/文件夹的“属性”对话框,选择“常规”页中的“高级”勾选“高级属性”里的“压缩内容以便节省磁盘空间”,确定后此文件/文件夹名会以蓝色显示。以这种方法压缩文件实质上是对磁盘进行压缩,会带来了系统性能的降低(打开压缩文件时系统将其解压缩,关闭文件时又重新压缩)因此建议仅用于对备份文件处理。 2.Zip文件的压缩 最先在Windows提供对Zip文件的支持始源于WinMEWinXP继承了这一特性,泹基本上没有太多发展这一功能被称为“Compressed(zipped) Folders”,只能进行最基本的压缩/解压缩工作说好听点,就是“返璞归真”了 实现方法一:茬鼠标右键菜单上选择“新建”→“压缩(zipped)文件夹”。 实现方法二:选中欲压缩的文件(一个或多个)在其鼠标右键菜单上选择“发送到”→“压缩(zipped)文件夹”,即生成一个.zip文件最后生成的文件名同鼠标单击的文件一致。 你还可以对.zip文件设置密码打开一个.zip文件(確定是用WinXP自带功能打开,而不是用其他软件)选择菜单项的“文件”→“添加密码”,输入要设置的密码之后,查看和解压缩此文件僦需要密码了可以满足一般的保密性要求。需要说明的是WinXP不能进行分卷压缩、添加注释等“高级任务” 3.Zip文件的解压缩 压缩后的ZIP包可以潒普通文件夹一样操作。如果要将ZIP包解压缩到指定位置只需在其右键菜单上选择“全部提取...”利用“提取向导”,选择解压缩路径输叺密码(如果有的话),即可进行解压缩 4.自解压包的制作

}

《分手&MCAeneas》 嘿BABY 你这样走了究竟是为什么 哦为什么为什么你就这样离我而去,什么都没有留下来没有哭泣的空气 当我听着破烂的收音机看着80年代的电影 想起我们过去一起赱过的日子 当我看着这张已经发黄的照片 我知道的我们的回忆已经没有任何意义 听着这样的BEAT,唱这样的曲 看看我们之间还有什么 要分大家僦分个干净 何必这样拖泥带水哼check it你这样无缘无故的走了 不我不想听太多的解释,太多的废话 只会让我更加苦恼更加伤心 何必何必,这叒是何必 难道你就这么喜欢让伤心欲绝 独自徘徊在这条街 我今晚一定无法安眠 希望谁能借给我一个翅膀 让我就这样翱翔在天空 这是一百零┅次的祈祷 我的真神啊拉为什么你总是对我不满 我到底是做错了什么为什么 你们都一样把我遗弃在黑色的陷阱 这种黑色的幽默,这个残酷的现实也许我真的真的没有能力去接受。(求求你放过我吧~!) 哦哦也也这样的旋律,给我这样哭泣 爱上你我就这样爱上你。希朢你能给我一个呼吸的空气 啊like party,i like party thie is my party do you like this party 哦我发着简讯希望你能收到我最后一次爱的倾诉 不管以后有什么样的结局,我都不后悔但请你不要拒绝峩最后的一次请求 这样离我而去,什么也不留残忍的爱情故事已经不知伤了多少人 为什么这样的结局还是要发生在你我的身上 上帝你实茬是很不公平,虽然每夜祈祷你还是一样把我放弃 o o ye ye .我们这样下去,已经没有生存的意义 这样的旋律给我这样哭泣 爱上你,我就这样爱仩你 等不到我最爱的你 我只能哭泣

}

Systems公司的一部分他也是Xen系统管理程序的首席架构师。Keir在2002实现了Xen的第一个版本作为他在剑桥计算机实验室攻读博士学位时的一项娱乐。在该项目成为大规模的社群合作的過程中他继续作为主要的开发者。他因在无锁并发控制方面的工作于2004年获得了博士学位,并在同年成为一名教师   Peter Goodliffe是一名程序员、专栏作家、演说家和作家,从来不在同一软件领域做过多的停留Pete的热门书籍“Code Craft (No Starch Press)”是对整个编程追求的实际而有趣的调查——大约600页,嫃是了不起!他对制革很有热情而且不穿鞋。   Georgios Gousios是一名职业研究者接受的教育和软件工程有关,热衷于软件开发目前,他正在希臘的雅典经济学与商业大学完成他的博士论文他的研究兴趣包括软件工程、软件品质、虚拟机和操作系统,他拥有英国曼彻斯特大学的科学硕士学位Gousios为多个开源软件项目贡献过代码,并参与了各种学术项目和商业项目的研究与开发他是SQO-OSS项目的项目经理、设计权威和主偠开发成员,为评估软件品质探索一些创新的方法在他的学术生涯中,Gousios在会议和杂志上发表了10篇技术论文Gousios是ACM、IEEE、Usenix 作者: (美)Sam 。   阅读Oracle數据库手册并理解数据库如何工作极为重要不过,要掌握DBA技术什么也比不上在一个实际的数据库上工作来得重要,因此如果你有一个Windows桌面电脑就可以方便地下载安装免费的Oracle Database 11g软件,对Linux系统也是一样的事实上,产品数据库与桌面机上的“实验数据库”的运行是完全相同嘚因此完全有条件试验有关Oracle Database 11g的内容。   阅读Oracle手册   不管是使用本书还是别的DBA手册都需要经常参考Oracle数据库手册以获得复杂数据库操莋的完整详细的知识。掌握“Oracle Concepts”(Oracle概念)手册中Oracle Database 11g的基础知识其重要性怎么强调也不算过分。掌握该手册的内容对于理解许多高级DBA过程极為关键   如果需要详细了解各种细节,该手册是非常有参考价值的例如,关于备份与恢复的章节是掌握这方面知识的一个很好的起點还有几本Oracle手册介绍备份与恢复的内容。一旦读完本书中相应的两章(第15章和第16章)你会发现读懂各种Oracle资料是一件相当容易的事情,洇为你已经对所有重要的概念有了良好的理解本书提供了读懂各种Oracle手册和联机帮助的知识基础。 开本:16开 页码:504 版次:1-1 编辑推荐    10年從业生涯中无数次被面试和面试他人的经验总结    告诉你哪些技术是重要的是面试官最看重的    获取稳定的DBA职位的必读宝典 内容简介    本书以oracle 10g为基础,由浅入深、从易到难详细介绍了dba职位所要求的知识结构和实战技能。第1章至第4章是基础篇包括数据库建模、oracle体系结构、网络结构、备份恢复和使用oem,这些对于刚刚从事dba或者试图转做dba的朋友都是必备知识第5章至第9章是中级篇,专门讨论性能调整包括性能优化原理、oracle性能调整发展历程、awr、ash、addm、auto sql tunning等最新的助手工具,并通过大量实例展示技术的综合应用第10章至第13章是高级篇,主要面姠高级读者高级dba通常要解决架构层面的问题,因此对于这部分读者来说最重要的是要扩展眼界,能够掌握如何选择最合适的工具而不昰最贵的工具为了跳出单一产品的限制,本书选择了异构互联和安全这两个主题来帮助读者扩展思路.    本书作者是oracle资深dba,本书不仅融入了作者十年的实战心得和工作经验还提供了来自于工作现场的大量实例,具有很强的可操作性..    本书可以作为数据库开发人员、数据库管理员、数据库初学者及其他数据库从业人员的工作参考手册,也可以作为各大中专院校相关专业师生的参考用书和相关培训机構的培训教材 作译者   张晓明,Oracle OCP现用网名“石头狗”,名称来自于《和佛陀赏花去》中的故事;狗会因为人随手丢出的一个东西而縋逐可能是一个骨头、一块肉、一个眼神,甚至是一个石头警示一定要看清自己在追逐的东西。 目录 封面 -17 扉页 -16 版权 -15 序 -14 前言 -12 自我测试 -7 目錄 -4 第一部分 基础篇 1 第1章 数据建模 2 精品课程整体设计 一、 概述 《这个建设开发网站的课程就显得十分必要和重要与此同时网络人才的需求也为高技能型网络建设人才提供了得天独厚的发展空间。 二、 是微软发展的新的体系结构.NET重要的一部分其中全新的技术架构会让每個人的编程变得更简便。提供许多比以往的Web开发模式强的功能目前的一个重要的组成部分。 知识可以方便、快捷的建设网站因此,掌握课程发展也经历了一个教学理念的不断更新、升迁教学内容日益丰富,教学方法和手段逐渐完善教学条件和环境更加优化的过程。峩校的基本知识与应用并能运用所学知识开发出企事业需要的各种形式的网站、留言板、BBS、聊天室等等。并能具有应用能力、再学习的能力、创新能力、职业岗位竞争能力、创业能力 (二)课程目标 1能力目标 ? 学会对的各类控件应用能力; ? 应用所学知识开发各种形式的网站等能力; ? 职业岗位竞争能力。 2知识目标 ? 掌握语言的基本知识; ? 掌握常用的超文本标记语言和语法以及网页中各种对象的定义和應用; ? 掌握编程语言 8 4 4 3 HTML服务器控件应用 12 6 6 4 WEB服务器控件应用 12 6 6 5 验证控件和用户控件 16 8 8 6 数据库编程 24 12 12 8 数据列表控件应用 16 8 8 9 网络论坛设计实例 6 6 合 计 108 52 56 (1) 每次課堂教学2学时时间分配 步骤 教学内容 时间分配 告之 本讲内容、回顾上讲内容、知识点、学习目标 5 引入 案例分析各知识点学习 10 能力训练 学生對案例的完成 65 知识巩固与评价 学生讨论与自我评价 5 深化能力训练 课堂考核(包括提问、案例的完成、答辩等各种形式) 3 归纳总结 小结 1 作业 莋业 1 (2) 每次实训课2学时时间分配 步骤 教学内容 时间分配 告之 本讲内容、回顾理论内容、知识点、学习目标 2 引入 实践案例分析各知识点学習 3 能力训练 学生对案例的完成 75 知识巩固与评价 学生讨论与自我评价 5 深化能力训练 课堂考核(包括提问、案例的完成、答辩等各种形式) 3 归納总结 小结 1 作业 实践作业 1 2、技能训练(纯实践性实训) 在本课程学习结束后,学生应在实训周内完成以下题目: 题目:制作网络论坛设计實例 实训用时:1周 课学时分配: 步骤 教学内容 学时数 告之、学生提问 知识回顾、学习目标、实训课题分析、对学生提问的解答 1 能力训练 学苼对实训课题的完成 35 知识巩固与评价 学生讨论与自我评价 1 深化能力训练 实训课题考核 2 归纳总结 实训课题总结(思路、方法、步骤等) 1 (四)整体教學设计与教学进度 见附录1、2 (五)教学模式 职业教育不同于大学本科教育,它是一种突出实践性的一种就业教育它所培养的是具有较高水岼、较高素质的高技能型人才(而不是策划、设计、科研型人才)。在制定教学模式时最重要的是突出实践性、应用性。 大家知道课程采鼡了先进的教学方法和手段,自主研发了四层教学模式如图1所示。我们现在逐一的对这四层教学模式进行阐述 1、实训课题引入 目前,職业教育蓬勃发展其教学的重点是培养学生具有扎实的专业基础知识,过硬的专业操作技能以满足我国经济发展的需要。我们在多年嘚专业技能课教学中探讨出在教学中首先要将与职业岗位密切联系的实训课题引入课堂,如一个大型网站的建设,使学生有目的的学习引导学生学习兴趣,用任务训练岗位能力提高学生再学习能力、解决问题的能力、创新能力。这种教学模式就是任务引入教学模式 任務教学模式有利于提高学生的学习积极性有利于培养学生学会如何开发软件和设计软件的能力。在这种教学模式下要让学生知道要完成┅个网站建设需要掌握那些内容、应具备的知识和能力。在整个教学中给予学生充分的实践指导,使学生能够系统地把握知识的衔接性使学生学完本门课后,能够顺利的完成实训课题的任务 2、案例教学 是微软推出的新一代语言,底层采用.Net框架,提供了比WEB更为丰富的实用性和易用性本课程通过一个是什么,怎么来开发 涵盖了代码规范、运行模型、服务控件、验证控件、数据绑定技术、开发网站等应用嘚必备知识。我们在实训课题引入的前提下,通过一系列完整的案例分析来帮助学生学会主要技术领域以及分布式应用程序开发提高解决實际问题的能力。并为学生的终生学习做了良好的铺垫下面对案例教学筹划实施的整个过程作介绍。 (1).明确本课程基本性质和任务 本课程屬于计算机专业课首先学生必须学完《计算机基础知识》、《的基本知识、设计思路和方法技巧,掌握中的网络的编程和多媒体的编程鉯及多线程技术等 (3).案例的实施 在案例实施前,要对语言的语法基础、特征、机制、窗体的设计进行详细讲解和分析特别是对具体的界媔设计要在多媒体教室里进行,教师可以先作一些演示和介绍引导学生自己去动手设计界面发挥自己的想象力和创造性,至于窗体上各個控件的使用也可以让学生自己去尝试使用,发挥学生的自主探究能力充分体现以学生为主体的教学模式。对于一些重点、难点可以進行集中讲解和进行集体讨论当然在具体的编程过程中,就实际遇到的重要概念、理论可以进行强调和解释如类等这些相对来说比较抽象的概念放到实际问题当中去讲解和理解也比较容易了。 对于涉及数据库案例采用对对文本流的读写操作这才能真正体现程序设计的魅力之所在。在案例讲解中可只讲解一种方法,也就是以程序的手段来实现对文本及数据的读写操作以及是一门技术性较强的应用型课程通过突出实践教学不仅能够培养学生的操作技能,而且有利于学生形成全面的职业岗位素养因此实践性教学是本课程教学中的一个必不可少的环节。 首先在学时上给予保证,我们采用实践性的课堂教学占总学时的三分之一二是在实践性教学中,强调训练、操作、考核嘚循环强化三根据实训教学是属于纯实践教学(现场教学或实际操作) ,是教学模式中的最后一个教学环节是对前几个教学环节中学习知识的巩固、检验、升华,也是整个课程教学过程的成果阶段为了保证这一环节的教学质量,它的学时占总学时的三分之一 实训教学昰对于提高学生的综合素质与实践创新能力具有非常重要的作用,它是培养高技能型人才的有效途径为此,我们在实训教学方面作了一些大胆的尝试试图通过实训教学的探索与实践,实现对学生综合素质、实践创新能力、再学习能力和就业能力的有效培养 我们在教学模式的的第一层己将的目的所在。范:即示范表演对实训课题涉及的相关内容,教师可事先用一个小案例进行设计让学生有一个感性嘚认知和目标。而且教师进行设计的过程也是学生的仿效过程、联想的过程练:是用任务训练岗位职业能力过程是整个技能课教学的中惢环节,是学生对所学专业知识的运用过程在这个过程中教师是一组织者,要充分体现学生为主体。在此环节中要模拟全真教学这样才能达到用任务训练职业岗位能力的目的。评:是对训练成果进行评价训练后,可由学生进行自评看是否按要求做正确了?然后由教师進行考评评出该次技能的“能手”,最后进行总评提出优点,指出不足之处展:是对学生的训练成果进行展示、展览。通过对学生各级成果的展览互相学习,交流技术既是进行自我提高,激发对学生专业技能学习的兴趣也是对专业技能课教学的“强心剂”,起箌有力的推动作用  (七)考核 (1)平时成绩占20%,到课率课堂表现,学生遵守纪律以及上课积极参与情况 (2)阶段性考核占40%,每节课學生所作案例完成情况 (3)期末考试占40%。基本理论基本技能测试 (八)教材资料 教材名称:赵增敏等著. 实用培训教程.北京:北京希望电孓出版社,2003 2.石志国 编著 程序设计实用教程 中国电力出版社 实用教程 清华大学出版社 程序设计》整体教学设计 一、 管理信息 课程名称:《语訁程序设计》 后修课程: 授课对象:职业技术类院校学生 1.课程目标设计 (一)能力目标 (1) 能利用中的各类控件; (3) 能够利用制作实際小型的动态网站 (二)知识目标 (1) 了解语言的基本知识; (3) 掌握常用的HTML标记和语法,以及网页中各种对象的定义和应用; (4) 了解創建Web窗体的方法; (5) 掌握配置的运行环境的安装和配置 2 2 Visual 内置对象应用--为个人主页添加“统计在线人数”功能 12 7 制作一个网络论坛的网站為实现这一目标,把此项目分成如下几个小项目当每个项目都进行完时,整个项目也就结束了最后的作品就成了考核的依据。学时分配为:理论52学时实训56学时,在理论课程全部结束时安排一个实训周为40学时。 编号 能力训练项目名称 拟实现的能力目标 相关支撑知识 训練方式手段及步骤 结果(可展示) 1 运行环境的安装; (2)熟悉运行环境的安装 (2)配置安装;并能正常使用。 2 的数据类型以及变量、瑺量的定义; (2)掌握的过程和函数; (4)掌握编程建立网页。 (2)在服务器环境下测试网页效果 (1)使用常用的服务器控件。 (2)测試服务器控件的使用效果 能够将已有的HTML控件进行连接。 3 用HTML语言制作网页 制作静态个人主页 (1)了解HTML的基本语法和结构; (2)熟悉HTML的各种標记以及其中的一些属性; (3)初步掌握表格(TABLE)、链接(LINK)、多窗口页面(FRAME)以及表单(FORM)等结构; (4)通过该实验对HTML有更深入的了解。 (1)建立HTML网页 (2)在HTML网页使用表格、链接及表单等。 利用网页制作工具建立好网页后上传到机房指定的服务器空间,体现HTML网页的淛作过程 静态个人主页 4 web服务器控件的应用—校友通信录 (1)了解服务器控件的使用。 (1)使用常用的服务器控件; (2)测试服务器控件嘚使用效果 利用网页制作工具的服务器行为命令使用服务器控件,在服务器环境下测试学习服务器控件 的使用技巧。 能够利用 WEB服务器控件制作简单的动态页面 5 使用验证控件实现用户注册 个人主页上添加密码验证和注册功能 (1)进一步掌握服务器控件的使用; (2)掌握服务器控件中验证控件的使用。 (1)建立用户验证表单学习验证控件的使用方法; (2)测试验证控件的使用效果。 利用网页制作工具嘚服务器行为命令使用验证服务器控件建立用户登录表单在服务器环境下测试,学习服务器验证控件的使用技巧 个人主页上实现验证囷注册功能。 6 内置对象的应用为个人主页添加“统计在线人数”功能 (1)熟悉和了解的主要内置对象; (2)测试内置对象的使用效果 利鼡网页制作工具使用数据库编程为个人主页添加新闻发布功能 (1)掌握数据库的建立基本操作; (2)掌握中数据库编程 (1)建立用户注册表单; (2)建立用户登录表单; (3)建立数据库连接; (4)对用户信息进行管理; (5)测试数据库编程的效果。 利用网页制作工具使用数據库编程建立数据库连接,在服务器环境下测试数据库程序的运行情况学习数据库连接的技巧。 个人主页能够实现新闻发布功能并能够进行修改 8 数据列表控件应用--更新个人主页管理系统 掌握对中数据库编程; (3)掌握使用基础 学生了解的概况; 了解的运行环境的安装囷配置 (1)掌握应用程序的配置; (3)掌握Web页的发布。 1 (1)应用程序 (3)安装IIS,发面Web页 3 2 Visual 编程语言基本语言元素; 能够使用三种结构和數组。 2 掌握Visual 编程—— 创建一个WEB窗体页(1)用于求解一元二次方程。 “ax2+bx+c=0” (2)根据输入的出生年份计算属相。 (1)掌握的条件语句的使鼡; 2 掌握Visual 编程—— 创建一个WEB窗体页 (1)允许用户输入一个小于10000的自然数,程序将计算从1 到这个自然数的总和(2)显示一个乘法表。 (1)掌握的条件循环语句的使用; 2 掌握Visual 的循环语句的使用; 6 2 的数据类型以及变量、常量的定义; (2)掌握编程;语言基本语言元素; 掌握數组的使用; 7 2 的数据类型,以及变量、常量的定义; (2)掌握编程建立网页 (2)在服务器环境下测试网页效果。 8 2 的过程和函数; 2 (1)利鼡编程语言过程 面向对象编程 异常处理 掌握编程语言过程; 能够面向对象编程; 能够进行异常处理 10 2 Visual 编程语言过程 面向对象编程 2 掌握Visual 编程語言过程 面向对象编程 --在类的文件中声明一个Person类然后基于该类创建 一个派生类Student并对基类中的ShowMessage在web窗体中创建Student类实例并使用ShowMessage方法来显示学生资料 Visual 编程语言过程; 能够面向对象编程; 12 2 的数据类型,以及变量、常量的定义; (2)掌握的过程和函数; (4)掌握的数据类型以及变量、瑺量的定义; (2)掌握的过程和函数; (4)掌握网页用于显示如何使用HTML服务器控件的共有属性 了解HTML服务器控件整体情况; 能够正确运用所學的控件 3 了解HTML服务器控件整体情况; 掌握HtmlGenericControl控件; 掌握HtmlForm控件; Web服务器控件—用户在图像上单击鼠标指针时,显示该指针坐标. 掌握W eb服务器控件 掌握ImageButton控件 4 掌握W eb服务器控件 lidator、控件来验证到文本框中的身份证号、邮政编码、电子邮件、地址以及电话号码是否为特定模式。 验证控件与用户控件4 掌握用户控件的综合使用 5 掌握用户控件。 33 2 使用验证控件实现用户注册和个人主页上添加密码验证和注册功能 (1)进一步掌握服务器控件的使用; (2)掌握服务器控件中验证控件的使用 5 (1)建立用户验证表单,学习验证控件的使用方法; (2)测试验证控件的使用效果 34 2 内置对象的应用—使用内置对象应用2 熟练掌握Session对象,学会保存会话信息学会判断是否建立了新的会话。 6 熟练掌握Session对象学会保存会话信息,学会判断是否建立了新的会话 37 2 内置对象应用3 能够设置会话的有效期,强制结束会话能够处理会话信息,掌握Application对象。 6 (1)使用数据庫编程1 了解概述; 能够创建数据连接 41 2 数据库编程—使用OleDbConnection对象连接到access数据库文件数据库编程3 能够完成删除记录、调用存储过程。 7 能够使用DELETE語句删除记录;能够使用Command语句调用存储过程 44 2 数据库编程—通过Command对象执行存储过程以实现向数据库中添加记录并显示运行结果 第一章 .NET 编程語 编程编程 编程 言 语言语言 语言 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 映像均包含了元数据 运行时环境使用元数据 定位并载入类 在内存中展开对象实例 解决方法調用 产生本地代码 强制执行安 全性 并建立运行时环境的边界 运行时环境自动处理对象的展开与引用 当它们不再使用时负责它们的释放 被 运荇时环境进行这样的生命期管理的对象被称为可操控代码 自动内存管理消除了内 存溢出 同时也解决了其它一些常见的语法错误 如果你的代碼是可操控的 你仍然 可以在需要的时候使用非可控代码 或者在你的.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#的更多更有趣的东西 复习题 好 那就让我们开始 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 首先是一个开发平台 它定义了一种公用语言子集 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++中被疯 狂使用的操作符 例如 -> 和 ., 已经不再出现 C#只支持一个 . 对 <> page begin==================== 于我們来说 现在需要理解的一切仅仅是名字嵌套而已 C#用真正的关键字换掉了那些把活动模板库 Active Template 而别的冗余形式从它的语法 结构中被清除了出去 虛拟对象系统 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 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#程序的有益经验 平台框架提供的最基本的名字空间之一 有关名字空间的详细使用 方法我们将放在第十七章中详细介绍 在这里 只要我们学会怎样导入名字空间就足 下面让我们使用这个微软提供的命令行编译器对我们的程序進行编译 启动一个命令行提示符 在屏幕上输入一行命令 csc 平台提供的命令行编译器的不同选项 选择不同的编译 方式 从而灵活地对编译进行控淛 例如 如果我们希望对源文件 /msdn/,选择「Downloads」然后选择「 Platform SDK」(软件开发套件),您就能在选择的目录中下载和安装更新文件要让Microsoft Developer Studio浏览这些目录,可以从「Tool」菜单项选择「 Network(Microsoft软件开发者网络)」这是一个向程序写作者提供了经常更新的CD-ROM的计划,这些CD-ROM中包含了程序写作者在Windows开發中所需的最新东西您也可以订阅MSDN,这样就避免经常得从Microsoft的网站下载文件 API文件 本书不是Windows Online」。 在Visual C++ 6.0中从「Help」菜单项选择「Contents」项目开启MSDN窗ロ。API文件按树形结构组织寻找标有「 Platform SDK」的部分,所有在本书中引用的文件都来自于该部分我将向您介绍如何从「 Platform SDK」开始寻找以斜线分層分门别类的文件的位置。(我知道「Platform Services / GDI中 编写第一个WINDOWS程序 现在是开始写些程序的时候了。为了便于对比让我们以一个非常短的Windows程序和┅个简短的文字模式程序开始。这会帮助我们找到使用开发环境并感受建立和编译程序机制的正确方向 文字模式(Character-Mode)模型 程序写作者们囍爱的一本书是《The C Programming 我们还可以包括main的参数,把程序弄得更长一些但让我们暂且这样就好了-包括一个include声明、程序的进入点、一个对执行期链接库函数的呼叫和一个return语句。 同样效果的Windows程序 Windows关于「hello, 从结构上说HELLOMSG.C与K&R的「hello,world」程序是相同的。表头文件STDIO.H已被WINDOWS.H所代替进入点main被WinMain所代替,洏且C语言执行时期链接库函数printf被Windows API函数MessageBox所代替然而,在程序中有许多新东西包括几个陌生的大写标识符。 让我们从头开始 表头文件 HELLOMSG.C以┅个前置处理器指示命令开始,实际上在每个用C编写的Windows程序的开头都可看到: #include WINDOWS.H是主要的含入文件它包含了其它Windows表头文件,这些表头文件嘚某些也包含了其它表头文件这些表头文件中最重要的和最基本的是: WINDEF.H 基本型态定义。   WINNT.H 支持Unicode的型态定义   我还在WinMain声明中改变了两个參数的名称。许多Windows程序中的变量名使用一种称作「匈牙利表示法」的命名系统该系统在变量名称前面增加了表示变量数据型态的短前缀,我将在第三章更详细地讨论这个概念现在仅需记住前缀i表示int、sz表示「以零结束的字符串」。 WinMain函数声明为返回一个int值WINAPI标识符在WINDEF.H定义,語句如下: #define WINAPI __stdcall 该语句指定了一个呼叫约定包括如何生产机械码以在堆栈中放置函数呼叫的参数。许多Windows函数呼叫声明为WINAPI WinMain的第一个参数被称莋「执行实体句柄」。在Windows程序设计中句柄仅是一个应用程序用来识别某些东西的数字。在这种情况下该句柄唯一地标识该程序,还需偠它在其它Windows函数呼叫中作为参数在Windows的早期版本中,当同时运行同一程序多次时您便创建了该程序的「多个执行实体(multiple instances)」。同一应用程序的所有执行实体共享程序和只读的内存(通常是例如菜单和对话框模板的资源)程序通过检查hPrevInstance参数就能够确定自身的其它执行实体昰否正在运行。然后它可以略过一些繁杂的工作并从前面的执行实体将某些数据移到自己的数据区域 在32位Windows版本中,该概念已被抛弃传給WinMain的第二个参数总是NULL(定义为0)。 WinMain的第三个参数是用于执行程序的命令列某些Windows应用程序利用它在程序启动时将文件加载内存。WinMain的第四个參数指出程序最初显示的方式可以是正常的或者是最大化地充满整个画面,或者是最小化显示在工作列中我们将在 第三章中介绍使用該参数的方法。 MessageBox函数 MessageBox函数用于显示短信息虽然,MessageBox显示的小窗口不具有什么功能实际上它被认为是一个对话框。 MessageBox的第一个参数通常是窗ロ句柄我们将在第三章介绍其含义。第二个参数是在消息框主体中显示的字符串第三个参数是出现在消息框标题列上的字符串。在HELLMSG.C中这些文字字符串的每一个都被封装在一个TEXT宏中。通常您不必将所有字符串都封装在TEXT宏中但如果想将您的程序转换为Unicode字符集,这确是一個好主意我将在第二章详细讨论该问题。 这个小的Windows程序真的与K&R的「hello, world」程序有着同等效果吗您也许认为不是,因为MessageBox函数并没有「hello, world」中printf函數所具有的潜在格式化文字能力但我们将在下一章中看到编写类似printf的MessageBox版本的方法。 编译、连结和执行 当您准备编译HELLOMSG时您可从「Build」菜单Φ选择「 另一种方法,您可从「Build」菜单中选择「Execute Hellomsg.exe」或者按「Ctrl+F5」,或者在「 Build」工具列单击「Execute Program」图标(该图标看上去像一个红的感叹号)僦会弹出一个消息框询问是否编译该程序。 正常情况下在编译阶段,编译器从C原始码文件产生一个.OBJ(目标)文件在连结阶段,连结程序结合.OBJ文件和.LIB(库)文件以建立.EXE(可执行)文件通过在「 Project」页面标签上选择「Settings」并单击「 Link」页面标签可以查看这些库文件的列表。特别哋您会注意到KERNEL32.LIB、USER32.LIB和GDI32.LIB。这些是三个主要Windows子系统的「引用链接库」它们包含了动态链接库的名称以及放进.EXE文件的引用信息。Windows使用该信息处悝程序对KERNEL32.DLL、USER32.DLL、GDI32.DLL动态链接库中函数的呼叫 在Visual C++ Developer Studio中,您可用不同的设定编译和连结程序内定情况下,它们是「Debug」和「Release」可执行文件被存放茬以这些名称命名的子目录下。在Debug设定下信息被附加到 .EXE文件中,这些信息有助于测试程序和追踪原始码 如果您喜欢在命令列下工作,附上的CD-ROM包含所有范例程序的.MAK(make)文件(可通过「

}

我要回帖

更多关于 如何做一个app软件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信