WCF笔记

1.调用方法实现时,必须实现原有接口。必须使用[ServiceContract]进行修饰,否则在客户端无法调用该方法。

using System.ServiceModel;

namespace WCFService

{

[ServiceContract]

public interface IUser

{

[OperationContract]

string ShowName(string name);

}

}

namespace WCFService

{

public class User : IUser

{

public string ShowName(string name)

{

string wcfName = string.Format("WCF服务,显示姓名:{0}", name);

return wcfName;

}

}

}

2.大部分方法都是等待WCF服务端方法运行过后才运行客户端方法。加[OperationControact(IsOneWay=true)],方法中不可有参数回传,使用void调用,则可以实现单向调用。

3.双工服务调用
wcf服务接口定义
namespace WcfServiceLibrary2
{        [ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples",SessionModel=Session.Required,CallbackContract=type(iCalcalatorDeplexCallback))]
        public interfact iCalcalatorDuplex
        {
            [OperationContract(IsOneWay=true)]
            voide clear();
            [OperationContract(IsOneWay=true)]
            void AddTo(double n);
            [OperationContract(IsOneWay=true)]
            void SubtractFrom(double n);
            [OperationContract(IsOneWay=true)]
            void MultiplyBy(double n);
            [OperationContract(IsOneWay=true)]
            void DivideBy(double n);
        }

public interfact iCalculatorDuplexCallback
        {
            [OperationContract(IsOneWay=true)]
            void Equals(double result);
            [OperationContract(IsOneWay=true)]
            void Equation(string eqn);
        }
}

wcf实现类
namespace WcfServiceLibrary2
{
    [ServiceBehavior(instanceContextMode=InstanceContextMode.PerSession)]
    public class CalcalatorService:ICalculatorDuplex
    {
        double result;
        string equation;
         iCalculatorDuplexCallback callback=null;

public CalcalatorService()
        {
            result=0.00;
            equation-result.ToString();
            callback=OperationContext.Current.GetCallbackChannel<iCalculatorDuplexCallback>();

}
        
        public void Add(double n)
        {
            result += n;
            equation += " + " + n.ToString();
            callback.eQuals(result);
        }

}
}

wcf配置文件中,<endpoint address="" binding="HttpBinding" contract="WcfServiceLibrary2.IService1">更新为<endpoint address="" binding="wsDualHttpBinding" contract="WcfServiceLibrary2.IService1">
因为默认的不支持回调。

wcf客户端
using ConsoleApplication1.ServiceReferencel;
namespace ConsoleApplication1
{
    public class CallbackHandler:iCalcalatorDuplexCallback
    {
        public void Equals(double result)
        {
            controle.writeline("Result({0})",result);        
        }
    
        public void Equation(string eqn)
        {
            controle.writeline("Equation({0})",eqn);
        }
    }

class Program
    {
        static void Main(string{} args)
        {
            InstanceContext instanceContext=new InstanceContext(New CallbackHandler());
            serviceREferencel.CalculatorDuplexClient client=new serviceREferencel.CalculatorDuplexClient(instanceContext);

cllient.Add(100);

}
    }
}

完整代码下载http://download.microsoft.com/download/E/6/B/E6BA149D-C76D-46D4-9284-97DD729986DD/WebCast20090120pm_Demo.zip

Wcf配置文件
<System.ServiceModel>
<services>----服务和终结点
    <service>
        <endpoint/>
    </service>
</services>
<bindings>-----绑定(可选)
    <binding>
    </binding>
</bindings>
<behaviors>-----行为(可选)
    <behavior>
    </behavior>
</behaviors>
</System.ServiceModel>

【Service】元素,每个都具有以下属性
name,指定提供服务协定的实现的类型。这是完全限定名称(命名空间和类型名称)
behaviorConfiguration,指定一个在behaviors元素中找到的behavior元素的名称,指定的行为控制操作,例如服务是否允许模拟。

【endpoint】元素,每个节点都需要以下属性表示的地址、绑定和协定
address,指定服务的统一资源标识符(URI),它可以是一个绝对地址,或是一个相对于服务基址给定的地址。如果设置为空字符串,则指定示在创建服务的ServiceHost时,终结点在指定的基址上可用。
binding,通常,指定一个类似WsHttpBinding的系统提供的绑定,但也可以指定一个用户定义的绑定,指定的绑定确定传输协议类型、安全和使用的编码,以及是否支持或启用可靠会话、事务或流。
bindingConfiguration,如果必须修改绑定的默认值,则可通过在bindings放弃各学科配置相应的binding元素来执行此操作。此属性应赋予与用于更改默认值的binding元素的name属性相同的值。
contract,指定定义协定的接口。这是由Service元素的name属性指定的公共语言运行库(CLR)类型中实现的接口。

【binding】元素,

【behaviors】元素
<behaviors>
    
</behaviors>

时间: 2024-11-05 21:53:48

WCF笔记的相关文章

菜鸟学习WCF笔记-概念

背景 WCF这个词语一直不陌生,以前也使用过多次在实际的项目中,但是一直没有时间来做个系统的学习,最近抽点时间,看看 蒋金楠的<WCF全面解析>学习下,顺带做些笔记,如有错误,欢迎各路大神指正. 本章意在对Windows通信编程涉及到的相关词汇进行一个大概的理解不深究. 参考:http://baike.baidu.com/view/1140438.htm?fr=aladdin(不得不说百度百科,维基百科等资料很丰富),<WCF全面解析>. WCF介绍 Windows Communi

菜鸟学习WCF笔记-Address

终结点是WCF最为核心的对象,因为它承载了所有通信功能.服务通过相应的终结点发布出来,客户端通过与之匹配的终结点对服务进行调用.终结点有地址.绑定和契约ABC三要素构成. Address  作为终结点的三要素之一地址(Address),在基于WCF通信中不仅仅用于定位服务,还提供额外的寻址信息,同时还包含着用于进行服务认证的服务身份信息. 其地址的URL规则如下: [传输协议(Scheme)]://[主机名称|域名|IP地址]:[可选端口]/请求资源 如:http://test.com:81/t

学习WCF笔记

一.参考http://www.cnblogs.com/artech/archive/2007/02/26/656901.html 二.步骤 1.新建空白解决方案:文件--新建项目--其他项目类型--Visual Studio解决方案--空白解决方案 2.新建契约类库项目 Contract,引用System.ServiceModel; 新建接口ICalculator,代码如下 using System; using System.Collections.Generic; using System.

Dynamic CRM 2013学习笔记(二十二)插件里调用WCF服务

