1.有哪几种方法可以实现一个类存取另外一个类的成员函数及属性,并请举列来加以说明
和分析.
直接调用
发射
2.A类是B类的基类,并且都有自己的构造,析构函数,请举例证明B类从实例化到消亡过程
中构造,析构函数的执行过程.请附code
父类若没有默认构造,子类必须在其构造函数内显式调用父类的带参构造才能保证子类对象的顺利实例化
类层层派生,在实例化的时候构造函数的调用顺序是怎样的? --从顶层基类开始向子类方向顺序调用无参构造.
默认构造(无参构造)和带参构造什么时候调用?--默认将从顶层父类的默认构造一直调用到当前类的默认构造.
下面是C#继承构造函数实现及调用示例:
/**//*--===------------------------------------------===---
若希望类能够有派生类,必须为其实现默认构造函数.
若类没有实现带参构造,编译器将自动创建默认构造函数.
若类实现了带参构造,则编译器不会自动生成默认构造.
--===------------------------------------------===---*/
using System; //C#继承构造函数实现及调用
namespace xumh
{
public class MyClass
{
public MyClass()
{
Console.WriteLine("MyClass:默认构造函数");
}
public MyClass(int a, int b)
{
Console.WriteLine("MyClass带参构造:a={0}, b={1}.", a, b);
}
}
public class MyClass2 : MyClass
{
public MyClass2()
{
Console.WriteLine("MyClass2:默认构造函数");
}
public MyClass2(int a, int b)
{
Console.WriteLine("MyClass2带参构造:a={0}, b={1}.", a, b);
}
}
//C#继承构造函数实现及调用
public class MyClass3 : MyClass2
{
public MyClass3()
{
Console.WriteLine("MyClass3:默认构造函数");
}
public MyClass3(int a, int b)
{
Console.WriteLine("MyClass3带参构造:a={0}, b={1}.", a, b);
}
}
writeline函数public class runMyApp
{
static void Main()
{
MyClass3 my = new MyClass3(3,4);
}
}
} //C#继承构造函数实现及调用
/**//*--===------------------------------------------===---
输出如下:
MyClass:默认构造函数
MyClass2:默认构造函数
MyClass3带参构造:a=3, b=4.
--===------------------------------------------===---*/
3.什么叫应用程序域?
在.N ET平台下,程序集并没有直接承载在进程中(而传统的win32程序是直接承载的)。实际上.N ET可执行程序承载在进程的一个逻辑分区中,术语称为应用程序域(也称A ppDomain)。可见,一个进程可以包含多个应用程序域,每一个应用程序域中承载一个.N ET可执行程序,这样的好处如下:
应用程序域是.N ET平台操作系统独立性的关键特性。这种逻辑分区将不同操作系统加载可执行程序的差异抽象化了。
和一个完整的进程相比,应用程序域的CPU和内存占用要小的多。因此C LR加载和卸载应用程序域比起完整的进程来说也快的多。
应用程序域为承载的应用程序提供了深度隔离。如果进程中一个应用程序域失败了,其他的应用程序域也能保持正常。
A ppDomain的主要成员:
C reateDomain():该静态方法在当前进程中创建一个新的应用程序域。由于C LR能够根据需要创建应用程序域,所以必须调
用这个方法的机会很少。
GetCurrentThreadI d():该静态方法返回当前应用程序域上活动的线程I D。
U nLoad():该静态方法在进程中卸载指定的应用程序域。
Bas eDirec tory:获取基目录,该目录用于探测相关的程序集。
C reateI ns tanc e():在指定程序集文件中创建指定类型的新实例。
E xec uteAssembly():根据文件名在应用程序域中执行程序集。
GetAssemblies():获取已加载到此应用程序域中的.NE T程序集(基于COM和C的二进制文件除外)。
Load():动态加载程序集到当前应用程序域。
4.进程与线程的关系
线程(threads, 台湾称执行绪),也被称为轻量进程(lightweight proc esses)。计算机科学术语,指运行中的程序的调度单位。
线程是进程中的实体,一个进程可以拥有多个线程,一个线程必须有一个父进程。线程不拥有系统资源,只有运行必须的一些数据结构;它与父进程的其它线程共享该进程所拥有的全部资源。线程可以创建和撤消线程,从而实现程序的并发执行。一般,线程具有就绪、阻塞和运行三种基本状态。
在多中央处理器的系统里,不同线程可以同时在不同的中央处理器上运行,甚至当它们属于同一个进程时也是如此。大多数支持多处理器的操作系统都提供编程接口来让进程可以控制自己的线程与各处理器之间的关联度(affinity)。
5.什么是托管代码?
托管代码 (managed c ode)由公共语言运行库环境(而不是直接由操作系统)执行的代码。托管代码应用程序可以获得公共语言运行库服务,例如自动垃圾回收、运行库类型检查和安全支持等。
托管代码又 runtime来执行。反之就是非托管。
runtime有很多好处:
1。安全性,像数组越界,类型安全什么的。
2。语言互操作性,可以使用多种语言。
3。易用性,垃圾收集啥的。
托管代码在Framework下运行,底层的交互由framework做。
非托管代码就是脱离Framework的控制,同底层交互,资源则需要手动去释放
6.什么是强类型系统?什么是装箱拆箱?
C# 是强类型语言;因此每个变量和对象都必须具有声明类型。
装箱(boxing)和拆箱(unboxing)是.NET提出得新概念!
.NET的所有类型都是由基类Sys tem.O bject继承过来的,包括最常用的基础类型:int, byte, s hort,bool等等,就是说所有的事物都是对象。如果申明这些类型得时候都在堆(H EAP)中分配内存,会造成极低的效率!(个中原因以及关于堆和栈得区别会在另一篇里单独得说说!)
.NET如何解决这个问题得了?正是通过将类型分成值型(value)和引用型(regerenc etype),C#中定义的值类型包括原类型(Sbyte、Byte、Short、Us hort、I nt、U int、Long、Ulong、C har、Float、Do
uble、Bool、Dec imal)、枚举(enum)、结构(s truc t),引用类型包括:类、数组、接口、委托、字符串等。
值型就是在栈中分配内存,在申明的同时就初始化,以确保数据不为N ULL;
引用型是在堆中分配内存,初始化为null,引用型是需要GARBAGE COLLECTION来回收内存的,值型不用,超出了作用范围,系统就会自动释放!
下面就来说装箱和拆箱的定义!
装箱就是隐式的将一个值型转换为引用型对象。比如:
int i=0;
Syste.O bj ec t obj=i;
这个过程就是装箱!就是将i装箱!
拆箱就是将一个引用型对象转换成任意值型!比如:
int i=0;
System.O bj ec t obj=i;
int j=(int)obj;
这个过程前2句是将i装箱,后一句是将obj拆箱!
再写个代码,看看进行了几次装拆箱!
int i=0;
System.O bj ec t obj=i;
Cons ole.WriteLine(i+","+(int)obj);
其中共发生了3次装箱和一次拆箱!^_^,看出来了吧?!
第一次是将i装箱,第2次是输出的时候将i转换成s tring类型,而s tring类型为引用类型,即又是装箱,第三次装箱就是(int)obj 的转换成s tring类型,装箱!
拆箱就是(int)obj,将obj拆箱!!
7.身份验证和授权的区别
身份验证:身份验证就是一个解决谁有权力进入系统的问题,通常的做法就是跟系统维护的用户名单进行核对,这样转化为一个实际的技术问题:如果有效的判断一个用户是不是系统的有效用户。这个过程就是—A uthentic ation( 身份验证 )
专业说法:接收用户凭据,并根据指定的颁发机构来验证凭据的过程成为身份验证
Asp 提供三种身份验证方式: Windows验证、 Forms验证、 P ass port 验证 .
身份验证的使用是通过配置 Web.c onf ig 文件的 < A uthentic ation > 配置节来实现的。
授权:授权就是确认用户拥有足够的权限来访问请求的资源.As p 提供两类授权服务:文件授权服务、 U RL 授权服务
ASP.NET授权决定了是否应授予某个标识对特定资源的访问权限。在 ASP.NET 中,有两种方式来授予对给定资源的访问权限:
●文件授权文件授权由FileAuthorizationModule执行。它检查 .aspx 或 .asmx 处理程序文件
的访问控制列表(ACL) 以确定用户是否应该具有对文件的访问权限。ACL 权限用于验证用户的
Windows 标识(如果已启用 Windows 身份验证)或 ASP.NET 进程的Windows 标识。有关更
多信息,请参见ASP.NET 模拟。
●URL 授权 URL 授权由UrlAuthorizationModule执行,它将用户和角映射到 ASP.NET 应用
程序中的URL。这个模块可用于有选择地允许或拒绝特定用户或角对应用程序的任意部分(通常为
目录)的访问权限。
使用URL 授权
通过URL 授权,您可以显式允许或拒绝某个用户名或角对特定目录的访问权限。为此,请在该目录的配置文件中创建一个authorization 节。若要启用URL 授权,请在配置文件的authorization节中的allow或deny元素中指定一个用户或角列表。为目录建立的权限也会应用到其子目录,除非子目录中的配置文件重写这些权限。
下面显示了 authorization 节的语法:
<authorization>
<[allow|deny] users rolesverbs />
</authorization>
allow 或 deny 元素是必需的。必须指定 users 或 roles 属性。可以同时包含二者,但这不是必需的。verbs 属性可选。
8.Net中读写数据库需要用到哪些类?他们的作用
9.ASP的身份验证方式有哪些?分别是什么原理?
身份验证是从用户处获取标识凭据(如用户名和密码)并通过某些授权机构验证那些凭据的过程。如果这些凭据有效,则将提交这些凭据的实体视为通过身份验证。在身份得到验证后,授权进程将确定该身份是否可以访问给定资源。
Windows身份验证将 M ic rosoft Internet 信息服务 (I IS) 所提供的用户标识视为已经过身份验证的用户。I IS 提供了大量用于验证用户标识的身份验证机制,其中包括匿名身份验证、Windows集成的 (N TLM) 身份验证、Windows集成的 (Kerberos)
身份验证、基本(bas e64编码)身份验证、摘要式身份验证以及基于客户端证书的身份验证。
在 A SP.NET中,使用WindowsAuthenticationModule模块来实现 Windows身份验证。该模块根据 I I S 所提供的凭据构造一个WindowsIdentity,并将该标识设置为该应用程序的当前User属性值。
Windows身份验证是 ASP.NET应用程序的默认身份验证机制,并指定作为使用authentication配置元素的应用程序的身份验证模式,如下面的示例所示。
<s ys tem.web>
<authentication mode="Window s"/>
</s ys tem.web>
Forms身份验证提供了一种方法,使您可以使用自己的代码对用户进行身份验证,然后将身份验证标记保留在 C ookie 或页的URL 中。Forms身份验证通过FormsAuthenticationModule参与ASP.NET 页的生命周期。可以通过FormsAuthentication类访问 Forms身份验证信息和功能。
若要使用 Forms身份验证,可以创建一个登录页。该登录页既收集了用户的凭据,又包括验证这些凭据时所需的代码。如果这些凭据有效,可以调用FormsAuthentication类的方法,以便使用适当的身份验证票证(C ookie) 将请求重定向到最初请求的资源。如果不需要进行重定向,只需获取 Forms身份验证 C ookie 或对其进行设置即可。
使用authentication配置元素对 Forms身份验证进行配置。最简单的情况是,在 Web.c onfig 文件或单独的文件中,可以通过指定 U RL 将未经身份验证的请求重定向到某个登录页,然后提供该登录页的
最小实现,并提供有效的凭据。下面的示例演示配置文件的一部分。该配置文件为Authenticate方法指定了登录页和身份验证凭据。密码已经使用HashPasswordF orStoringInConfigFile方法进行加密。
<authentic ation mode="Forms">
<forms name="SavingsPlan" loginU rl="/Logon.as px">
<c redentials pass wordFormat="SHA1">
<us er name="Kim"
pass word="07B7F3EE06F278DB966BE960E7CBBD103DF30CA6"/>
<us er name="John"
pass word="BA56E5E0366D003E98EA1C7F04ABF8FCB3753889"/>
</c redentials>
</forms>
</authentication>
成功通过身份验证之后,FormsAuthenticationModule模块将会使用经过身份验证的用户信息填充当前的User属性。
下面的代码示例演示如何以编程方式读取经过 Forms身份验证的用户的标识。
使用 Forms身份验证的简便方法是,使用 ASP.NET成员资格和 A SP.NET登录控件。ASP.NET成员资格提供了一种存储和管理信息的方法,它包括各种用户身份验证方法。A SP.NET登录控件使用 ASP.NET成员资格并封装提示用户输入凭据时所需的逻辑、验证用户或恢复或替换密码等。事实上,A SP.NET成员资格和 A SP.NET登录控件在 Forms身份验证中提供了一个抽象层,可以替换使用 Forms身份验证时必须执行的大部分或全部工作。
Passport 身份验证是由Microsoft提供的集中身份验证服务,该服务为成员站点提供单一登录和核心配置文件服务。Passport之所以让用户受益匪浅,原因在于用户不必登录访问受到限制的新资源或站点。如果希望您的站点与 Passport 身份验证及授权兼容,则应该使用该提供程序。
10.解释一下UDDI、WSDL、SOAP的意义及其作用.
UDDI是一种目录服务,企业可以使用它对 Web s ervices进行注册和搜索。
UDDI,英文为 "U niversal Desc ription, Disc overy and I ntegration",可译为“通用描述、发现与集成
服务”。
WSDL(网络服务描述语言,Web Services Desc ription Language)是一门基于 XML 的语言,用于描述 Web Services以
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论