첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

■ 클라이언트/서버 만들기 - 서비스 종점을 추가하기

------------------------------------------------------------------------------------------------------------------------

[HelloWorldLibrary 프로젝트]

 

※ System.ServiceModel 참조를 추가한다.

 

IHelloWorld.cs

 

 

using System.ServiceModel;

 

namespace HelloWorldLibrary

{

    /// <summary>

    /// Hello World 인터페이스

    /// </summary>

    [ServiceContract]

    public interface IHelloWorld

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

 

        #region Hello 말하기 - SayHello()

 

        /// <summary>

        /// Hello 말하기

        /// </summary>

        /// <returns>Hello</returns>

        [OperationContract]

        string SayHello();

 

        #endregion

    }

}

 

 

HelloWorldService.cs

 

 

namespace HelloWorldLibrary

{

    /// <summary>

    /// Hello World 서비스

    /// </summary>

    public class HelloWorldService : IHelloWorld

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region Hello 말하기 - SayHello()

 

        /// <summary>

        /// Hello 말하기

        /// </summary>

        /// <returns>Hello</returns>

        public string SayHello()

        {

            return "Hello World!";

        }

 

        #endregion

    }

}

 

 

[HelloWorldServer 프로젝트]

 

※ System.ServiceModel 및 HelloWorldLibrary 참조를 추가한다.

 

Program.cs

 

 

using System;

using System.ServiceModel;

 

using HelloWorldLibrary;

 

namespace HelloWorldServer

{

    /// <summary>

    /// 프로그램

    /// </summary>

    public class Program

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Static

        //////////////////////////////////////////////////////////////////////////////// Private

 

        #region 프로그램 시작하기 - Main()

 

        /// <summary>

        /// 프로그램 시작하기

        /// </summary>

        private static void Main()

        {

            ServiceHost serviceHost = new ServiceHost

            (

                typeof(HelloWorldService),

                new Uri("http://localhost/wcf/helloworldservice"),

                new Uri("net.tcp://localhost/wcf/helloworldservice")

            );

 

            serviceHost.AddServiceEndpoint(typeof(IHelloWorld), new BasicHttpBinding(), string.Empty);

            serviceHost.AddServiceEndpoint(typeof(IHelloWorld), new NetTcpBinding()   , string.Empty);

 

            serviceHost.Open();

 

            Console.WriteLine("서비스 중단을 위해 아무 키나 누르세요...");

 

            Console.ReadKey(true);

 

            serviceHost.Close();

        }

 

        #endregion

    }

}

 

 

[HelloWorldConsole 프로젝트]

 

※ System.ServiceModel 및 HelloWorldLibrary 참조를 추가한다.

 

Program.cs

 

 

using System;

using System.ServiceModel;

using System.ServiceModel.Description;

 

using HelloWorldLibrary;

 

namespace HelloWorldConsole

{

    /// <summary>

    /// 프로그램

    /// </summary>

    public class Program

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Static

        //////////////////////////////////////////////////////////////////////////////// Private

 

        #region 프로그램 시작하기 - Main()

 

        /// <summary>

        /// 프로그램 시작하기

        /// </summary>

        private static void Main()

        {

            CommunicateHTTP();

 

            CommunicateTCP();

        }

 

        #endregion

 

        #region HTTP 통신하기 - CommunicateHTTP()

 

        /// <summary>

        /// HTTP 통신하기

        /// </summary>

        private static void CommunicateHTTP()

        {

            Uri uri = new Uri("http://localhost/wcf/helloworldservice");

 

            ServiceEndpoint serviceEndpoint = new ServiceEndpoint

            (

                ContractDescription.GetContract(typeof(IHelloWorld)),

                new BasicHttpBinding(),

                new EndpointAddress(uri)

            );

 

            ChannelFactory<IHelloWorld> channelFactory = new ChannelFactory<IHelloWorld>(serviceEndpoint);

 

            IHelloWorld helloWorld = channelFactory.CreateChannel();

 

            string result = helloWorld.SayHello();

 

            (helloWorld as IDisposable).Dispose();

 

            Console.WriteLine(result);

        }

 

        #endregion

 

        #region TCP 통신하기 - CommunicateTCP()

 

        /// <summary>

        /// TCP 통신하기

        /// </summary>

        private static void CommunicateTCP()

        {

            Uri uri = new Uri("net.tcp://localhost/wcf/helloworldservice");

 

            ServiceEndpoint serviceEndpoint = new ServiceEndpoint

            (

                ContractDescription.GetContract(typeof(IHelloWorld)),

                new NetTcpBinding(),

                new EndpointAddress(uri)

            );

 

            ChannelFactory<IHelloWorld> channelFactory = new ChannelFactory<IHelloWorld>(serviceEndpoint);

 

            IHelloWorld helloWorld = channelFactory.CreateChannel();

 

            string result = helloWorld.SayHello();

 

            (helloWorld as IDisposable).Dispose();

 

            Console.WriteLine(result);

        }

 

        #endregion

    }

}

 

------------------------------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker

댓글을 달아 주세요