WCF 정리.

seung-jae hwang·2019년 3월 21일
0

WCFUP

목록 보기
3/5
  1. Interface

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

namespace MyServiceInterface
{
[ServiceContract]
public interface IService1
{
[OperationContract]
int Add(int Number1, int Number2);
[OperationContract]
int Sub(int Number1, int Number2);
[OperationContract]
int Mul(int Number1, int Number2);
[OperationContract]
int Div(int Number1, int Number2);
}

[ServiceContract]
public interface IService2
{

    [OperationContract]
    [WebGet(UriTemplate = "/Add/{Number1}/{Number2}", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
    int AddRest(string Number1, string Number2);


    [OperationContract]
    [WebGet(UriTemplate = "/Sub/{Number1}/{Number2}", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
    int SubRest(string Number1, string Number2);


    [OperationContract]
    [WebGet(UriTemplate = "/Mul/{Number1}/{Number2}", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
    int MulRest(string Number1, string Number2);

    [OperationContract]
    [WebGet(UriTemplate = "/Div/{Number1}/{Number2}", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
    int DivRest(string Number1, string Number2);

}

}

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

using MyServiceInterface;

namespace WebApplicationWCF
{
public class Service1 : IService1, IService2
{

    public int Add(int Number1, int Number2)
    {
        return Number1 + Number2;
    }

    public int Sub(int Number1, int Number2)
    {
        return Number1 - Number2;
    }

    public int Mul(int Number1, int Number2)
    {
        return Number1 * Number2;
    }

    public int Div(int Number1, int Number2)
    {
        return Number1 / Number2;
    }

    public int AddRest(string Number1, string Number2)
    {
        int num1 = Convert.ToInt32(Number1);
        int num2 = Convert.ToInt32(Number2);
        return num1 + num2;
    }

    public int SubRest(string Number1, string Number2)
    {
        int num1 = Convert.ToInt32(Number1);
        int num2 = Convert.ToInt32(Number2);
        return num1 - num2;
    }

    public int MulRest(string Number1, string Number2)
    {
        int num1 = Convert.ToInt32(Number1);
        int num2 = Convert.ToInt32(Number2);
        return num1 * num2;
    }

    public int DivRest(string Number1, string Number2)
    {
        int num1 = Convert.ToInt32(Number1);
        int num2 = Convert.ToInt32(Number2);
        return num1 / num2;
    }
}

}

Server

  1. Web.config

    <system.serviceModel>




















        <endpoint name ="RESTEndPoint"
                  contract ="MyServiceInterface.IService2"
                  binding ="webHttpBinding"
                  address ="rest"
                  behaviorConfiguration ="restbehavior"/>
    
        <endpoint contract="IMetadataExchange"
                  binding="mexHttpBinding"
                  address="mex" />
      </service>
    </services>

    </system.serviceModel>

    <system.webServer>

    <!--
        To browse web app root directory during debugging, set the value below to true.
        Set to false before deployment to avoid disclosing web app folder information.
      -->
    <directoryBrowse enabled="true"/>

    </system.webServer>

Client

  1. http://localhost:8000/Service1.svc/Rest/add/7/2

  2. fiddler

GET http://localhost:8000/Service1.svc/Rest/add/7/2 HTTP/1.1
Host: localhost:8000
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Whale/1.4.64.6 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7

3

0개의 댓글