• WCF学习笔记之ChannelFactory


    WCF学习笔记之ChannelFactory

    通信到底是怎么发生的?简单说就是两个终结点一个通道,实际上客户端也是有一个终结点的,客户端会在这两个终结点之间建立一个通道,然后把对服务端服务的调用封装成消息沿通道送出,服务器端获得消息后在服务器端建立服务对象,然后执行操作,将返回值再封装成消息发给客户端。

    过程大概是这样的,有些地方可能不太严谨,但是这个逻辑我们是可以理解的。如此看来,通讯的工作主要部分都在客户端这边,他要建立通道、发送消息,服务端基本上在等待请求。

    还是接着上面的那个例子滴呀;

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.ServiceModel;
    using System.Text;
    using System.Threading.Tasks;
    using System.Runtime.Serialization;
    namespace WCF_ChannelFactory
    {
        //首先你要写一个同样的接口方法滴呀;
        [ServiceContract]
        public interface IUser
        {
            [OperationContract]
            string GetData(int value);
    
            [OperationContract]
            complex GetSome(complex com);
        }
       
        [DataContract]
        public class complex
        {
            bool boolValue = true;
            string str = "Hello";
           [DataMember]
            public bool BoolValue
            {
                get { return boolValue; }
                set { boolValue = value; }
            }
            [DataMember]
            public string StringValue
            {
                get { return str; }
                set { str = value; }
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
    
                //我们只有接着来试一试的啦;
    
                //当程序中出现序列化参数的时候,那还是一个麻烦的事情滴呀;
    
                EndpointAddress address = new EndpointAddress("http://localhost/WcfService1/UserService.svc");
                WSHttpBinding binding = new WSHttpBinding();
    
                ChannelFactory<IWcfChannel> factory = new ChannelFactory<IWcfChannel>(binding, address);
                IWcfChannel channel = factory.CreateChannel();
                string result = channel.GetData(110);  //尼玛,为什么,这里会报错呢
                channel.Close();
                Console.WriteLine(result);
                Console.ReadLine();
    
                
            }
        }
    
        public interface IWcfChannel : IUser, IClientChannel
        {
    
        }
    }

    会报错?

    操尼玛~

    debug中......

  • 相关阅读:
    并发编程之六:java并发工具包(java.util.concurrent)汇总介绍
    Interpreter(解释器)模式
    CSS样式
    一个相当好的自定义标签分页
    logback高级特性一
    Jenkins
    ifconfig命令
    持续集成工具hudson
    数据结构中常见的树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B树、B+树、B*树)
    Java中"Test(Object...args){}"方法声明的理解——J2SE5的“Vararg
  • 原文地址:https://www.cnblogs.com/mc67/p/5084778.html
Copyright © 2020-2023  润新知