分享

WCF和ASMX WebService的区别是什么

 昵称10504424 2013-07-11

最基本的区别在于,ASMX或者ASP.NET WebService是用来通过基于HTTPSOAP来实现通讯。但WCF可以使用任意协议(HTTP,TCP/IP,MSMQ,NamedPipes等),消息封装可以使用任意格式(默认SOAP)。

更多的细节比较,可以参考:WCF Vs ASMX

怎么理解WCFService EndPoints

对于WCF服务来说,Endpoints暴漏了其被调用的方式;客户端必须知道这些细节才能够与服务端进行通讯。每个Endpoints就是用于通信的入口,客户端和服务端通过Endpoint交换信息。一个WCF Service Endpoint一般包括3个基本的元素:

· Address:定义了WHERE,一串URL标识了服务的地址;

· Binding:定义了HOW,确定服务器怎么被访问,例如消息发送的传输协议(如TCPHTTP),安全(如SSLSOAP消息安全)。

· Contract:定义了WHAT,即服务提供的内容和契约方式,描述的是消息所包含的内容,以及消息的组织和操作方式,例如是one-way,duplexrequest/reply

1 通过那些方式可以托管WCF Service

要托管WCF Service,必须具备至少一个托管的进行,一个ServiceHost实例和一份正确Endpoint配置。可能的情况如下:

2 托管程序或者自我托管[Managed Application/ Self Hosting]

· Console Application

· Windows Application

· Windows Service

2.    Web Server托管

· IIS 6.0 (ASP.NET Application supports only HTTP)

· Windows Process Activation Service (WAS) i.e. IIS 7.0 supports HTTP, TCP, NamedPipes, MSMQ.

4.    怎样在WCF Service中启用操作重载(Operation Overloading )?

默认情况下,WSDL不支持操作重载,重载行为必须通过OperationContractName属性来实现。如下:

  1: [ServiceContract]

  2: interface IMyCalculator

  3: {

  4:    [OperationContract(Name = "SumInt")]

  5:    int Sum(int arg1,int arg2);

  6: 

  7:    [OperationContract(Name = "SumDouble")]

  8:    double Sum(double arg1,double arg2);

  9: }

这些代码最终会转换成SumIntSumDouble两个方法。

5. WCF 有哪些信息交换模式(Message Exchange Patterns 

a.请求/相应模式:

作为默认的MEP,该模式在服务操作被调用同时,向请求者发送回应消息,及时是void类型,也会返回一个空的SAOP包。

b.单工模式:

在某些情况下,我们需要调用服务执行部分特定逻辑,但不需要接受任何反馈,此时我们需要使用单工模式。如果我们需要消息排队,单工模式就是唯一的选择。

c.双工模式:

双工模式简单的说就是双向的信息通道。适合于需要发送消息启动长期运行的进行,并在执行完毕后发回通知的情况。

6.什么是DataContractSerializer,它和XmlSerializer的区域是什么?

序列化的过程就是将一个对象实例转换为可移植并传输的信息格式。所以对于任意的Web服务,序列化都是非常重要的步骤。

.NET3.0开始,WCF增加了基于显示选择模式(opt-in )的DataContractSerializer。而XmlSerializer则是否决模式(opt-out)。前者表示我们需要指定需要序列化的内容,而后者则需要指定不需要序列化的内容。

DataContractSerializerXmlSerializer通常快约10%,但是对于对象如何被序列化几乎无法控制,所以如果需要干预对象的序列化,最好使用XmlSerializer

7.怎样在WCF中将MessageConractDataContract分部使用?

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./Articles/426776/WCF-Top-10-Interview-Questions

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多