基本知识:

[ServiceContract] Attribute 能够有以下Property 的:

CallbackContract 设置callback的类型:Duplicate指Service Host和Client之间进行双向通信
ConfigurationName 指定配置文件里某个configuration的名字
HasProtectionLevel 标示能否够处理安全消息
Name 给contract指定一个名字,在client端可见的名字,默认就是接口名字
Namespace 给消息指定一个命名空间
ProtectionLevel  

SessionMode 指同意,还是不同意,还是强制session

[OperationContract] Attribute 能够有以下Property 的:

Action 对请求设置WS-Addressing 的action
AsynchPattern 异步模式
HasProtectionLevel 消息是否加密。签名
IsInitiating 表明该函数被调用開始时是否要在server上面初始化一个session
IsOneWay 表明函数被client调用以后,client是否会等待函数返回
IsTerminating 表明该函数被调用结束时是否要在server上面关闭session
Name 设置函数的名字,在client端可见的名字。默认就是函数名字
ProtectionLevel  
ReplyAction 设置函数返回消息的SOAP action

1、 在网上看资料会看到各种给ServiceContract的Namespace、Name等属性赋值的代码。但这些Attribute 是在哪里起作用呢?

以下就让我们一起来看看,打开上篇中的解决方式WcfFirstDemo.sln

右键WCFServiceDemo项目以下的文件:Test..svc,例如以下图:

效果例如以下:

点击红框中的链接,效果例如以下:

能够看到默认Namespace是http://tempuri.org/,name与类名一致
微软官方建议:改动Service的Namespace,使其包括:公司域名+项目名+版本(如:日期表示版本)

小注:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

改动项目:WCFServiceDemo以下的ITest.cs代码例如以下:

<pre name="code" class="csharp">

namespace WCFServiceDemo
{
// 注意: 使用“重构”菜单上的“重命名”命令。能够同一时候更改代码和配置文件里的接口名“ITest”。
[ServiceContract(Namespace = "http://blog.csdn.net/jiankunking", Name = "JianKunKing",
ConfigurationName = "JianKunKingWCFService")]
public interface ITest
{
[OperationContract]
string TransferTest(int num);
}
}

右键项目WCFServiceDemo选择又一次编译,成功以后,又一次用浏览器打开ITest.svc,得到例如以下图:

此时已经改变了Service默认的Namespace了,又一次生成一下部署包,部署到服务器上,然后更新一下client端,然后又一次编译整个解决方式。会报错例如以下:

此时ServiceContract的那么已经改成JianKunKing而不是之前的Test了,例如以下图:

改动完错误后,浏览一下client端的app.config文件,例如以下,能够看到bindingConfiguration、contract、name等属性都已经改动了

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlhbmt1bmtpbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

能够与改动之前的app.config文件对照一下:

由此看见ServiceContract的Namespace、Name等等属性。能够起到重命名的作用,隐藏掉服务端类的真实信息,客户端看到的是你想让其看到的

ServiceContract做的工作是指定service向client提供了哪些函数可供调用。

源代码:http://download.csdn.net/detail/xunzaosiyecao/8503001

WCF 新手教程二的更多相关文章

  1. WCF入门教程二[WCF应用的通信过程]

    一.概述 WCF能够建立一个跨平台的安全.可信赖.事务性的解决方案,是一个WebService,.Net Remoting,Enterprise Service,WSE,MSMQ的并集,有一副很经典的 ...

  2. 无废话WCF入门教程二[WCF应用的通信过程]

    一.概述 WCF能够建立一个跨平台的安全.可信赖.事务性的解决方案,是一个WebService,.Net Remoting,Enterprise Service,WSE,MSMQ的并集,有一副很经典的 ...

  3. 【转】WCF入门教程二[WCF应用的通信过程]

    一.概述 WCF能够建立一个跨平台的安全.可信赖.事务性的解决方案,是一个WebService,.Net Remoting,Enterprise Service,WSE,MSMQ的并集,有一副很经典的 ...

  4. GitHub 新手教程 二,Windows 版 GitHub 安装

    1,下载地址: https://git-scm.com/download/ 2,信息: 3,选择安装位置: 例如:d:\soft\git 4,选择组件: 5,创建开始菜单: 6,选择Git使用的默认编 ...

  5. 无废话WCF入门教程六[一个简单的Demo]

    一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来 ...

  6. 【转】无废话WCF系列教程

    转自:http://www.cnblogs.com/iamlilinfeng/category/415833.html     看后感:这系列的作者李林峰写得真的不错,通过它的例子,让我对WCF有了一 ...

  7. 【转】WCF入门教程六[一个简单的Demo]

    一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来 ...

  8. 无废话WCF系列教程 -- 李林峰

    李林峰的无废话WCF入门教程 无废话WCF入门教程一[什么是WCF] 无废话WCF入门教程二[WCF应用的通信过程] 无废话WCF入门教程三[WCF的宿主] 无废话WCF入门教程四[WCF的配置文件] ...

  9. C#微信公众号开发系列教程二(新手接入指南)

    http://www.cnblogs.com/zskbll/p/4093954.html 此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可 ...

随机推荐

  1. uva 11768

    // 扩展欧几里得算法 // 先求出一个解 再求出区间 [x1,x2]有几个整数符合条件// 需要注意的是 水平和垂直2种情况的处理 还有正数和负数取整的细微差别#include <iostre ...

  2. 自动FTP的小脚本

    自动FTP的小脚本 使用以下脚本,可以实现自动FTP,将你需要的文件传送到需要的地方,或者将需要的文件从某个地方抓取下来. cd /PATH_YOU_WANT_TO_UPLOAD(DOWNLOAD) ...

  3. IP网络5种基本寻址方式 (单播、多播、广播、任播、地域多播)

    Addressing methods The Internet Protocol and other network addressing systems recognize five main ad ...

  4. JS 代码编一个倒时器

    有时候在生活中,你需要一个JavaScript倒计时时钟,而不是一个末日装置设备.不管你是否有一次约会,销售.促销.或者游戏,你可以受益于使用原生JavaScript构建一个时钟,而不是拿到一个现成的 ...

  5. C#条件语句、循环语句

    一.程序的三种结构 顺序结构 分支结构 循环结构 二.条件语句if 语句是最有用的控制结构之一. if … else …语句的语法: if (布尔表达式)执行操作的语句  或if (布尔表达式)执行操 ...

  6. bzoj4578: [Usaco2016 OPen]Splitting the Field

    2365: Splitting the Field 题意:n个点,求用两个矩形面积覆盖完所有点和一个矩形覆盖完少多少面积 思路:枚举两个矩形的分割线,也就是把所有点分成两个部分,枚举分割点:先预处理每 ...

  7. ACM1995

    /* 汉诺塔V Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  8. 在Raspberry Pi上安装XBMC

    2013-05-22 XBMC is a free and open source media player application developed by the XBMC Foundation, ...

  9. [Java Code] 时间维度循环生成代码片段

    public static void main(String[] args) throws ParseException { String str = "20140301"; St ...

  10. Apache Spark MLlib的简介

    MLlib 是构建在 Spark 上的分布式机器学习库,充分利用了 Spark 的内存计算和适合迭代型计算的优势,将性能大幅度提升.同时由于 Spark 算子丰富的表现力, 让大规模机器学习的算法开发 ...