C# Language/C# NetCore

[WCF] 5. 자체호스팅(Self Hosting)

OManager 2019. 10. 10. 08:34

1. Self Hosting 

Self Hosting이란 서비스를 .exe 형태로 제공하는 형태를 말한다. 다른 형태로 제공하는 것보다 서비스를 상세하게 제어 할 수 있는 특성은 있으나 서비스의 제공에 약간의 코딩이 따르는 단점이 있다. 

2. Self Hosting 방식의 서비스의 작성

1) Self Hosting Console Type 프로젝트의 생성

   2) Self Hosting에서 사용할 서비스를 추가  

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ServiceModel;


namespace WCFHostingConsole
{
    [ServiceContract]
    public interface IWCFHostingConsole
    {
        [OperationContract]
        string ServiceName();

        [OperationContract]
        string ServiceVersion();

        [OperationContract]
        string HelloService(string name);

    }

    public class WCFHostingConsole:IWCFHostingConsole
    {
        public string ServiceName()
        {
            return "WCFHostingConsole";
        }

        public string ServiceVersion()
        {
            return "0.0.0.1";
        }

        public string HelloService(string name)
        {
            string result = "Hello " + name;
            return result;
        }
    }
}

3) Hosting Service를 실행할 프로그램을 작성 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ServiceModel;
using System.ServiceModel.Description;
using WCFHostingConsole;


namespace WCFHostingConsoleType
{
    class Program
    {
        static void Main(string[] args)
        {
            Uri HelloUri = new Uri("http://localhost:8090/WCFHostingConsole");
            ServiceHost host = new ServiceHost(typeof(WCFHostingConsole.WCFHostingConsole), HelloUri);
            host.AddServiceEndpoint(typeof(WCFHostingConsole.IWCFHostingConsole), new WSHttpBinding(), "");
            ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
            smb.HttpGetEnabled = true;
            host.Description.Behaviors.Add(smb);

            host.Open();
            Console.WriteLine("Service is host at " + DateTime.Now.ToString());
            Console.WriteLine("Host is running ... Plase key to Stop");
            Console.ReadLine();

        }
    }
}

4) Self Hosting 프로그램 가동
Console Command에서 WCFHostingConsoleType.exe를 실행하면 아래와 같은 메시지를 볼 수 있다.

3. 클라이언트에서 접속 테스트