WCF/REST 서비스 프로젝트를 MVC/WebAPI로 변환하려고합니다. 서비스 계층은 여러 최종 시스템에 대한 래퍼로 여러 번 구현되며 모든 구현은 인터페이스 (IContract
)에 정의 된 공통 계약을 준수합니다. WCF를 사용하여 웹 서비스 메서드로 노출 된 각 메서드에 대해 [WebInvoke]
및 [OperationContract]
특성을 정의했습니다. WebAPI에서 이것은 컨트롤러에 정의 된 속성 라우팅으로 단순화 될 수 있습니다. 그러나 인터페이스에 정의 된 경로 속성을 유지하여 모든 구현이 유사하게 동작하도록하고 싶습니다.인터페이스에 정의 된 WebApi 특성 라우팅
public interface IContract
{
[Route("Version")]
[HttpGet]
string GetVersion();
}
가 나는 또한 추상 기본 클래스를 만드는 것이 좋습니다,하지만이 다른 StackOverflow question 차종 :
여기[ServiceContract]
public interface IContract
{
[WebInvoke(UriTemplate = "Version", Method = "GET", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
[OperationContract]
string GetVersion();
}
내가 작업을 얻을 수 있었으면 된 내용은 다음과 같습니다 여기
은 이전 인터페이스의 샘플입니다 WebAPI 속성 라우팅을 사용하는[WebInvoke(UriTemplate)]
을 적절하게 대체 할 수 없다고 생각합니다. 그렇다면 누군가가 비슷한 지원 기술을 가르쳐 줄 수 있습니까?
감사
는, 나는 WCF REST는 인터페이스에 배치'[WebInvoke의 (UriTemplate)] '속성의 사용을 통해 매우 비슷한 접근 방식을 지원하는 것은 놀라운 것 같아요. 더 나은 구조는 아마도 라우트 속성을 가진 추상 기본 클래스를 구현하는 것이고, 웹 API 버전 5.2가이 시나리오를 지원해야하는 것처럼 보입니다 ([이 업데이트 된 답변] (http://stackoverflow.com/a/19989344/) 참조). 44770)) – tbetts42
WCF REST에서 당신의 이야기를 들었지만, 개인적으로 그것이 튼튼한 원칙을 깨뜨린다고 생각합니다. 클래스를 구현하는 것에 대해 인터페이스를 알면 적어도 내 눈에는 목적을 상실 할 수 있습니다. – Haney