기술적인 포스팅을 해보고싶어졌다... 너무 헤이해졌기에............... 안쓴지도 오래되고..........
그리하여 고른 기술은
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가 찍힘...........
내가 적으면서도...이게 뭘까..........................
그러니 샘플을 올립니다..!!!
샘플을 보시면 이해하기가 더 쉬울겁니다!!!