  1. 添加service:     2.调用WCF BasicHttpBinding myBinding = new BasicHttpBinding(); myBinding.Name = "BasicHttpBinding_IAuthService"; myBinding.Security.Mode = BasicHttpSecurityMode.None; myBinding.Security.Transport.ClientCredentialType = HttpClie

WCF学习笔记(一)

WCF是什么? 官方解释: Windows Communication Foundation (WCF) 是用于构建面向服务的应用程序的框架.借助 WCF,可以将数据作为异步消息从一个服务终结点发送至另一个服务终结点. 服务终结点可以是由 IIS 承载的持续可用的服务的一部分,也可以是应用程序中承载的服务.终结点可以是从服务终结点请求数据的服务客户端.简单消息可以是作为 XML 发送的单个字符或单个单词,复杂消息可以是二进制数据流. 网络收集: Windows通信基础(Windows Commu

Silverlight项目笔记1:UI控件与布局、MVVM、数据绑定、await/async、Linq查询、WCF RIA Services、序列化、委托与事件

最近从技术支持转到开发岗,做Silverlight部分的开发,用的Prism+MVVM,框架由同事搭好,目前做的主要是功能实现,用到了一些东西,侧重于如何使用,总结如下:   1.UI控件与布局     2.MVVM     3.数据绑定     4.await/async     5.Linq查询     6.WCF RIA Services     7.序列化     8.委托与事件 1.UI控件与布局 常用的主要是Grid.StackPanel.Border,其中最常用的的是Grid,是一

WCF开发笔记 高版本.Net的坑

高版本.Net的坑 开发环境 .Net 4.5.1Visual Studio 2015RCWindows 8.1SQL Server 2005 sp1 运行环境 .Net 4.0 enWindows Server 2003SQL Server 2005 sp1 现象 WCF客户端,开发环境测试正常.发布到运行环境后,提示Type 'System.Threading.Tasks.Task`1[XMRBI.ERoad.Contracts.ServiceResponse]' cannot be ser

wcf 学习笔记1

1. wcf 中的所有消息均为SOAP消息,注意WCF的消息与传输协议无关,与WEB服务不同,因此WCF服务可以在不同的协议之间传输,而不仅限于HTTP 2. wcf的每一个服务都有一个唯一的地址,地址包含两个元素:服务位置和传输协议:服务位置包括机器名,站点,通讯端口,管道或队列,以及一个可选的特定路径或URI统一资源标识 3. wcf 通讯协议有:http ,tcp , peer network , ipc , msmq ,使用命名管道的服务只能接收来自同一台机器的调用,每台机器只能打开一个

wcf 学习笔记2

服务契约 我们知道,serviceContrac特性能够将接口或者类公开为面向服务的契约,允许开发者使用c#语言编程,把类似接口这样的语法结构公开为WCF契约和服务. 操作重载,基于WSDL的操作不支持操作重载,但是,我们可以手动的启动操作重载,使用operationContract特性的name属性,为操作指定别名,如下: [ServiceContract] interface ICalculator { [OperationContract(Name="AddInt")] int