2010-12-08 6 views
6

데이터베이스에서 일부 데이터를 가져 와서 정적 HTML 페이지를 쉽게 만들 수 있도록 제공해야합니다. 은 서버 처리를 덜어줍니다. (80Gb의 대역폭 낭비가 있습니다. 하루).WebService 또는 간단한 MVC 컨트롤러?

내 질문

내가이 데이터를 (WCF는 동일한 서버에있을 것입니다 당겨하는 WCF 서비스 (또는 ASMX 웹 서비스)를 생성한다 간단하다, 그래서 나는 아직도 내가 많이 덜하지만, 그것을 사용

public class ServiceApiController : Controller 
{ 
    public ActionResult GetPrizes(string calendarGuid) 
    { 
     return Json("..."); 
    } 
    public ActionResult GetWinners(string calendarGuid) 
    { 
     return Json("..."); 
    } 
    public ActionResult AddSubscriber(string calendarGuid, string[] args) 
    { 
     return Json("..."); 
    } 
    public ActionResult ReclaimSubscriberEmail(string calendarGuid, string email) 
    { 
     return Json("..."); 
    } 
    public ActionResult RequestContact(string calendarGuid, string[] args) 
    { 
     return Json("..."); 
    } 
} 

하고 그냥 전화 : 그냥 내가 정말 필요)

을 페이지를 처리하는 데 낭비하지 않거나 내가 좋아하는 간단한 컨트롤러를 작성해야하는지지고 있어요 Javascript 프레임 워크에서 직접 사용할 것입니다. (물론, 내 사랑스러운 jQuery).

답변

8

에 따라 다릅니다. WCF 서비스는 HTTP에 의존 할 필요가 없으며 대신 직접 TCP 연결을 사용할 수 있으므로 유연합니다. 또한 SOAP을 공개하는 것이 매우 쉽습니다. 비헤이비어, 엔드 포인트 등을위한 web.config 설정은해야 할 것보다 약간 더 복잡합니다.

반면에 MVC는 DataContracts를 변경하기 위해 가끔씩 (공유 어셈블리의 재배포가 필요하기 때문에) 때때로 처리 할 필요가 없으므로 이와 같이 설정하는 것이 더 빠를 수도 있습니다.

WCF = "견고한"WCF는 "안정적"으로 만들기 위해 훨씬 더 많은 프로토콜을 사용합니다. 즉, 공급자와 소비자간에 단호한 계약을 체결 할 수 있습니다.

MVC = 좀 더 융통성 있고 설치가 쉽지만 엄격한 계약이 없습니다. Json의 형식을 변경하면 클라이언트가 처음에 알아 차리지 않고 끊을 수 있으므로 더 많은 작업을 수행 할 수 있습니다.

전반적으로 위에서 설명한대로 WCF를 사용해야하는 이유가없는 한 MVC를 사용합니다 (클라이언트와 서버 사이의 안정적인/보장되는/발견 가능한 계약, SOAP을 가져야한다는 요구 사항 또는 IIS를 설치하는 데 불편 함/불필요한 경우) 예를 들어 내 서버가 Windows 서비스로 실행되기 때문에 웹 사이트)

0

일부 데이터를 표시하기 위해 UI 프레임 워크가 필요하지 않으면 웹 서비스를 선호합니다.

0

개인적으로 WCF 웹 서비스를 만들어 데이터를 노출합니다. 더 유연 해지고 다양한 데이터 형식을 처리하는 여러 끝점을 공개 할 수 있습니다. JSON, XML, ... 이렇게하면 다른 클라이언트 (웹, 창, 모바일 등)에서 서비스를 사용할 수 있습니다.

+0

'Controller'를 통해 Content (myClass.ToXML()) 또는 Json (myClass)를 반환하고 Michael이 지적한 것처럼 쉽게 할 수 있습니다 ... WCF 구성은 때로는 실제로 까다 롭습니다. 이미 보았습니다. -/ – balexandre

+0

형식 요청 매개 변수를 찾는 작업 필터로 동일한 결과를 얻을 수 있습니다. 예 :'\ ​​path \ to \ resource? format = xml' 또는'\ path \ to \ resource.json' – Ryan