




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
WebService编程
------C#.NET老师:I94SelfE_mail:QQ:200762716第一章.NET和.NET框架本章要点:通用语言运行时〔CommonLanguageRuntime〕装配集〔Assembiles〕应用域通用类型系统元数据和自描述控件第一章.NET和.NET框架.NET简介.NET的产品集合和特点.NET框架概述通用语言运行时〔CLR〕装配集〔Assembiles〕应用域通用类型系统元数据和自描述控件跨语言互用能力和平安机制第一章.NET和.NET框架.NET简介开展背景XML
.NETBaseon
第一章.NET和.NET框架.NET简介开展背景HailStormWindows.NETOffice.NETbCentral第一章.NET和.NET框架.NET简介什么是.NETMicrosoft.NET代表了一个集合、一个软件环境、一个可以作为平台来支持下一代Internet的可编程结构。关键点:开发环境〔软件平台〕、分布式、平台〔硬件〕无关。优势:语言无关、与操作系统紧密结合、体系完备,易于使用。第一章.NET和.NET框架.NET的产品集合和特点.NET主要组成局部及其作用Windows.NET.NETFramework.NET企业效劳器模块构建效劳OrchestrationVisualStudio.NET第一章.NET和.NET框架.NET的产品集合和特点.NET的技术特征软件变效劳基于XML的共同语言融合多种设备和平台新一代的人机界面第一章.NET和.NET框架.NET框架概述.NET的技术特征.NET提供一个基于网络的分布式的编程环境提供一个软件配置和版本控制的代码执行环境提供一个代码执行环境,保证代码平安执行,包括那些由不确认和非完全确认的第三方提供的代码提供一个与平台无关的编程和执行环境提供能够整合多种编程语言的工业标准第一章.NET和.NET框架.NET框架概述VisualBasicVisualC#VisualC++VisualJ#…公共语言运行规范(CLS)ASP.NET
(WebForm&WebServices)WindowsFormADO.NET(Data&XML).NET框架类库(.NETFrameworkClassLibrary)公共语言运行库(CommonLanguageRuntime)第一章.NET和.NET框架.NET框架概述VB应用程序VisualC#应用程序VisualC++应用程序.NET架构代码.NET框架类库WindowsWebserviceADO.NETCLR源代码编译成MSIL代码编程效劳JIT编译器
生本钱机代码数据类型第一章.NET和.NET框架.NET框架概述.NET框架类库
.NET框架类库是一个和CLR紧密结合的可重用类型集合。类库是基于对象的、提供了受控代码可以派生功能的类型集合。特别的,第三方控件可以和.NET框架的类轻易整合。第一章.NET和.NET框架.NET框架概述.NET框架类库.NETFrameworkClassLibrary有的著作也称之为“根本类库BasicClassLibrary,简称“BCL”跨所有编程语言支持跨语言继承和调试和工具集成良好命名空间.NET框架类库由命名空间组成各种类型的集合相当于JAVA的Package第一章.NET和.NET框架.NET框架概述客户端应用的开发视窗程序的开发WEB上的ActiveX控制.NET整合上述所有所有客户端的开发功能,建立了自己的一个单独的,完整的开发环境。效劳器端开发效劳器端的应用在受控世界里是通过Runtime主机实现的。非受控应用调用Runtime可以使受控代码控制效劳器行为。第一章.NET和.NET框架通用语言运行时〔CLR〕CLR的产生WindowsDNA有很多开发语言每种语言都有自己的运行库是否有:“可以被多种语言共用”的通用环境有,这就是CLR!第一章.NET和.NET框架通用语言运行时〔CLR〕托管代码与非托管代码托管代码〔ManagedCode〕以CLR为目标的代码非托管代码以“操作系统”为目标第一章.NET和.NET框架通用语言运行时〔CLR〕即时编译微软中间语言MicrosoftIntermediateLanguage,MSIL即时编译Just-in-timeCompilation,JITCLR就相当于Java语言的虚拟机第一章.NET和.NET框架通用语言运行时〔CLR〕编译和执行MSIL源代码语言编译编译在安装或函数/方法第一次被调用时执行即时编译(JITCompiler)二进制代码(NativeCode)中间代码元数据〔Metadata〕第一章.NET和.NET框架通用语言运行时〔CLR〕CLR执行模型VB源代码CompilerC++C#CompilerCompilerAssemblyILCodeAssemblyILCodeAssemblyILCode操作系统效劳公共语言运行时即时编译器JITCompiler二进制代码管理代码ManagedcodeUnmanagedComponent第一章.NET和.NET框架装配集〔Assembiles〕概述装配集是使用NET框架编程的根底局部,提供了以下功能:包含了通用语言运行时执行的代码〔一个装配集只有一个入口〕形成平安边界确定一个引用范围边界确定了个版本边界形成了一个配置单元使并行执行成为了可能第一章.NET和.NET框架装配集〔Assembiles〕装配集的优点装配集用来简化应用程序的配置和解决在基于控件的应用中经常出现的版本问题装配集的内容装配集可以包含四个元素装配集清淡,包含了装配集元数据数据类型实现这鞋类型的中间语言代码一个资源集合
只有装配清单是必要的,但是对一个有意义的装配集来说类型和资源集合也是必须的第一章.NET和.NET框架应用域过去进程边界用来隔离应用程序在CLR中,应用程序域提供给用程序之间的隔离以极小的性能损失进行代码类型平安检查来隔离应用程序多个应用程序域可并存于同一个应用程序中能够在不停止整个进程的情况下停止单个应用程序在一个应用程序中运行的代码不能直接访问其他应用程序中的代码或资源在一个应用程序中的错误不会影响其他的应用程序第一章.NET和.NET框架应用域
应用域和装配集我们必须在应用程序运行之前将装配集装入应用域。一个应用程序的运行可能导致许多装配集装入应用域。默认情况下,通用语言运行时将包含了代码引用的装配集都装入运行时。通过这种方法,装配集的代码和数据就会和其他使用它们的应用程序隔离。第一章.NET和.NET框架应用域应用域和装配集假设一个装配集在进程中被多个应用域使用,这样可以采用中立域技术使该装配集在多个应用域之间共享。当决定是否把装配集作为中立域装入后,必须在提高系统性能与减少内存使用之间进行平衡。第一章.NET和.NET框架应用域应用域和线程应用域和线程之间不存在一对一的关系。许多线程可以在任何给定的时间在一个单独的应用域中执行,一个线程也不一定要限定在一个应用域中。也就是说,线城可以跨越应用域边界;并不是对每个应用域都创立一个新的线城。第一章.NET和.NET框架通用类型系统概述通用类型系统支持两种一般意义上的类型:〔说明:所有的类型都是从System.Object类派生出来的〕值类型:包含他们的数据,值类型的实例也在堆栈中分配过在结构中分配!值类型和建立,用户定义或列举。值类型的变量都有他们自己的数据拷贝,因此对一个变量的操作不会影响到其他变量引用类型:引用类型存储一个引用在值的内存地址中,在堆中分配!引用类型可以是自描述的类型,指针类型,接口类型。引用类型可能指向同一个对象,所以对一个变量的操作,也许会改变其他变量的值!第一章.NET和.NET框架通用类型系统以下代码显示了值类型和引用类型的区别------------------------------------------
usingSystem;
classClass1
{
publicintValue=0;
}
classTest
{
staticvoidMain()
{
intval1=0;
intval2=val1;
val2=123;
Class1ref1=newClass1();
Class1ref2=ref1;
ref2.Value=123;
Console.WriteLine("value:{0},{1}",val1,val2);
Console.WriteLine("ref:{0},{1}",ref1.Value,ref2.Value);
}
}
-------------------------------------------输出结果是:
Value:0,123
Refs:123,123第一章.NET和.NET框架通用类型系统类型定义
类型定义包括:类型中的属性的定义类型的可见性类型的名称类型的基类类型实现的接口类型成员的定义第一章.NET和.NET框架通用类型系统值类型内嵌的值类型
.NET框架定义了内嵌的值类型如:
System.Int32,System.Boolean用户定义的值类型
值类型可以有域,属性,事件,还可以用静态的和非静态的方法,当被装箱时,并且可以实现0个过多个接口,值类型是封闭的,其他类不可以从他派生,可以在值类型上定义虚拟方法,这些虚拟方法可以从装箱或折箱的形式调用
下列代码显示了怎么样唯一化一个复数构造值类型
------------------------------------------
usingSystem;publicstructComplex
{
publicdoubler,i;
publicComplex(doubler,doublei)
{
this.r=r;
this.i=i;
}
publicComplexReciprocal
{
get
{
if(r==0&&i==0)
thrownewDivideByZeroException();
doublediv=r*r+i*i;
returnnewComplex(r/div,-i/div);
}
}
publicstaticexplicitoperatordouble(Complexa)
{
returna.r;
}
publicstaticimplicitoperatorComplex(doubler)
{
returnnewComplex(r,0);
}
publicstaticComplexoperator+(Complexa)
{
returna;
}
publicstaticComplexoperator-(Complexa)
{
returnnewComplex(-a.r,-a.i);
}
publicstaticComplexoperator+(Complexa,Complexb)
{
returnnewComplex(a.r+b.r,a.i+b.i);
}
publicstaticComplexoperator-(Complexa,Complexb)
{
returnnewComplex(a.r-b.r,a.i-b.i);
}
publicstaticComplexoperator*(Complexa,Complexb)
{
returnnewComplex(a.r*b.r-a.i*b.i,a.r*b.i+a.i*b.r);
}
publicstaticComplexoperator/(Complexa,Complexb)
{
returna*b.Reciprocal;
}
publicoverridestringToString()
{
returnString.Format("{0}+{1}i",r,i);
//this.r,this.i
howabout?
yes
}}publicclassValueTypeSample
{
publicstaticvoidMain()
{
Complexa=newComplex(0,1);
Complexb=newComplex(1,-2);
Console.WriteLine();
Console.WriteLine("a="+a);
Console.WriteLine("b="+b);
Console.WriteLine("a+b="+(a+b));
Console.WriteLine("a-b="+(a-b));
Console.WriteLine("a*b="+(a*b));
Console.WriteLine("a/b="+(a/b));
Console.WriteLine();
Console.WriteLine("(double)a="+(double)a);
Console.WriteLine("(Complex)5="+(Complex)5);
}}输出结果是:
a=(0+1i)b=(0+-2i)a+b=(0+-1i)a-b=(0+3i)a*b=(2+0i)a/b=(-0.5+0i)(double)a=0(Complex)5=(5+0i)第一章.NET和.NET框架通用类型系统值类型枚举是一种特殊类型的值类型,他是从System.Enum继承的,一个枚举有个名字,一个根本类型和一个域集!。根本类型必须是内嵌的有符号或是无符号的整数类型〔如:Byte,Int32,UInt64)枚举的一些限制不能定义自己的方法不能实现接口不能定义属性和事件
下列代码显示了如何使用一小块域和普通枚举类型------------------------------------------
usingSystem;
usingSystem.Collections;
//
定义枚举
publicenumSomeRootVegetables
{
HorseRadish,
Radish,
Turnip,
}
[Flags]
//whatthemean?
publicenumSeasons
{
None=0,
Summer=1,
Autumn=2,
Winter=4,
Spring=8,
All=Summer|Autumn|Winter|Spring,
//why?
}
publicclassEnumerationSample
{
publicstaticvoidMain()
{
HashtableAvailableIn=newHashtable();
AvailableIn[SomeRootVegetables.HorseRadish]=Seasons.All;
AvailableIn[SomeRootVegetables.Radish]=Seasons.Spring;
AvailableIn[SomeRootVegetables.Turnip]=Seasons.Spring|Seasons.Autumn;
Seasons[]seasons=newSeasons[]{
Seasons.Winter,Seasons.Spring,Seasons.Summer,Seasons.Autumn};
for(inti=0;i<seasons.Length;i++)
{
Console.WriteLine("\t\nThefollowingrootvegetablesareharvestedin"+seasons[i].ToString()+":");
foreach(DictionaryEntryeinAvailableIn)
{
if(((Seasons)e.Value&seasons[i])>0)
Console.WriteLine("\t"+((SomeRootVegetables)e.Key).ToString("G"));
}
}
}
}输出结果是:
a=(0+1i)b=(0+-2i)a+b=(0+-1i)a-b=(0+3i)a*b=(2+0i)a/b=(-0.5+0i)(double)a=0(Complex)5=(5+0i)第一章.NET和.NET框架通用类型系统其他代表〔Delegate)类似C++函数指针接口可以有静态成员,嵌套类型,抽象虚拟成员,属性,事件。每一个实现了接口的类必须定义接口中申明的抽象成员接口有如下的限制:接口可以声明任何种类,但是接口中的成员必须是PUBLIC的接口以及成员不能
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 竖炉氢冶金工艺在低碳环保钢铁生产中的应用探索
- 标杆企业指标管理办法
- 理财教育大众化传播模式与内容创新研究
- 全基因组关联分析在小麦抗旱性状研究中的应用
- 《公共图书馆法》分析:结构特点、生成逻辑与优化策略
- 厨房高档原料管理办法
- 桥梁安全等级划分标准
- 发票管理办法追诉时限
- 江苏水利中介管理办法
- 因公往来香港管理办法
- 基于MATLAB的赛程安排方案设计
- 架线弧垂计算表(应力弧垂插值计算)
- 保安培训课程表(完整版)咨询培训
- 《飞机电子显示器显示符号》
- 赢利:未来10年的经营能力
- 光伏支架风荷载分析
- 头等大事:脱发青年自救指南
- 马拉色菌相关疾病诊疗指南(2022年版)
- 哈雷之约:基于指数成分股调整的选股策略
- 湖北省随州市各县区乡镇行政村村庄村名居民村民委员会明细及行政区划代码
- 磁流体密封课件
评论
0/150
提交评论