[翻译]15个最常见的WCF面试问题
WCF和ASMX WebService的区别是什么?
最基本的区别在于,ASMX或者ASP.NET WebService是用来通过基于HTTP的SOAP来实现通讯。但WCF可以使用任意协议(HTTP,TCP/IP,MSMQ,NamedPipes等),消息封装可以使用任意格式(默认SOAP)。
更多的细节比较,可以参考:WCF Vs ASMX
怎么理解WCF的Service EndPoints?
对于WCF服务来说,Endpoints暴漏了其被调用的方式;客户端必须知道这些 细节才能够与服务端进行通讯。每个Endpoints就是用于通信的入口,客户端和服务端通过Endpoint交换信息。一个WCF Service Endpoint一般包括3个基本的元素:
- Address:定义了“WHERE”,一串URL标识了服务的地址;
- Binding:定义了“HOW”,确定服务器怎么被访问,例如消息发送的传输协议(如TCP,HTTP),安全(如SSL,SOAP消息安全)。
- Contract:定义了“WHAT”,即服务提供的内容和契约方式,描述的是消息所包含的内容,以及消息的组织和操作方式,例如是one-way,duplex和request/reply。
- 通过那些方式可以托管WCF Service?
要托管WCF Service,必须具备至少一个托管的进行,一个ServiceHost实例和一份正确Endpoint配置。可能的情况如下:
- 托管程序或者自我托管[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不支持操作重载,重载行为必须通过OperationContract的Name属性来实现。如下:
1: [ServiceContract]2: interface IMyCalculator3: {4: [OperationContract(Name = "SumInt")]5: int Sum(int arg1,int arg2);6:7: [OperationContract(Name = "SumDouble")]8: double Sum(double arg1,double arg2);9: }这些代码最终会转换成SumInt和SumDouble两个方法。
5. WCF 有哪些信息交换模式(Message Exchange Patterns )?
a.请求/相应模式:
作为默认的MEP,该模式在服务操作被调用同时,向请求者发送回应消息,及时是void类型,也会返回一个空的SAOP包。
b.单工模式:
在某些情况下,我们需要调用服务执行部分特定逻辑,但不需要接受任何反馈,此时我们需要使用单工模式。如果我们需要消息排队,单工模式就是唯一的选择。
c.双工模式:
双工模式简单的说就是双向的信息通道。适合于需要发送消息启动长期运行的进行,并在执行完毕后发回通知的情况。
6.什么是DataContractSerializer,它和XmlSerializer的区域是什么?
序列化的过程就是将一个对象实例转换为可移植并传输的信息格式。所以对于任意的Web服务,序列化都是非常重要的步骤。
从.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
[翻译]15个最常见的WCF面试问题的更多相关文章
- 200个最常见的JAVA面试问题(附答案)
本文内容: 20个最常见的JAVA面试问题(附答案) 13个单例模式JAVA面试问题(附答案) 说说JVM和垃圾收集是如何工作的(附答案) 说说如何避免JAVA线程死锁(附答案) Java中HashS ...
- 一些常见的iOS面试问题,一眼就能看出 初级和高级工程师的区别
前言 面试题中有一些一般性的问题,通常是会问到的.面试iOS应聘者时,切入点很重要,不同的切入点会导致不同的结果,没有找到合适的切入点也无法对应聘者有一个全面的了解. 所以下面的面试问题更多的是提供方 ...
- 125条常见的java面试、笔试题大汇总
1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解所有问题,而仅仅是选择当中的一部分,临时不用部分细节.抽象包含两个方面,一是过程抽象. ...
- 19道常见的JS面试算法题
最近秋招也做了多多少少的面试题,发现除了基础知识外,算法还是挺重要的.特意整理了一些常见的算法题,添加了自己的理解并实现. 除此之外,建议大家还可以刷刷<剑指offer>.此外,左神在牛客 ...
- 【面试突击】- 2019年125条常见的java面试笔试题汇总(一)
1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部 问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二 ...
- 多测师接口测试 --常见的接口面试题目002---高级讲师肖sir
1.postman接口测试,它有一个功能可以设置参数化,你有用过吗 2.你测试过哪些接口 3.有做过接口测试吗?接口测试你们是怎么测的 4.多接口怎么测(postman里面有一个批量处理) 5.g ...
- 升级react 15.4,常见的错误及解决方案
最近项目由react0.14.X升级到react 15版本,因为react15还是做了一些相对大一点的更新的(详情可以参考一下我的另一篇文章关于react15的一点总结),相对:来说react升级之后 ...
- WCF面试精典题汇总
1.WCF接口中的参数改名问题 在写WCF Web Service接口的时候,如果你对接口的参数名做改动的时候,一定要记住Update所有应用该Web service的客户端的Referrence,否 ...
- 10个常见的Redis面试"刁难"问题--转
高可用架构 导读:在程序员面试过程中Redis相关的知识是常被问到的话题.作为一名在互联网技术行业打击过成百上千名的资深技术面试官,本文作者总结了面试过程中经常问到的问题.十分值得一读. 作者简介:钱 ...
随机推荐
- Android(java)学习笔记113:Android编写代码调用Vibrator震动功能(Bug:按下按钮button始终没有震动)
1.之前我编写的代码是如下: package com.himi.vibrate; import android.app.Activity; import android.app.Service; im ...
- Android(java)学习笔记100:android开发中修改字体
首先如果android内部自带的字体不是我们需要的字体,那我们就需要字体文件导入到android开发工程中,下午我们详细讲述: 1.我们首先分析知道,我想要TextView控件中文字的字体是:华文楷体 ...
- Recovery启动流程(2)---UI界面
转载请注明来源:cuixiaolei的技术博客 Recovery启动流程系列文章把recvoery目录下文件分成小块讲解,最后再以一条主线贯穿所有的内容.这篇文章主要讲解Recovery-UI的相关内 ...
- Adobe Edge Animate –可重复使用的个性化按钮制作
Adobe Edge Animate –可重复使用的个性化按钮制作 版权声明: 本文版权属于 北京联友天下科技发展有限公司. 转载的时候请注明版权和原文地址. 效果图: 工程文件中:
- [改善Java代码]强制声明泛型的实际类型
Arrays工具类有一个方法asList可以把一个变长参数或数组变成列表,但是它有一个缺点:它所生成的List长度是不可改变的,而这在我们的项目开发中很不方便. import java.util.Ar ...
- okhttputils开源库的混淆配置(Eclipse)
#=====================okhttputils框架===================== #====okhttputils==== -libraryjars libs/okht ...
- COGS 265 线段覆盖
265. 线段覆盖 ★★☆ 输入文件:xdfg.in 输出文件:xdfg.out 简单对比时间限制:2 s 内存限制:20 MB [问题描述] 有一根长度为 L 的白色条状物.有两种操 ...
- WCF配置文件详解 【转】
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ...
- JS中的嵌套作用域
在JS中仅仅区分全局变量和局部变量还不够,实际上,变量作用域可以有任意层级(嵌套).其他函数内部定义的函数可以调用父函数的局部变量,而内部函数里定义的函数则不仅可以调用父函数的局部变量,还可以调用祖父 ...
- Linux 命令 - history: 显示或操作历史列表
命令格式 history [-c] [-d offset] [n] history -anrw [filename] history -ps arg [arg...] 命令参数 -c 清除历史列表. ...