基本知识:

[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. windows 下FFMPEG的编译方法 附2012-9-19发布的FFMPEG编译好的SDK下载

    经过一晚上加一上午的奋斗,终于成功编译出了最新版的FFMPEG,下面是我编译的心得,因为是最新的,应该会对大家有用,编译的FFMPEG的版本是0.11.2,2012-09-19新发布的版本 平台:WI ...

  2. Android开发中常见的设计模式

    对于开发人员来说,设计模式有时候就是一道坎,但是设计模式又非常有用,过了这道坎,它可以让你水平提高一个档次.而在android开发中,必要的了解一些设计模式又是非常有必要的.对于想系统的学习设计模式的 ...

  3. Oracle 课程八之性能优化之Oracle SQL Trace

    一. SQL_TRACE 当SQL语句出现性能问题时,我们可以用SQL_TRACE来跟踪SQL的执行情况,通过跟踪,我们可以了解一条SQL或者PL/SQL包的运行情况,SQL_TRACE命令会将SQL ...

  4. Java 单元测试(Junit)

    在有些时候,我们需要对我们自己编写的代码进行单元测试(好处是,减少后期维护的精力和费用),这是一些最基本的模块测试.当然,在进行单元测试的同时也必然得清楚我们测试的代码的内部逻辑实现,这样在测试的时候 ...

  5. 【转】错误日志ID8021来源BROWSER导致电脑死机

    现场工控机死机,网上查了篇文章,具体原因还有待分析,下面是图 在这里有必要介绍两个ID号:6006和6005.在事件查看器里ID号为6006的事件表示事件日志服务已停止,如果你没有在当天的事件查看器中 ...

  6. C#+AE 用MapControl加载栅格格式文件

    需要引入DataSourceRaster命名空间. 具体步骤如下: ①:利用工作控件工厂抽象类定义接口变量,利用工作空间工厂的子类RatserWorkspaceFactory对应的组件类RasterW ...

  7. [Everyday Mathematics]20150125

    试求极限 $$\bex \lim_{x\to 0^+}\int_x^{2x} \frac{\sin^m t}{t^n}\rd t\quad\sex{m,n\in\bbN}. \eex$$

  8. HDU5787 K-wolf Number 数位dp

    分析:赛场上也知道是裸的数位dp,但是无奈刷数位dp题刷的太少了,并不能写出来 一点感想:赛后补题,看了题解的map记录状态,一脸蒙逼,也是非常的不爽,然后想看别人写的,不是递归就是写的比较乱 而且我 ...

  9. IOS release 版本的时候 去掉输出log NSLog

    在.pch文件中添加下面一段 #ifndef __OPTIMIZE__ #define NSLog(...) NSLog(__VA_ARGS__) #else #define NSLog(...) { ...

  10. 约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。

    以数组的方法: public static void main(String[] args) {        final int n = 10;          final int k = 1;  ...