2012-07-12 2 views
12

보통 나는 다음과 같은 층이 프로젝트에 대한 n 계층 아키텍처를 레이아웃 할 때 :웹 API는 일반적인 n- 티어 아키텍처에서 어디에 적합합니까?

  • 도메인 (도메인 모델, 저장소 계약)
  • 데이터 (저장소 도메인 모델의 상단에 작업을)
  • 서비스 (집계 REPOS, 캐싱, 검증)
  • 프리젠 테이션합니다 (MVC 응용 프로그램)

실제 응용 프로그램과 외부 클라이언트에서 ASP.NET MVC 4 Web API를 사용할 수있는 곳은 어디입니까? 서비스 레이어의 일부입니까, 아니면 서비스 레이어를 사용하고 MVC 앱과 같은 레벨에 앉아 있습니까?

+0

웹 레이어가 서비스 레이어를 사용하는 한, 특정 레이어가 고장 났을 때 프레젠테이션이라고 말하고 싶습니다. –

+2

@pst, 이것은 처음에 내가 한 일이지만 어떤 내용도 제시하지 않으므로 나에게 이상한 것처럼 보입니다. 따라서 웹 API는 단순히 서비스 계층에 대한 HTTP 래퍼 역할을합니까? –

+0

@pst, 귀하의 의견은 내가 생각하는 것을 거의 확인했습니다. 왜 당신은 대답으로 게시하지 않으며 나는 그것을 받아 들일 것입니다. 고마워 :) –

답변

8

이 개 방법이있을 수 있습니다 :

당신은 HTTP 호출을 통해 MVC 응용 프로그램에서 웹 API를 소비하기로 결정
  1. . 이 경우 호출 코드 (HttpClient)가 데이터 레이어에 있습니다. 데이터베이스 또는 원격 웹 서비스 호출에서 데이터를 가져 오든 관계없이 중요합니다. 이 경우 웹 API는 비즈니스 로직의 상당 부분을 이미 캡슐화하고 있기 때문에 서비스 계층은 매우 얇을뿐 아니라 데이터 액세스 레이어 주위의 래퍼이거나 추가 값을 가져 오지 않으면 존재하지 않을 수도 있습니다.

  2. 웹 API가 .NET으로 작성되었으므로 MVC 응용 프로그램에서이 API의 서비스 계층이 포함 된 어셈블리를 직접 참조 할 수 있습니다. 이 경우 웹 API 응용 프로그램의 서비스 계층이 MVC 응용 프로그램의 서비스 계층이됩니다.

+0

첫 번째 접근법은 내가 생각하고있는 것과 같은 선상에 있다고 생각합니다. 당신은 HttpClient가 Data Layer에 앉아 있다고 말했고 이것은 나에게 약간 불명확하다. API가 데이터 계층 위에 있고 본질적으로 HTTP 래퍼 역할을하는 서비스 계층 위에 있어야합니까?당신이 설명하는 것은 API가 두 레이어를 대체해야한다는 것이며 데이터 레이어는 간단한 HttpClient이거나 API를 쿼리하는 SDK의 일종이라고 생각합니다. 내 이해가 맞습니까? –

+2

첫 번째 접근법을 사용하면 웹 API를 완전히 외부적인 것으로 생각하십시오. 이 API 내부에는 다시 한번 데이터 액세스 레이어, 서비스 액세스 레이어 및 노출 된 뷰 모델이 있습니다. 그러나 웹 API 클라이언트 측면에서 이것은 중요하지 않습니다. 구현 세부 사항입니다. –

+0

아하, 마지막 코멘트를 클릭 한 것으로 생각합니다. 서비스 계층의 상단에 API를 빌드하고 응용 프로그램 계층과 외부 클라이언트에 대해 RestSharp를 사용하여 .NET SDK를 노출한다고 생각합니다. 답변 감사합니다! –

0

는 두 가지 가능성

  • 중간 계층 또는 미들웨어가 있습니다 일반적으로 웹 서비스와 WCF 서비스가 작동 된 곳이다. REST를 사용하는 것이 SOAP보다 훨씬 가볍기 때문에 이것이 사실상 유스 케이스이다. 웹 및 WCF 서비스는 클라이언트 생성과 관련하여 더 좋지만 웹 API는 점차 따라 잡습니다.
  • 프리젠 테이션 레이어 : 단일 페이지 응용 프로그램 또는 클라이언트에서 데이터를 사용하고 렌더링하는 모든 최신 웹 사이트/응용 프로그램에 데이터를 제공합니다.
+0

downvote에 대한 이유가 무엇입니까? – Aliostad

관련 문제