WCF 학습 노트 - C#로 WebService 개발 방법

5071 단어 webservice
모든 프로젝트의 명칭 공간이 데모라고 가정하십시오.
4
  • C#의 ClassLibrary 프로젝트를 새로 만듭니다

  • 4
  • 엔지니어링 참조에 System을 추가합니다.ServiceModel 참조

  • 4
  • 인터페이스를 정의하면 자동으로 생성된 코드를 삭제하거나 코드를 직접 수정하여 인터페이스를 추가할 수 있습니다
  • [ServiceContract]
    
    
    
    Interface IMath {
    
    
    
    [Operationcontract]
    
    
    
                Int add (int a, int b);
    
    
    
    }

     
    4
  • 인터페이스 구현
  • 인터페이스를 구현하는 Math와 같은 새 클래스를 추가합니다.
    Public class Math : IMath{
    
    
    
                Int add(int a,int b){
    
    
    
                            Return (a+b);
    
    
    
    }
    
    
    
    }

     
    4
  • 하숙 프로그램을 작성하고 콘솔이나 Winform 프로그램을 새로 만듭니다.System을 추가합니다.ServiceModel 및 System.ServiceModel.Channels의 참조입니다.
    4
  • 코드를 통해 바인딩합니다


  • using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    using System.ServiceModel;
    using System.ServiceModel.Channels;
     
    namespace HelloServiceHost
    {
        class Program
        {
            static void Main(string[] args)
            {
                using (MyHelloHost host = new MyHelloHost())
                {
                    host.openService();
                }
            }
        }
     
        public class MyHelloHost : IDisposable
        {
            private ServiceHost serviceHost = null;
     
           ///
           ///base address
           ///

           //public const string baseAddress = "net.pipe://localhost";
            public const string baseAddress = "http://localhost";
     
           ///
    ///서비스 이름
           ///

            public const string serviceAddress = "MathService";
           
           ///
    ///서비스 구현 계약
           ///

            public static readonly Type serviceType=typeof(demo.Math);
           
           ///
    ///인터페이스 계약
           ///

            public static readonly Type contractType = typeof(HelloService.IHelloService);
     
           ///
    ///서비스 바인딩 정의
           ///

           //public static readonly Binding helloBinding = new NetNamedPipeBinding();
            public static readonly Binding helloBinding = new BasicHttpBinding();
     
           ///
    ///빌드 서비스 호스팅
           ///

            private void createHelloServiceHost()
            {
    ///서비스 객체 만들기
                serviceHost = new ServiceHost(serviceType,new Uri[]{new Uri(baseAddress)});
    ///끝점 추가
                serviceHost.AddServiceEndpoint(contractType, helloBinding, serviceAddress);
            }
     
            public ServiceHost ServiceHost
            {
                get { return serviceHost; }
            }
     
           ///
    ///서비스 열기
           ///

            public void openService()
            {
                Console.WriteLine("Service is starting...");
                serviceHost.Open();
                Console.WriteLine("Service running...");
            }
     
            public MyHelloHost()
            {
                createHelloServiceHost();
            }
     
            public void Dispose()
            {
                if (null != serviceHost)
                {
                    (serviceHost as IDisposable).Dispose();
                }
            }
        }
    }
     
    4
  • 구성 파일을 통해 바인딩합니다.콘솔 프로그램인 경우 App. 를 추가하십시오.config 파일, 그리고 다음과 같이 수정합니다. Winform에서 App.를 직접 수정하면config 파일

  •  
    1a) App. 수정Config


     
       
         
           
             
               
             

           

           
         

       

       
         
           
             
           

         

       

     


     
    1b) 수정 코드는 다음과 같다.
        class Program
        {
            static void Main(string[] args)
            {
                ServiceHost host = new ServiceHost(typeof(demo.Math));
                host.Open();
                Console.ReadKey();
            }
    }

    좋은 웹페이지 즐겨찾기