1. WCF和ASMX WebService的区别是什么?

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

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

  1. 怎么理解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。
  1. 通过那些方式可以托管WCF Service?

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

  1. 托管程序或者自我托管[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 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: }

这些代码最终会转换成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:所有终端和用户共享唯一的会话,内存效率最低。

常见的WCF面试问题的更多相关文章

  1. [翻译]15个最常见的WCF面试问题

    WCF和ASMX WebService的区别是什么? 最基本的区别在于,ASMX或者ASP.NET WebService是用来通过基于HTTP的SOAP来实现通讯.但WCF可以使用任意协议(HTTP, ...

  2. 200个最常见的JAVA面试问题(附答案)

    本文内容: 20个最常见的JAVA面试问题(附答案) 13个单例模式JAVA面试问题(附答案) 说说JVM和垃圾收集是如何工作的(附答案) 说说如何避免JAVA线程死锁(附答案) Java中HashS ...

  3. 前端常见的Vue面试题目汇总

    请说一下响应式数据的原理 默认Vue在初始化数据时,会给data中的属性使用Object.defineProperty重新定义所有属性,当页面到对应属性时,会进行依赖收集(收集当前组件中的watche ...

  4. 四个常见的Linux面试问题

    四个常见的Linux面试问题. 刚毕业要找工作了,只要是你找工作就会有面试这个环节,那么在面试环节中,有哪些注意事项值得我的关注呢?特别是专业技术岗位,这样的岗位询问一般都是在职的工程师,如何在面试环 ...

  5. WCF面试精典题汇总

    1.WCF接口中的参数改名问题 在写WCF Web Service接口的时候,如果你对接口的参数名做改动的时候,一定要记住Update所有应用该Web service的客户端的Referrence,否 ...

  6. 10个常见的Redis面试"刁难"问题--转

    高可用架构 导读:在程序员面试过程中Redis相关的知识是常被问到的话题.作为一名在互联网技术行业打击过成百上千名的资深技术面试官,本文作者总结了面试过程中经常问到的问题.十分值得一读. 作者简介:钱 ...

  7. 一些常见的iOS面试问题,一眼就能看出 初级和高级工程师的区别

    前言 面试题中有一些一般性的问题,通常是会问到的.面试iOS应聘者时,切入点很重要,不同的切入点会导致不同的结果,没有找到合适的切入点也无法对应聘者有一个全面的了解. 所以下面的面试问题更多的是提供方 ...

  8. 125条常见的java面试、笔试题大汇总

    1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解所有问题,而仅仅是选择当中的一部分,临时不用部分细节.抽象包含两个方面,一是过程抽象. ...

  9. 常见的Redis面试"刁难"问题,值得一读

    Redis有哪些数据结构? 字符串String.字典Hash.列表List.集合Set.有序集合SortedSet. 如果你是Redis中高级用户,还需要加上下面几种数据结构HyperLogLog.G ...

  10. 19道常见的JS面试算法题

    最近秋招也做了多多少少的面试题,发现除了基础知识外,算法还是挺重要的.特意整理了一些常见的算法题,添加了自己的理解并实现. 除此之外,建议大家还可以刷刷<剑指offer>.此外,左神在牛客 ...

随机推荐

  1. 【HZERO】班翎工作流

    班翎工作流 工作流流程 流程分类定义 接口管理 long类型写0 字符串写空 流程定义[画流程图] 人工节点-添加审批人规则 空-全局事件-选回调接口 我的待办 流程平台-我参与的流程 发起流程:wo ...

  2. MySQL 的 crash-safe 原理解析

    本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/5i9wmJs4_Er7RaYfNnETyA作者:xieweipeng MySQL作为当下最流行 ...

  3. 1688 复杂业务场景下的 Serverless 提效实践

    1688 复杂业务场景下的 Serverless 提效实践 作者 | 远岩(阿里巴巴 CBU 技术部 Serverless & 工程效能负责人) 前言 首先为大家简单介绍一下我们的业务场景,1 ...

  4. Springboot+ELK实现日志系统简单搭建

    前面简单介绍了ELK三剑客中的其中两个Elasticsearch和Kibana的简单使用,如果对这两个不了解,可以看下下面的 Centos7安装Elasticsearch和Kibana 搜索引擎基础- ...

  5. P3844【黄】

    这道题做的极其折磨 因为最开始小看这道题了,没用稳扎稳打的码风来写代码,直接用的那种可读性极差但勉强能跑的代码写的,最后没AC只有73分调了好久也没调对,甚至逐渐调成了64.55越来越低的分.这有多方 ...

  6. 一套前后台全部开源的H5商城送给大家

    博主给大家推荐一套全部开源的H5电商项目waynboot-mall.由博主在2020年开发至今,已有三年之久.那时候网上很多的H5商城项目都是半开源版本,要么没有H5前端代码,要么需要加群咨询,属实恶 ...

  7. Https 原理与工作流程及证书链校验

    本文为博主原创,未经允许不得转载: 目录 HTTP传输三大风险 安全通信原则 HTTPS定义 TLS/SSL 协议及加密算法 HTTPS工作流程 HTTPS协议和HTTP协议的区别 CA机构 证书链校 ...

  8. 常见的IE布局兼容问题

    (1)  div 中内容在IE和火狐中居中问题: (2)高度的问题,div出现重叠 (3)浮动引发的问题如外围DIV无法框住内部元素: (4)IE浮动margin产生双倍距离-display:inli ...

  9. linux-帮助-man和help

  10. Python学习之十二_tkinter的学习与使用

    Python学习之十二_tkinter的学习与使用 摘要 本来想说会用QT5进行界面编程 但是发现比较繁琐 还是先学习使用 tkinter的方式进行界面化的编写和学习了 基础知识 tkinter是一个 ...