2008-09-23 10 views
48

ASP.NET MVC 프로젝트에 웹 서비스를 추가하면 MVC의 전체 개념이 손상됩니까? 웹 서비스 (WCF)는 백엔드와 통신하기 위해 내 MVC 프로젝트에서 모델 층에 따라 달라집니다 (그래서는 MVC 솔루션의 일부가 될 필요가있다처럼 나에게 보이는) 그건ASP.NET MVC 및 웹 서비스

.

컨트롤러 또는 모델 레이어에 추가해야합니까?

답변

27

는 소리가 난다.

  • YourApp.Data - 공유 모델과 어쩌면 데이터 액세스
  • YourApp.Web - 당신은 당신의 웹 애플리케이션에서 자세한 내용을 공유하려는 경우
  • YourApp.Web.Mvc
  • YourApp.Web .WebService

WebServices MVC 스타일을 원할 경우 MVC를 사용하여 자체 REST 응용 프로그램을 작성해야합니다.

+0

서비스의 컨트롤러 논리를 복제하지 않으시겠습니까? 그리고 컨트롤러 코드를 두 번 작성하면 결국 모델을 사용하여 아무 것도 저장하지 않아도됩니다. –

+0

@Rob, no 웹 페이지를보기위한 컨트롤러 코드는보기 및 유효성 검사 모델 등을 처리해야하기 때문에 안심할 수 있습니다. 안심할 수있는 API 컨트롤러는 이상적으로 json 및 서식 지정 데이터를 뱉어내는 것이 이상적입니다. – Chev

19

MVC 응용 프로그램에 웹 서비스를 추가해야하는 특별한 이유가 있습니까? 특별한 이유가없는 한 RESTful 웹 서비스처럼 RESTful 방식으로 컨트롤러를 사용해야한다. 자세한 내용은 롭 코너리에서이 포스트 밖으로

점검 : ASP.Net MVC: Using RESTful architecture

+0

이것은 꽤 오래되었지만 내가 가진 질문에 대한 답변을 얻을 수 있습니다. 나는 다른 드롭 다운이 바뀌면 값이 변하는 드롭 다운리스트를 동적으로로드하기 위해 웹 서비스가 필요하다는 인상을 받고있다. 이것이 내가 webForms에서하는 방법입니다. 이것이 MVC에서 어떻게 이루어 집니까? – Erix

+2

링크가 손상되어 업데이트 된 링크를 찾을 수 없습니다. 이 콘텐츠는 Wayback Machine에서 사용할 수 있습니다. http://web.archive.org/web/20130119131317/http://wekeroad.com/2007/12/06/aspnet-mvc-using-restful-architecture –

0

내 응용 프로그램에 웹 서비스를 추가하고 그것을 잘 작동합니다. 나는 그것이 당신의 모델에 대한 대체 인터페이스이기 때문에 그것이 MVC를 위반한다고 생각하지 않는다. 웹 서비스에는보기가 없으므로 MVC는 웹 서비스에 적합하지 않습니다. 당신이 자신의 어셈블리로 모델을 분할하고 MVC 애플리케이션 및 WCF 응용 프로그램에서 참조해야처럼

+4

웹 서비스는 웹 사이트 또는 RSS 피드뿐만 아니라 MVC를 사용하여 만들 수 있습니다. 실제로 이것은 MVC 개념의 강점 중 하나입니다. 동일한 컨트롤러 액션이 어떤 종류의보기에도 데이터를 전달할 수 있습니다. 웹 서비스는 물건을 출력하므로보기가됩니다. :) – hangy

2

모델을 자체 어셈블리로 분리하는 것이 MVC를 사용하는지 여부에 관계없이 모델을 가지고 있다고 생각하지 않습니다. 그게 어디 없는가?

11

모델을 자체 프로젝트로 분리해도 "MVC"패턴이 손상되지 않습니다. 우선, 그것은 바로 그 패턴입니다. MVC 패턴의 의도는 데이터, 데이터 핸들러 및 발표자와 이들 사이의 인터페이스 방식을 명확하게 설명하는 것입니다. 그것을 할 수있는 가장 좋은 방법은 셉 제안하는 방법입니다

  • YourApp.Data
  • YourApp.Web.Mvc
  • YourApp.Web.WebService 당신을 도울 수

뭔가가있다 Rob Conery가 합친 MVC 매장.

MVC Storefront Video Series

그리고 당신은 당신의 브라우저에서 실제 코드를보고 싶은 경우에 빨리 그는 그것이, 여기 않았다 방식을 볼 수 : 비디오가 여기에 손목 시계 이동 MVC Storefront Codeplex Code Browser

1

내가 했어 이렇게해라.

my blog

PS에서 내 결과를 참고 :이 너무 오래 모든 웹 서비스가 반환 않기 때문에 웹 서비스 저장소의 모델이라고 생각대로 MVC 개념을 깰 것이라고 생각하지 않는다 XML 덤프.

+0

만료되지 않도록 URL을 업데이트했습니다. – Zac

+0

lol, "만료되지 않습니다" – Chev

0

웹 서비스와 데이터베이스를 같은 것으로 생각하십시오. 이 비유를 통해 데이터베이스 로직을 배치 할 때 웹 서비스를 배치하는 것이 이치에 맞다고 생각합니다.