最基本的区别是ASMX或ASP.netweb服务用于通过基于HTTP的SOAP实现通信。 但是,WCF可以使用任何协议(HTTP、TCP/IP、MSMQ、命名pipes等),消息封装可以使用任何格式(默认SOAP )。
有关详细比较,请参见WCFVsASMX
如何理解WCF的服务结束点?
对于WCF服务,Endpoints泄露了调用的方法; 客户端需要知道这些细节才能与服务端进行通信。 各Endpoints是用于通信的入口,客户端和服务器通过Endpoint交换信息。 WCFServiceEndpoint通常包含三个基本元素:
地址:定义了“where”,一组URL标识服务的地址;
绑定:定义“how”并确定服务器如何访问。 例如,消息传输的传输协议(例如TCP、HTTP )、安全性;例如SSL、SOAP消息安全性)。
contract:「what”,即定义服务提供的内容和合同方法,描述消息中包含的内容和消息的组织和操作方法。 例如,one-way、duplex和request/reply。
1我能用那些方法托管wcf服务吗?
要托管wcf服务,必须至少有一个主机进度、服务主机实例和相应的Endpoint配置。 可能的情况如下
2主机程序或自主机[ managed application/self hosting ] :
控制台APP应用
windows APP
windows服务
2.web服务器主机
IIS 6.0 (ASP.netapplicationsupportsonlyhttp )。
windowsprocessactivationservice (was ) i.e.IIS7.0supportsHTTP,TCP,命名pipes,MSMQ。
4 .如何在wcf服务上启用操作过载?
默认情况下,WSDL不支持操作重载,重载行为必须在OperationContract的Name属性中执行。 如下所示。
1:[服务控制]
2:接口模块
3:{
4: [操作约束(name=' sumint ' ) ]
5:Intsum(Intarg1、intarg2);
6:
7: [操作约束(name=' sum double ' ) ]
8:双精度和(双精度arg 1,双精度arg2);
9:}
这些代码最终转换为两种方法: SumInt和SumDouble。
5.WCF有哪些信息交换模式(消息交换模式)?
a .请求/回应模式:
作为默认MEP,此模式在调用服务操作的同时向请求者发送响应消息,并立即返回void类型且为空的SAOP包。
b .单工模式:
在某些情况下,可能需要调用服务执行的某些特定逻辑,但不需要接受反馈。 在这种情况下,必须使用单一模式。 如果需要消息队列,单模是唯一的选择。
c .双重模式:
双模简单来说就是双向的信息通道。 适用于需要发送消息开始长期运行并在运行完成后发送通知的情况。
什么是DataContractSerializer? 还有XmlSerializer的领域是什么?
序列化的过程是将对象实例转换为可移植、可传输的信息格式。 因此,序列化对于任何Web服务来说都是非常重要的步骤。
ss="p0">从.NET3.0开始,WCF增加了基于显示选择模式(opt-in )的DataContractSerializer。而XmlSerializer则是否决模式(opt-out)。前者表示我们需要指定需要序列化的内容,而后者则需要指定不需要序列化的内容。DataContractSerializer比XmlSerializer通常快约10%,但是对于对象如何被序列化几乎无法控制,所以如果需要干预对象的序列化,最好使用XmlSerializer。
7.怎样在WCF中将MessageConract和DataContract分部使用?
MessageContract必须整个使用或者不适用。如果我们在服务操作(Operation)的签名上使用了MessageContract,那么操作符它就只能作为操作的唯一参数类型和返回值类型。
8.如果要取代已有的ASMX WebService,应该使用哪种标准绑定方式?
basicHttpBinding方式绑定的WCF Service,与ASMX/ASP.NET web service的表现几乎一致。
9.简述WCF中的实例模式?
WCF总是将请求绑定了一个特定的服务实例,因此可能的模式包括:
Per Call:每次调用都创建一个实例,能够有效利用内存,但需要使用特别手段来维护Session。
Per Session:为每个用户的整个会话期建立一个实例。
Single:所有终端和用户共享唯一的会话,内存效率最低。
9.简述WCF中的安全模式?解析传输层和消息层安全的不同。
在WCF中,我们可以在不同的级别上定义安全性配置:
a.传输层安全
传输层安全需要考虑消息在物理链路上的完整性、私密性和认证,它依赖于Binding方式,因为大部分的Binding本身都包含了内置的安全处理。
1: <netTcpBinding>
2: <binding name="netTcpTransportBinding">
3: <security mode="Transport">
4: <Transport clientCredentialType="Windows" />
5: </security>
6: </binding>
7: </netTcpBinding>
b.消息层安全
消息层安全通常是指消息的加密。
1: <wsHttpBinding>
2: <binding name="wsHttpMessageBinding">
3: <security mode="Message">
4: <Message clientCredentialType="UserName" />
5: </security>
6: </binding>
7: </wsHttpBinding>
这种安全性通常依赖于需求,但是我们可以使用一种复合的安全模式,如下:
1: <basicHttpBinding>
2: <binding name="basicHttp">
3: <security mode="TransportWithMessageCredential">
4: <Transport />
5: <Message clientCredentialType="UserName" />
6: </security>
7: </binding>
8: </basicHttpBinding>
原文:http://www.codeproject.com/Articles/426776/WCF-Top-10-Interview-Questions