• WCF学习笔记之自托管


    WCF学习笔记之控制台中程序实现简单调用

    由于是学习笔记,这里我不做过多的讲解

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.ServiceModel;
    using System.ServiceModel.Description; //服务端把自己的服务协定元数据交给客户端。
    
    namespace WCF_Fuck
    {
        //服务协定
        [ServiceContract]
      public   interface IHelloWCFService
        {
            [OperationContract]
            string HelloWCF(string name);
        }
        //实现服务协定
        public class HelloWCFService : IHelloWCFService
        {
            public string HelloWCF(string name)
            {
                return "Hello,"+ name;
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
    
                //创建一个基地址 MyService是服务地址,这个名字可以随便起,和服务实现类的名字相同也可以,他们没有联系
                Uri baseAddress = new Uri("http://localhost:8000/MyService");
    
                //创建一个ServiceHost,由于我们只有一个服务(HelloWCFService类),所有我们只创建一个ServiceHost
                ServiceHost host = new ServiceHost(typeof(HelloWCFService),baseAddress);
                //ServiceHost有两个参数,第一个是具体的服务实现类,第二个是基地址;
    
                //第一个参数指定了服务协定(接口),一个服务实现类可能实现多个服务协定接口,
                //这样每个服务协定接口都有一个终结点与之对应了。
                //第二个参数定义了绑定,即客户端与服务端沟通的方式,这里指定了一个wsHttpBinding的实例,
                //第三个参数是终结点的地址。
                //这里给了一个相对地址,终结点的最终地址将会把这个相对地址与基地址组合,即:http://localhost:8000/MyService/HelloWCFService  
                host.AddServiceEndpoint(typeof(IHelloWCFService), new WSHttpBinding(), "HelloWCFService");
    
                //创建一个元数据行为对象
                ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
                smb.HttpGetEnabled = true;
               //smb.HttpsGetEnabled = true; 注意这两个的区别滴呀;
    
                //客户端就可以使用http 中的get方法从服务端下载数据了;
                host.Description.Behaviors.Add(smb);
                host.Open();
                Console.WriteLine("service is ready..");
                Console.WriteLine("press any key to terminated...");
                Console.ReadLine();
                host.Close();
            }
        }
    }

    smb.HttpGetEnabled = true;
    smb.HttpsGetEnabled = true;

    注意这两个的区别滴呀;

     总结

    通过这个例子,我们以最简单的方式实现了一个WCF 程序,我们应该了解一个WCF 程序最基本的编程步骤。

    (1) 定义服务协定接口和接口中的操作协定。

    (2) 用一个服务类实现服务协定接口和接口中的操作协定。

    (3) 建立一个宿主程序用来寄存服务。

    [针对控制台程序宿主]

    (4) 为服务建立ServiceHost 对象并指定要寄存的服务类和服务基地址。

    (5) 为ServiceHost 添加终结点,指定其服务协定、绑定类型和终结点地址(或相对地址)。

    (6) 为ServiceHost 添加服务元数据行为对象,要将该对象的HttpGetEnabled属性设为true 以启动元数据交换。

    (7) 启动ServiceHost。

    (8) 建立客户端。

    (9) 为客户端添加指向服务基地址的服务引用以下载元数据。

    (10) 客户端使用代理类调用服务操作。

     

  • 相关阅读:
    第二周进度条博客
    软件工程个人作业01
    动手动脑1
    构建之法阅读笔记06
    构建之法阅读笔记05
    构建之法阅读笔记04
    poj 1631 LIS
    poj 1609 dp
    lightoj 1198 最大权重匹配
    hdu4696 想法题
  • 原文地址:https://www.cnblogs.com/mc67/p/5082982.html
Copyright © 2020-2023  润新知