Asp[1].net面试题_第1页
Asp[1].net面试题_第2页
Asp[1].net面试题_第3页
Asp[1].net面试题_第4页
Asp[1].net面试题_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、A核心技术思想(Copyright yyaccp Email:renfuming741宝典在手,再大的风也不怕)A核心技术思想 (以下技术知识点皆由本人整理和补充,不足之处,请上网核对,共115道)1、概述反射和序列化反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,

2、反序列化将从该流重新构造对象。2.如何把一个array复制到arrayList里 方法一、使用foreach循环,将array数组中的数据逐步放入ArrayList的对象中; 方法二、使用Copy方法,进行数据的复制; 方法三、使用ArrayList的adpater的方法 ,将整个Array对象封装到ArrayList对象中。/ author:renfumingpublic static void Main(string renargs)int arrayInt=new int1,2,3,4;ArrayList arrlistInt=new ArrayList(); /方法一foreach(i

3、nt a in arrayInt)arrlistInt.Add(a);Console.WriteLine(arrlistInt2.ToString();/输出3/方法二:ArrayList arrlistInt2=new ArrayList();arrlistInt2=ArrayList.Adapter(arrayInt);Console.WriteLine(arrlistInt22.ToString();/输出3 /逆向转换Array resultArr=(int)arrlistInt2.ToArray(typeof(int);Console.WriteLine(resultArr.GetV

4、alue(2);/输出33.datagrid.datasouse可以连接什么数据源 dataset,datatable,dataview,IList等接口类型的对象4. new有几种用法 第一种:new Class(),新建一个类的对象,但是此类必须的又可访问的构造函数 第二种:显式覆盖基类的方法:public new Menthod()5.概述o/r mapping 的原理利用反射,配置 将类于数据库表映射O/RMapping(有学习曲线,没有工具支持会相当大):存在的时间已经很长,我认为它的最主要的作用是关系型数据库的反设计关系型数据库的设计就是要把现实中的对象和对象间关系设计成实体和实体

5、间的关系映射。而O/RMapping恰好相反,它是把实体和实体间的关系映射还原回对象和对象间的关系。6.类成员有( )种可访问形式可访问性:public ,protected ,private,internal可能还有其他的访问形式,具体的情况视编码需要而定7.用sealed修饰的类有什么特点sealed 修饰符用于防止从所修饰的类派生出其它类。如果一个密封类被指定为其他类的基类,则会发生编译时错误。密封类不能同时为抽象类。sealed 修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟

6、调用来处理。8.列举ADO.NET中的五个主要对象,并简单描述connection,command,dataReader,transaction,dataset .其上对于各种对象,连接不同的数据库将会有不同的对象变体Connection: 数据库的连接需要此对象Command:执行数据表变化的命令dataReader和dataset主要是对数据库的表信息进行两种不同方式的读取,具体的读取得区别,后面将会有讲解9.执行下面代码后:String strTemp =yyaccpx 某某某;Int i System.Text.Encoding.Default.GetBytes(strTemp).Le

7、ngth;Int j = strTemp.Length;结果:i=(14 ) ;j=(11 )i=(14 ) ;j=(11 ) 中文在内存中占两个字节但是只算是一个字符10.C#中,string str = null 与 string str =,请尽量用文字说明区别。(要点:说明详细的内存空间分配)string str = 在栈中存取地址,在堆中存放对象的值而String str=null;仅仅在内存栈中分配了空间11.详述.NET里class和struct的异同!class:放在属于引用类型,故其存放于内存的堆中 Struct属于值类型,其存放于栈中,作为参数传递的时候属于值传递类与结构有

8、很多相似之处:结构可以实现接口,并且可以具有与类相同的成员类型。然而,结构在几个重要方面不同于类:结构为值类型而不是引用类型,并且结构不支持继承。结构的值存储在“在堆栈上”或“内联”。细心的程序员有时可以通过聪明地使用结构来增强性能。12.概述.NET里对 remoting 和 webservice 两项技术的理解和实际中的应用。其实现的原理并没有本质的区别,在应用开发层面上有以下区别:1、Remoting可以灵活的定义其所基于的协议,如果定义为HTTP,则与Web Service就没有什么区别了,一般都喜欢定义为TCP,这样比Web Service稍为高效一些2、Remoting不是标准,而

9、Web Service是标准;3、Remoting一般需要通过一个WinForm或是Windows服务进行启动,而Web Service则需要IIS进行启动。4、在VS.net开发环境中,专门对Web Service的调用进行了封装,用起来比Remoting方便我建议还是采用Web Service好些,对于开发来说更容易控制Remoting一般用在C/S的系统中,Web Service是用在B/S系统中后者还是各语言的通用接口相同之处就是都基于XML为了能清楚地描述Web Service 和Remoting之间得区别,我打算从他们的体系结构上来说起: Web Service大体上分为5个层次:

10、 1. Http传输信道 2. XML的数据格式 3. SOAP封装格式 4. WSDL的描述方式 5. UDDI 总体上来讲,.NET 下的 Web Service结构比较简单,也比较容易理解和应用: 一般来讲在.NET结构下的WebService应用都是基于.net framework以及IIS的架构之下,所以部署(Dispose)起来相对比较容易点. 从实现的角度来讲, 首先WebService必须把暴露给客户端的方法所在的类继承于:System.Web.Services.WebService这个基类 其次所暴露的方法前面必须有WebMethod或者WebMethodAttribute

11、WebService的运行机理 首先客户端从服务器的到WebService的WSDL,同时在客户端声称一个代理类(Proxy Class) 这个代理类负责与WebService服务器进行Request 和Response 当一个数据(XML格式的)被封装成SOAP格式的数据流发送到服务器端的时候,就会生成一个进程对象并且把接收到这个Request的SOAP包进行解析,然后对事物进行处理,处理结束以后再对这个计算结果进行SOAP包装,然后把这个包作为一个Response发送给客户端的代理类(Proxy Class),同样地,这个代理类也对这个SOAP包进行解析处理,继而进行后续操作。 这就是We

12、bService的一个运行过程。 下面对.net Remoting进行概括的阐述: .net Remoting 是在DCOM等基础上发展起来的一种技术,它的主要目的是实现跨平台、跨语言、穿透企业防火墙,这也是他的基本特点,与WebService有所不同的是,它支持HTTP以及TCP信道,而且它不仅能传输XML格式的SOAP包,也可以传输传统意义上的二进制流,这使得它变得效率更高也更加灵活。而且它不依赖于IIS,用户可以自己开发(Development)并部署(Dispose)自己喜欢的宿主服务器,所以从这些方面上来讲WebService其实上是.net Remoting的一种特例。ASP.NE

13、T Web 服务基础结构通过将 SOAP 消息映射到方法调用,为 Web 服务提供了简单的 API。通过提供一种非常简单的编程模型(基于将 SOAP 消息交换映射到方法调用),它实现了此机制。ASP.NET Web 服务的客户端不需要了解用于创建它们的平台、对象模型或编程语言。而服务也不需要了解向它们发送消息的客户端。唯一的要求是:双方都要认可正在创建和使用的 SOAP 消息的格式,该格式是由使用 WSDL 和 XML 架构 (XSD) 表示的 Web 服务合约定义来定义的。. NET Remoting 为分布式对象提供了一个基础结构。它使用既灵活又可扩展的管线向远程进程提供 .NET 的完全

14、对象语义。ASP.NET Web 服务基于消息传递提供非常简单的编程模型,而 .NET Remoting 提供较为复杂的功能,包括支持通过值或引用传递对象、回调,以及多对象激活和生命周期管理策略等。要使用 .NET Remoting,客户端需要了解所有这些详细信息,简而言之,需要使用 .NET 建立客户端。.NET Remoting 管线还支持 SOAP 消息,但必须注意这并没有改变其对客户端的要求。如果 Remoting 端点提供 .NET 专用的对象语义,不管是否通过 SOAP,客户端必须理解它们。13.什么是code-behind技术对于每一个Aspx文件可以相对应一个CS文件类,asp

15、x继承自对应的CodeBehind类,在编译时,CodeBhind类编译到webui工程对应的dll中,而aspx页面中的内含代码和aspx一起编译到temporary.dll中,被客户端浏览器访问。14.概述三层结构体系webUI层:封装基本的页面布局形式,即表示层DataAccess(DAO)层:数据访问层,利用各种相关的技术,与底层数据库进行交互Business层:业务逻辑层,封装整个程序的业务逻辑代码,主要与DAO层相关联Model 层: 封装程序领域对象,该层可以在上面的三层之间进行很好的交互这只是基本的三层架构设计,如果利用设计模式,则可以在此基础上进行灵活的变化如何实现MVC模式

16、,举例说明! 在A 中实现MVC模式,相对于 JAVA没有那么快捷,但是仍是可以实现的且由于代码隐藏和事件驱动得引入,意义不时很大,具体的实现,可以利用HttpHandler,如此,则应在Web.config文件中配置相关的节点/Author:renfuming 16.值类型和引用类型的区别?C# 支持两种类型:“值类型”和“引用类型”。 值类型(如 char、int 和 float)、枚举类型和结构类型。 引用类型包括类 (Class) 类型、接口类型、委托类型和数组类型。 值类型与引用类型的区别在于值类型的变量直接包含其数据,而引用类型的变量则存储对象引用。对于引用类型,两个变量可能引用同

17、一个对象,因此对一个变量的操作可能影响另一个变量所引用的对象。对于值类型,每个变量都有自己的数据副本,对一个变量的操作不可能影响另一个变量17.了解程序集强签名吗?用强名称来给程序集签名即谓之程序集强签名! 通过签发具有强签名的程序集合,可以确保名称的全局唯一性!因为强名称是依赖于唯一的密钥对来确保名称的唯一性,其他人不会生成与你相同的程序集名称(不同的私钥产生的名称不同) 强名称保护程序集的版本沿袭,因为强名称的唯一性能够确保没有其他人能够生成你的程序集的后续版本 强名称提供可靠的完整性检查,通过.NET Framework安全检查后,可以确保程序集内容在生成后未被更改过! 要注意的是,具有

18、强名称的程序集引用其他程序集,如果这个程序集没有强名称,那么具有强名称的程序集所带来的好处,并依旧会产生DLL冲突!因此具有强名称的程序集只能引用其他具有强名称的程序集。 18. C#中接口和类有什么区别?接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念!而类是负责功能的具体实现!在类中也有抽象类的定义,抽象类与接口的区别在于:抽象类是一个不完全的类,类里面有抽象的方法,属性,也可以有具体的方法和属性,需要进一步的专业化。但接口是一个行为的规范,里面的所有东西都是抽象的!一个类只可以继承一个基类也就是父类,但可以实现多个接口19.View State 的作用和实现方式?设置

19、是否要保存控件的状态,其功能的实质是利用隐藏表单域实现 如果设为false且在Page_Load中没有重新绑定数据的话,只要页面一刷新,控件的内容就没了 如果设为true,则页面会保存控件的内容 在一些不需要保存状态的页面中最好把它设为false,为什设为true会增加服务器的负担 隐藏域20.在ASP.net中可以利用哪些对象存储状态?几种维持状态的对象应用场合以及优缺点?主要用Application,session,viewstate,cookie,cache。 Application:应用程序级别的共享变量,优点是应用程序一开启该站点都能访问此变量。缺点:所有对此进行写入操作要加锁,由此

20、共享变量锁带来的内存开销只有此应用程序关闭才能结束。 Session:维护用户个人的状态信息,优点:个人所从事活动,如登录信息,购物车信息等较安全而且又服务器维护较稳定。缺点:维持http连接的sessionID仍然有缺陷,同时为每个用户维护状态信息,服务器内存开销很大。 Viewsate:如4所说,在一些场合能体现它的特点,但同时带来的缺点:影响整个页面的速度以及隐藏字段未加密。 Cookie:优点是将状态信息维护在客户端的一个文本文件,不需要耗用服务器的内存,是目前各大网站主要采用的方式。 缺点:由于其将状态信息存贮在客户端,很可能由别人破解此文件而获得此人的个人隐私和机密信息。其受限大小

21、为4K. Cache:优点是提供的此功能很强大,如文件缓存依赖、API依赖、数据库依赖以用于存贮数据变化而更换缓存状态数据。提供存储周期从httpcontext到httpruntime。缺点:耗用服务器内存。Request21.简单说说 ASP.NET 中基于表单的身份验证方式的用法?配置文件提供对站点那些目录的保护以及登录页面,当访问该目录的文件时,如果用户未认证通过,将转入登录页面, 用户输入用户名和密码,将此参数传入认证模块authentication,该模块负责认证,如果通过将isauthentication设置为true,并返回用户的identity对象,此时页面将转入初始请求页,如

22、果未通过,将不允许访问此目录。22.是否了解 URL Rewrite?请简要说明其原理和在 ASP.NET 中的实现方式?一般放在httpmodule中applicatioin_request事情中,当每次http请求,将此URL定位到重写的url函数中并返回重写后的URL地址。主要用于当我们站点板块移动时由于链接仍然指向旧地址,故可以重定向到新的地址,当然查询参数也可以重写。url-mapping配置23. 在超过10万条记录的页面显示时,你如何处理分页,有多少种替代方案?一般根据页面选择的第几页PageIndex,以及服务端配置文件配置的每页行数PageSize,通过传入参数传入存贮过程,

23、由其返回相应行数pagesize的记录。即每一页数据都由服务端返回。可以利用缓存Cache,将数据一次加载,在结合2.0中数据库缓存方式,跟踪数据库表的信息的变化,自动更新缓存信息 对于数据分野页,也可以利用gridview的数据邦定控件的自动分页的方式24. DataReader和DataSet的异同?Daatareader和datatset都是通过从数据源取数据。不同点:datareader提供只进行流的方式读取数据。Dataset提供一种容器里面主要由表以及表关系,由适配器来提供从数据源取得数据填充到此容器的表中。DataReader和DataSet最大的区别在于,DataReader使

24、用时始终占用SqlConnection,在线操作数据库.任何对SqlConnection的操作都会引发DataReader的异常.因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的.因为DataReader的特殊性和高性能.所以DataReader是只进的.你读了第一条后就不能再去读取第一条了.DataSet则是将数据一次性加载在内存中.抛弃数据库连接.读取完毕即放弃数据库连接.因为DataSet将数据全部加载在内存中.所以比较消耗内存.但是确比DataReader要灵活.可以动态的添加行,列,数据.对数据库进行回传更新操作25. 你会利用那些工具进行数据库的性能分析及

25、其优化?说说你觉得优化数据库需要注意的方面。比如:如何设计优化查询为主、插入更新为主的表。我主要通过执行计划以及索引优化以及客户统计和服务器跟踪工具来检测从SQL到索引、硬盘IO和时间等信息。 对于查询为主的表,首先对数据量的大小有一定的估计,当达到一定程度应采用水平分区,有的根据主键有的根据时间段来区分。由于此表往往插入更新不是太快,可对适当字段采用索引并且填充因子可以尽量大。SQL优化等。 对于插入更新为主的表,我觉得健壮性更重要,只要根据标准外部采用存贮过程就可以了。26. 数据库某表主键自增,是很常见的情形。在ASP. Net或C#程序中,要求向该表插入一条记录,并马上从该表查出这条记

26、录。不能使用时间戳,请问你如何实现?插入一条记录会返回identity,通过它就是该记录的主键,再select一下就可以了27.Xhtml的三种DOCTYPE分别有什么含义?请说明。简单说明各个情况下,那些标签可以使用,那些不可以使用?XHTML 1.0 提供了三种DTD声明可供选择:W3C规范过渡的(Transitional):要求非常宽松的DTD,它允许你继续使用HTML4.01的标识(但是要符合xhtml的写法)。完整代码如下:严格的(Strict):要求严格的DTD,你不能使用任何表现层的标识和属性,例如。完整代码如下:框架的(Frameset):专门针对框架页面设计使用的DTD,如果

27、你的页面中包含有框架,需要采用这种DTD。完整代码如下:28.请举例说明XHtml代码规范,越多越好。1.所有的标记都必须要有一个相应的结束标记以前在HTML中,你可以打开许多标签,例如和而不一定写对应的和来关闭它们。但在XHTML中这是不合法的。XHTML要求有严谨的结构,所有标签必须关闭。如果是单独不成对的标签,在标签最后加一个/来关闭它。例如: 2.所有标签的元素和属性的名字都必须使用小写与HTML不一样,XHTML对大小写是敏感的,和是不同的标签。XHTML要求所有的标签和属性的名字都必须使用小写。例如:必须写成 。大小写夹杂也是不被认可的,通常dreamweaver自动生成的属性名字

28、onMouseOver也必须修改成onmouseover。3.所有的XML标记都必须合理嵌套同样因为XHTML要求有严谨的结构,因此所有的嵌套都必须按顺序,以前我们这样写的代码: 必须修改为: 就是说,一层一层的嵌套必须是严格对称。4.所有的属性必须用引号括起来在HTML中,你可以不需要给属性值加引号,但是在XHTML中,它们必须被加引号。例如: 必须修改为: 特殊情况,你需要在属性值里使用双引号,你可以用,单引号可以使用',例如: 5.把所有和&特殊符号用编码表示任何小于号(),不是标签的一部分,都必须被编码为& g t ; 任何与号(&),不是实体的一部分的,都必须被编码为& a

29、 m p; 注:以上字符之间无空格。6.给所有属性赋一个值XHTML规定所有属性都必须有一个值,没有值的就重复本身。例如: 必须修改为: 7.不要在注释内容中使“-”“-”只能发生在XHTML注释的开头和结束,也就是说,在内容中它们不再有效。例如下面的代码是无效的: 用等号或者空格替换内部的虚线。 以上这些规范有的看上去比较奇怪,但这一切都是为了使我们的代码有一个统一、唯一的标准,便于以后的数据再利用。29. 客户端与浏览器:如果让你做一个TreeView控件,你的思路我会采用javascript来做,主要采用htc。 数据通过XML. 通过htc操作XML并定义一些方法如:load、addn

30、ode、deletenode、updatenode、selectednode等方法一些属性如对图标、节点位置、节点前复选框等属性,也会提供一些默认事件如修改节点前后刷新等。30.谈谈论坛聊天室IM和各种网站程序的交互与刷新思路的差异与共同点。IM交互式信息通信 ajax刷新思路,对于集中刷新方式,应该有部分和全部刷新的区别这个希望大家上网去找详细的资料31.谈谈对WSE的认识。目前Web Service广泛采用Https来保障安全,但是该方法也有很多的缺点,尤其是应用于现在越来越复杂的Web Service安全需求。1.Https提供的是点对点安全保护,而Web Service的特点就是消息往

31、往就要经过多个中介才能到达最终的服务提供方,每个中介还有可能对消息做出些处理,也就是说它需要的是端到端的保护。这显然是Https所不能提供的。2.Https是在传输层提供的安全,而不是在消息层面,也就是只有在传输的过程中才有消息才是安全的(加密的),而一旦到达了终点就是明文的了。比如可以从消息队列中将重要的信息窃取出来。3.在Https的建立完共享密钥后,传递消息的时候并没有使用数字签名技术,所以也就无法得到抗否认性的能力。而这又是在电子商务中不可豁缺的。4.由于Https提供的是传输层的安全,当然也就不可能达到消息安全所需要的灵活性的要求。比如加密消息中的部分元素;用不同的密钥加密消息的不同

32、部分,从而让不同的消息接受者查看与之对应的信息。因此,为了适应Web Service对安全的特殊要求,IBM和MS等公司共同制定了WS-Security规范。重新回顾安全问题的三个概念:Confidentiality(机密性), Integrity(完整性), Authentication(身份鉴别),在Web Service使用SOAP(XML 格式)作为消息传输协议的背景下,分别产生了XML Digital Signature,XML Encryption和SAML(XML格式的Security Token), 而WS-Security则是如何将他们组合起来以满足Web Service安全

33、需求的一套规范Web Services Enhancements 2.0 for Microsoft .NET (WSE)是一个用来建设Web服务的.NET类库,它支持最新的Web服务协议,包括WS-Security、WS-SecureConversation、WS-Trust、WS-Policy、WS-SecurityPolicy、WS-Addressing和 WS-Attachments。 WSE可使开发人员跨安全平台建设可升级的、安全的Web服务。它支持用传输的方式发送SOAP消息,而不是HTTP。另一个特点是具有建立SOAP路由器的功能,SOAP消息被发送给SOAP路由器,路由器再将工

34、作交付给托管该服务的Web服务器。32. 你用过哪些版本控制工具-各位同学兄弟可以根据自己的实际情况,谈论一些自己在使用这些工具时所遇到的问题以及体会TFS(ASP.Net)、cvs、svn33. 在开发中你利用那些工具进行单元测试和模块测试NUNIT和PDM.页面测试 httpunuit34如何进行Bug管理由一个BUG跟踪平台,提供该程序的各个模块的BUG,以及级别,以及解决时间等信息35. 如何生成和管理开发文档一般用NDOC来生成文档,大部分文档主要还是Word为主。主要是各个模块以及版本的控制等36.请用代码简单描述一下Singleton、抽象工厂、策略模式、Composite(任选

35、三个)的设计模式的概念Singleton 单一模式所有类共享一个实例下面这种实现方式对多线程来说是安全的,同时线程不是每次都加锁,只有判断对象实例没有被创建时它才加锁,有了我们上面第一部分的里面的分析,我们知道,加锁后还得再进行对象是否已被创建的判断。它解决了线程并发问题,同时避免在每个 Instance 属性方法的调用中都出现独占锁定。它还允许您将实例化延迟到第一次访问对象时发生。实际上,应用程序很少需要这种类型的实现。大多数情况下我们会用静态初始化。这种方式仍然有很多缺点:无法实现延迟初始化。/author:renfuming public sealed class Singleton 2

36、 3 static Singleton instance=null; 4 static readonly object padlock = new object(); 6 Singleton()10 public static Singleton Instance12 get14 if (instance=null)16 lock (padlock)18 if (instance=null)20 instance = new Singleton();21 22 23 24 return instance;25 26 27抽象工厂(工厂方法)using System;/author:renfum

37、ingnamespace TestStrategypublic interface IFactoryvoid Method();public class MyProductA:IFactorypublic MyProductA()Console.WriteLine(已经生产产品A);public void Method()Console.WriteLine(实现产品A的具体功能!);public class MyProductB:IFactorypublic MyProductB()Console.WriteLine(已经生产产品B);public void Method()Console.W

38、riteLine(实现产品B的具体功能!);public class CreateProductAFractorypublic static MyProductA CreateProductA()return new MyProductA();public class CreateProductBFractorypublic static MyProductB CreateProductB()return new MyProductB();public class TestFactorypublic static void Main(string args)IFactory ifact=Cre

39、ateProductAFractory.CreateProductA();ifact.Method();Console.WriteLine(-);ifact=CreateProductBFractory.CreateProductB();ifact.Method();策略模式:属于对象行为型模式,主要针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得他们可以相互替换。策略模式适合用于当一个应用程序需要实现一种特定的服务或者功能,而且该程序有多种不同的实现方式可以使用时使用。策略模式中有三个对象:1、 环境对象:该类中实现了对抽象策略中定义的接口或者抽象类的引用。2、 抽象策略对

40、象:他可以又接口或者抽象类进行实现3、 具体策略对象:他封装了实现对同一动作不同功能的不同算法;利用策略模式构建的应用程序,可以根据用户配置等内容,选择不同算法来实现应用程序的功能,具体的选择由环境对象来完成。采用这种方式可以避免由于使用条件语句而带来的代码混乱,提高应用程序的灵活性和条理性。using System;/author:renfumingnamespace TestStrategypublic interface Strategyvoid PrintCount(string fruitName,int count);public class MyChoilceA:Strategy

41、public void PrintCount(string fruitName,int count)Console.WriteLine(0实现5折后的价格是:1,fruitName,count*0.5);public class MyChoiceB:Strategypublic void PrintCount(string fruitName, int count)Console.WriteLine(0实现6折后的价格是:1,fruitName,count*0.6);public class MyChoiceC:Strategypublic void PrintCount(string fru

42、itName, int count)Console.WriteLine(0实现7折后的价格是:1,fruitName,count*0.7);public class ChoiceContextStrategy objStrategy;public ChoiceContext(Strategy obj)this.objStrategy=obj;public void Execute(string name,int count)this.objStrategy.PrintCount(name,count);class MyTestClassSTAThreadstatic void Main(str

43、ing args)ChoiceContext objA=new ChoiceContext(new MyChoilceA();objA.Execute(苹果,1000);ChoiceContext objB=new ChoiceContext(new MyChoiceB();objB.Execute(香蕉,1000);ChoiceContext objC=new ChoiceContext(new MyChoiceC();objC.Execute(橘子,1000);上面的例子是我自己写的,有不足之处,请自己网上更正!37.如果你是一位软件架构师,您将如何去搭建一个符合n-tie的架构?并请描述

44、一下您搭建的每一层的作用。(注意:请您考虑项目中有WebService的情况)主要根据实际情况来决定搭建的层数以及各层的规格。 一般情况下,可如下搭: 数据层:主要提供数据服务,该层继承实体的接口并定制自己的数据提取和存储。并根据数据库类型如sqlserver、oracle等来建立此层服务。执行逻辑我个人偏好采用存贮过程。 业务层:由于定制的实体的属性和操作实体的方法已由数据层获得和执行,故业务逻辑组件对此实体进行组合以满足上层对业务逻辑组件的调用,webservice也是建在此层,以用于提供数据服务和逻辑执行。表示层:一般定制不同的容器控件,以用于加载从业务层不同类型的数据便于呈现。当然也要

45、此层的风格以及各种显示设置,webservice显示页面建在层,通过加载对指定目录的webservice提供的方法用于呈现。38.可否简要的介绍 2.0 Membership,WebPart和C#的匿名函数和泛型等你认为.net 2.0自己感兴趣的内容,希望可以简要地阐述其中的特点(本题非常的重要)1 Membership:成员管理主要提供了一套对用户信息、用户角色、用户配置信息的用户系统。通过MembershipConfigHandler加载配置文件中公有的基础信息,对配置文件中的信息进行了严格的边界检查和类型检查。通过MembershipProvider提供了实现membership的抽象

46、方法以及配置信息。由SqlMembershipProvider继承MembershipProvider来实现sqlclient的数据提供服务。业务和实现相剥离,以利于扩展。当然里面有很多特点也有很多细节等。 2 WebPart:主要提供页面布局和自定义以及换皮肤的功能。通过定义主题Theme来决定整体的布局风格,以及版面通过设定不同的区域Zone来决定版面各块的区域设置。通过不同的skin和css来确定风格。让用户能够保存自己的个人设置以及回复默认设置的功能。 3 匿名函数:使用匿名方法可以减少因实例化委托所需要的开销,1.0中使用委托必须实例化委托并且必须将所调用的类和方法作为参数传入也即命

47、名方法,当然如果所调用的委托具有多变性应该还采用命名方法。 4 泛型:一般用于集合类。由于以前集合类数据都由framework隐式转化为object类型,这种开销很大。而用泛型,你就可以指定传入对象类型,而用于生成强类型的数据集,这样各种操作就可以使用指定类型的特性和优势了,自然速度也快了很多。当然接口、方法、类等都同样使用这种方式5 编译模型除了1.0支持的批编译,也提供新的编译模式。 6 在httpmodule和httphander的处理速度要比以前1.0要快。 7 在请求响应输出中,将缓冲区由宿主进程移到本机内存,可以消除资源瓶颈。 8 其缓存模型提供了数据库依赖和缓存后替功能。 9 与

48、IIS6.0集中能提供更好的性能,主要体现在缓存和缓冲操作上。39.A中的内建对象Page对象:Web Form 网页在执行的时候会被编译成Page 对象,Page对象通知来设置与网页有关的属性、方法和事件; Response对象:用来决定服务器端在什么时候或如何输出数据到客户端; Request对象:用来捕获由客户端返回服务器的数据; Server对象:提供服务器端最基本的属性和方法; Application对象:用来记录不击客户端共享的变量; Session对象:用来记录各客户端的专用变量; Cookies对象:为Web应用程序保存访问者相关信息40.NET具有跨平台的性质吗?现在是否可以

49、在UNIX平台上广泛的应用?非常了不起的工具INET,实现.NET跨平台!执行摘要微软的.NET是一套连接信息、人、系统、设备的软件技术。此新一代的技术是基于Web服务和小模块创建的应用,可以使任何应用彼此互连并且能连接到Internet上的其他大型应用。.NET的基础核心是集成开发设备(IDE), Visual Studio.NET和一种新的应用执行环境-Microsoft .net开发框架。这些系统使开发人员能够像灵活使用 Visual Basic 和C#一样开发强大的应用程序和Web服务。 但是有局限的一点是:用.net开发的应用程序必须运行于.net服务器或者客户端。如果所有的用户都按

50、照.NET运行环境技术标准化这也许可行,但是实际上当然不是这样。成千上百万台电脑运行的是Linux、Unix, OS X 和其他操作系统,而这种环境不是.NET应用程序的标准化运行环境。因此软件开发组织需要考虑: 如何有效利用它们的 Microsoft开发人员和Visual Studio.NET的技术特征和优势但是仍然可以访问非微软服务器, PC机,手提电脑和移动设备?怎样才能使他们用.NET编写的程序运行时不受运行环境的局限? Stryon公司开发的iNET解决了这一难题。iNET可以使应用程序和Web服务在Visual Basic 和C#下开发,但发布于任何支持Java的运行环境,网络主机

51、也从IBM网络服务器扩展到Linux和Unix的服务器。有了iNET技术,开发人员既可以利用Visual Studio .net开发环境的优势,但是又不局限于Microsoft的运行环境。 41.写出global.asax文件的主要用途?作用和asp的global.asa一样,它可以使我们执行应用程序一层事件的代码,如:application_start等等,使你可以在这些事件中作一些自定义的处理;也可以定义应用程序一层的变量,如:Session等,这在整个应用程序中起作用。 42.列出web.config的常用的配置段,并对每个配置段进行简要的说明。Web.config文件是一个XML文本文件,它用来储存 A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论