WCF (Window Communication Foundation)
반응형

기술적인 포스팅을 해보고싶어졌다... 너무 헤이해졌기에............... 안쓴지도 오래되고..........

그리하여 고른 기술은

WCF!!!

본론으로 바로...!!!

 

위키가 말하길 WCF는 

윈도우 커뮤니케이션 파운데이션(Windows Communication Foundation, WCF)은 응용 프로그램을 한 대의 컴퓨터나 네트워크에 연결된 여러 컴퓨터를 걸쳐 통신할 수 있게 만들어 주는 새로운 통신 하부 시스템이다. WCF 응용 프로그램들은 닷넷 런타임을 대상으로 하는 언어를 사용하여 개발할 수 있다.

무슨말인지 이해가 가는가..............

 

난 그냥 모든지 내 방식대로 내 마음대로 이해하는 스타일이라.......

자세히 말은 못하겠지만..!! 

프로세스간 통신하는 방법중 하나인 것으로 기존엔 TCP/IP, UDP 등으로 통신을 하던것을 WCF라는 통신을 통해 프로세스간 통신이 가능하게 해준다는 것.... 즉 단순 통신 프로토콜이다..

 

이론을 잘 알아야하는데..............

바로 실전으로 갑시다.............

 

WCF는 일단 각 프로세스간 통신 방법이므로

2개의 프로세스가 존재해야한다. (TCP/IP처럼 생각한다면 Server S/W, Client S/W 2개)

 

1개의 프로세스는 Host를 맡고, 1개의 프로세는 Client를 맡는다.

 

Host 프로세스는 

1
2
3
4
5
6
7
8
9
10
11
12
 
ServiceHost host = new ServiceHost(typeof(WCFService), new Uri("http://localhost/wcf/")); 
 
// 클라이언트가 접근할 주소
host.AddServiceEndpoint(typeof(IWCFService), new BasicHttpBinding(), "WCFService"); host.Description.Behaviors.Add(new ServiceMetadataBehavior() 
    { 
        HttpGetEnabled = true 
    }
); 
 
// 클라이언트가 접속할 수 있도록 서비스를 열어둔다.
host.Open();
cs

 

위와 같이 서비스를 열어둔다.

1번째 줄에서 나타난 WCFService라는 type은 Client가 Service의 함수를 호출할 수 있는 함수, 변수들을 정의한 클래스이이다. 아래와 같이 정의된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ServiceModel;
 
namespace WCF_Helloworld_Service.Services
{
    [ServiceContract]
    interface IWCFService
    {
        [OperationContract]
        string sayHello();
    }
 
    class WCFService : IWCFService
    {
        public string sayHello()
        {
            return "HelloWorld!";
        }
    }
 
}
 
cs

 

위 SayHello라는 함수를 Client에서 호출할 수 있도록 할 것이다.

 

uri로 지정한 부분은 localhost가 아닌 service가 열리는 ip를 입력해주어도 된다.

이러면 서비스는 끝...

 

이제 클라이언트 부분!!!

클라이언트의 설정을 위해 일단 서비스프로그램을 관리자모드로 실행합니다!(.exe파일을 실행)

그 후 솔루션을 마우스 우클릭해서 서비스 참조 추가를 누른 후 나오는 창에서

주소란에 http://localhost/wcf/ 입력하고 이동을 누르면 사용할 수 있는 서비스가 자동으로 추가된다. 

그 후 아래와 같이 작성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System
using System.Collections.Generic;
using System.Linq;
using System.Text; 
using System.Threading.Tasks; 
using System.ServiceModel; 
using System.ServiceModel.Description; 
using WCF_Helloworld_Client.ServiceReference1; 
 
namespace WCF_Helloworld_Client
    class Program 
    { 
        static void Main(string[] args) 
        { 
            WCFServiceClient client = new WCFServiceClient(); 
            Console.WriteLine(client.sayHi()); 
        } 
    }
}
cs

 

이러면 실행하면 콘솔에 Hello World가 찍힘...........

 

내가 적으면서도...이게 뭘까..........................

그러니 샘플을 올립니다..!!!

샘플을 보시면 이해하기가 더 쉬울겁니다!!!


WCF_Hello.zip
0.09MB

반응형