欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

WCF使用纯代码的方式进行服务寄宿

程序员文章站 2022-07-05 12:05:12
服务寄宿的目的是为了开启一个进程,为WCF服务提供一个运行的环境。通过为服务添加一个或者多个终结点,使之暴露给潜在的服务消费,服务消费者通过匹配的终结点对该服务进行调用,除去上面的两种寄宿方式,还可以以纯代码的方式实现服务的寄宿工作。 ......

服务寄宿的目的是为了开启一个进程,为WCF服务提供一个运行的环境。通过为服务添加一个或者多个终结点,使之暴露给潜在的服务消费,服务消费者通过匹配的终结点对该服务进行调用,除去上面的两种寄宿方式,还可以以纯代码的方式实现服务的寄宿工作。

新建立一个控制台应用程序,添加System.ServiceModel库文件的引用。

添加WCF服务接口:ISchool使用ServiceContract进行接口约束,OperationContract进行行为约束

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Activation;


namespace WcfTest.Demo3
{
    [ServiceContract]
    public interface ISchool
    {
        [OperationContract]
        string ShowName(string Name);
    }
}

添加School类,实现Ishool接口:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WcfTest.Demo3
{
    public class School:ISchool
    {
        public string ShowName(string name)
        {
            return "Show Name " + name;
        }
    }
}

通过代码将ISchool接口寄宿到控制台应用程序之中。

    class Program
    {
        static void Main(string[] args)
        {
            CoreCodeOpen();
        }

        /// <summary>
        /// 通过代码的方式完成服务的寄宿工作
        /// </summary>
        static void CoreCodeOpen()
        {
            try
            {
                using (ServiceHost host = new ServiceHost(typeof(School)))
                {
                    host.AddServiceEndpoint(typeof(ISchool), new WSHttpBinding(), "http://10.0.0.217:20004/School");
                    if (host.Description.Behaviors.Find<ServiceMetadataBehavior>() == null)
                    {
                        ServiceMetadataBehavior behavior = new ServiceMetadataBehavior();
                        behavior.HttpGetEnabled = true;
                        behavior.HttpGetUrl = new Uri("http://10.0.0.217:20004/School/wcfapi");
                        host.Description.Behaviors.Add(behavior);
                    }
                    host.Open();
                    Console.WriteLine("寄宿到控制台应用程序,通过代码开启WCF服务");
                    Console.ReadKey();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("CoreCodeOpen Error:" + ex.Message);
            }
        }
    }

WCF使用纯代码的方式进行服务寄宿

以管理员身份运行程序>在浏览器输入http://10.0.0.217:20004/School/wcfapi>我们会得到以WSDL(网络服务描述语言-Web Services Description Language)形式体现的服务元数据

WCF使用纯代码的方式进行服务寄宿

在解决方案中新建控制台客户端,添加服务引用,输入http://10.0.0.217:20004/School/wcfapi

WCF使用纯代码的方式进行服务寄宿

找到了我们的Ischool服务接口,添加引用后进行服务的调用。