프로그래밍/.NET2012. 10. 17. 18:01

WCF 서비스

새 프로젝트 -> WCF 서비스 라이브러리 -> 확인


확인을 하신 후 생성된 솔루션 파일들입니다.


IService1.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace HelloWCF
{
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        Person GetData(int value);

        [OperationContract]
        void SetData(Person person);
    }

    [DataContract]
    public class Person
    {
        [DataMember]
        public string Name { get; set; }
        [DataMember]
        public string Age { get; set; }

    }
}


Service1.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace HelloWCF
{
    public class Service1 : IService1
    {
        public static List ListPerson = new List();

        public Person GetData(int value)
        {
            return ListPerson[value];
        }

        public void SetData(Person person)
        {
            ListPerson.Add(person);
        }
    }
}


그리고 솔루션 탐색기에서 App.config 오른쪽 마우스를 누른 후 [WCF 구성 편집] 을 클릭합니다.


그림에서 보시는 것처럼 Binding을 basicHttpBinding 으로 바꿔주세요.

이로써 WCF 서비스 측은 코딩이 완료 되었습니다.

컴파일을 해보면,


이런 화면이 뜨면 잘 오류없이 실행이 잘 된겁니다.

이 프로그램은 아직 종료하지 마시고, 다음 클라이언트측 프로젝트를 생성하세요.


그리고 이 주소를 접속할 클라이언트에서 알고 있어야하니 일단 주소를 복사해둡니다.


WCF 클라이언트

이제 WCF 서비스를 확인해야 할 클라이언트측 프로젝트를 만듭니다.


새 프로젝트 -> 윈폼 프로그램 프로젝트를 만듭니다.

그리고 코딩을 하기 전에 아까 만든 WCF 서비스의 서비스 참조를 추가합니다.


프로젝트 이름을 오른쪽 마우스로 클릭하시고, [서비스 참조 추가]를 클릭하세요.


그리고 방금 복사한 주소를 붙여넣기 하시고 이동을 누르시면 밑 서비스측에 저렇게 표시가 됩니다.

그리고 확인을 누르세요.


솔루션 탐색기를 보시면 서비스가 추가된 걸 보실수 있습니다.

이제 클라이언트측 코딩을 합시다.


클라이언트 디자인입니다.

TextBox 3개 - TextBox_Name, TextBox_Age, TextBox_Index

Button 2개 - Button_Set, Button_Receive

각각의 Name입니다.

그리고 Button 2개 모두 클릭 이벤트를 생성하였습니다.


그리고 코딩을 들어가시기 전에 위에 문자를 꼭 using  해주세요.


Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using HelloWCFClient.ServiceReference1;

namespace HelloWCFClient
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        // 설정 버튼 클릭
        private void Button_Set_Click(object sender, EventArgs e)
        {
            Person user = new Person();
            user.Name = TextBox_Name.Text;
            user.Age = TextBox_Age.Text;

            Service1Client proxy = new Service1Client();
            proxy.SetData(user);
        }

        // 받기 버튼 클릭
        private void Button_Receive_Click(object sender, EventArgs e)
        {
            Service1Client proxy = new Service1Client();

            Person user = new Person();
            user = proxy.GetData(Convert.ToInt32(TextBox_Index.Text));

            string strPesron = string.Format("이름 : {0}, 나이 : {1}", user.Name, user.Age);
            MessageBox.Show(strPesron);

        }
    }
}


결과화면

2개를 저장하신후

0, 1을 입력하신후 받기를 누르시면 결과값을 받아옵니다.



'프로그래밍 > .NET' 카테고리의 다른 글

ListView Column 클릭시 정렬  (0) 2012.10.25
WCF 배포하기(IIS)  (0) 2012.10.18
현재 날짜, 시간 얻어오기(Stirng 반환)  (0) 2012.10.15
SQL - 주요클래스, 연결  (0) 2012.10.11
#region  (0) 2012.08.16
Posted by 건깡