2011-11-02 5 views
3

하나의 WCF 응용 프로그램을 개발했으며 데이터베이스와 웹 응용 프로그램 사이의 중간 계층으로 작업하고 있습니다. 이제 고객이이 WCF를 ServiceStack을 사용하여 REST으로 전송하려고합니다.WCF에서 ServiceStack 프레임 워크로 서비스 변환

나는 그것을 GitHub에서 둘러 보았고 데모를 만들려고했다. NuGet을 사용하여 시작 템플릿을 만들었으므로 Hello & Todo 예제가 포함되어 있습니다.

  1. 로직을 객체 기반 (DTO)으로 전송하려면 어떻게해야합니까? 왜냐하면 내가 가지고있는 대부분의 함수들은 다른 매개 변수를 가지고 결과를 데이터 셋으로 반환하기 때문입니다.

  2. 어떻게 C#으로 클라이언트를 만들 수 있습니까? 그리고 어떤 참조를 추가해야합니까?

  3. NuGet을 사용하여 시작 템플릿을 추가 한 후 IIS에 샘플 애플리케이션을 호스팅 할 때 리소스를 찾을 수 없습니다. IIS에서 호스트해야 할 때 필요한 특정 설정이 있습니까?

답변

6

아직 수행하지 않았다면 Creating REST Services with ServiceStack 프리젠 테이션을 진행하십시오.

1) ServiceStack의 Hello World 예를 본 적이 있다면 그것을 할 필요가있는 유일한 단계는 웹 서비스를 만들 수 있음을 보여줍니다 만 제공하는 것입니다 :

는 위의 예에 필요한 모든 코드를 보여줍니다
//1. A Request DTO 
public class Hello : IReturn<HelloResponse> { 
    public string Name { get; set; } 
} 

//2. A Response DTO 
public class HelloResponse { 
    public string Result { get; set; } 
} 

//3. The web service implementation that takes a Request DTO and returns a Response DTO 
public class HelloService : Service 
{ 
    public object Any(Hello request) 
    { 
     return new HelloResponse { Result = "Hello, " + request.Name }; 
    } 
} 

Hello 웹 서비스를 만듭니다. WCF 메서드에서 기존 유형 및 로직을 많이 재사용 할 수 있으며 Any() 메서드로 복사 할 수 있습니다.

2) ServiceStack의 장점 중 하나는 입니다.에 ServiceReference를 추가 할 필요가 없습니다. 즉 모든 웹 서비스에 대해 동일한 일반 서비스 클라이언트와 DTO를 재사용 할 수 있습니다. 예컨대는 다음 /메타 데이터 페이지에서

//Using JSON: 
IServiceClient client = new JsonServiceClient("http://localhost/path/to/servicestack"); 

//Using XML: 
IServiceClient client = new XmlServiceClient("http://localhost/path/to/servicestack"); 

var response = client.Send(new Hello { Name = "Arun" }); 
Console.WriteLine("Received: " + response.Result); 

또한 웹 서비스 당신은 당신이 원하는해야 생성 된 서비스 클라이언트를 만들 수 WSDL에 대한 링크가있다. 그러나 이것은 기존의 DTO를 사용하는 것보다 훨씬 많은 마찰을 필요로하기 때문에 권장되는 접근법은 아닙니다. ServiceStack 웹 서비스는 이미 ASP.NET 응용 프로그램입니다. 예를 들어 ServiceStack은 웹 응용 프로그램 웹에 a Web.config mapping을 추가하여 일반 ASP.NET 또는 MVC 웹 응용 프로그램 내부에서 실행되도록 구성 할 수있는 IHttpHandler 집합입니다. config.

기본적으로 ServiceStack 웹 서비스를 일반 ASP.NET 웹 응용 프로그램으로 취급 할 수 있습니다. 실제로 Hello World Tutorial에서는 빈 ASP.NET 응용 프로그램을 만드는 방법을 보여줍니다.

The Starter Templates 예제 프로젝트를 확인하여 다양한 호스팅 옵션 (예 : ASP.NET/Windows 서비스/콘솔 응용 프로그램)에서 실행되도록 ServiceStack을 구성하는 데 필요한 최소 설정을 보여줄 수도 있습니다.

+0

이것은 견고한 답변과 훌륭한 프레임 워크입니다. 제가 작성한 다른 웹 응용 프로그램에서 소비자에게 필요한 경우 RestIntro.ServiceModel 참조를 추가해야합니다. 어떻게 그 응답을 json 형식으로 변환 할 수 있습니까? –

+0

내가해야 할 일은 ServiceModel (여기서는 고객 클래스)에 의존하지 않고 어떻게이 서비스를 사용할 수 있습니까? –

+0

@ArunRana 웹 서비스를 개발하는 데 사용하는 것과 동일한 Dtos를 JsonServiceClient가 제공하는 모든 ServiceStack의 serializer/형식에 사용할 수 있습니다. – mythz