2009-11-26 3 views
4

나는 현재 제안을 통해이 사람이 웹 응용 프로그램에서 AJAX 호출을 용이하게하기 위해 WCF 서비스를 사용할 것을 제안하고 있습니다. 그들은 WCF가 데이터를보다 효율적으로 직렬화 할 수 있다고 말합니다. 저는 개인적으로이 접근법을 고려해 본적이 없습니다. 항상 jQuery의 AJAX 기능을 사용하여 MVC 컨트롤러를 호출하는 것이 좋았습니다.WCF를 사용하여 AJAX 호출을 용이하게 할 수 있습니까?

이제 AJAX 용 WCF를 사용하는이 제안이 있으며 나는 약간 회의적입니다. 나는 마음을 열고 지키고 싶습니다. 나에게 그것은 불필요하게 복잡하게하는 다른 레이어를 추가하는 것으로 보인다. 가치가 있니?

답변

3

부수적으로 ASP.Net MVC는 JavaScriptSerializer를 사용합니다 (오래된 포스트 .Net 3.5로 표시되어 있음에도 불구하고).)는 WCF가 DataContractJsonSerializer를 사용하는 JSON 데이터를 직렬화하기위한 것입니다.

그래서 JSON 직렬화 효율성면에서 볼 때 JavaScriptSerializer는 DataContractJsonSerializer보다 훨씬 가볍고 (모두 빠르고 빠름) MVC가 더 효율적입니다.

HTH

2

+1 나는 약간 회의적이다. 나는 평균적인 삿대를 젓는 사람이 Ajax/jQuery를 통해 많은 양의 데이터를 보내지 않는다고 생각하고, 만약 그들이 리팩토링 할 필요가 있다고 생각한다.

그렇다면 가능한 경우 2 ~ 3k 개의 데이터를 직렬화 할 때 (아마도) 일반적인 mvc 기능보다 WCF를 사용할 수 있습니다. 나는 2k조차도 Ajax를 통해 보낼 수 있다고 생각한다.

코드 숨김에서 WCF를 사용하는 것이 좋은 생각이지만, 아약스의 serilization에 대해서는 그 것에 대해 몰라.

-1

WCF는 (IIRC)가 바이너리이며 XML 직렬화가 수행 할 수없는 객체 그래프를 처리하는 자체 직렬 변환기를 가지고 있습니다. 또한 XML의 자세한 오버 헤드가 없어야합니다. 그레그가 지적했듯이, 그것은 아마도 최적화에 대한 과도한 관심사 일 것입니다.

WCF는 JSON보다 효율적입니까? 모르겠다. 그다지 중요하지 않은가.

코딩 할 때 오버 헤드를 추가하기 위해 씬 서비스 레이어와 ASP.NET 호스팅이 있습니다. 성능에 영향을 미치는지 여부는 별개의 문제입니다. 서비스 처리를위한 .asmx 또는 MVC 컨트롤러 오버 헤드와 비교할 때 볼 때 오버 헤드 일뿐입니다.

이 경우 WCF의 다른 기능을 실제로 얻지는 못했을 것입니다. ASP.NET 호스팅 웹 서비스에 WCF를 사용하면 특정 바인딩 프로토콜로 제한됩니다.

EDIT : 웹 서비스 용 WCF 프로젝트를 보면 웹 HttpBinding입니다. 주석에서 언급했듯이 JSON이됩니다. 반면에 ASP.NET ScriptManager 태그를 사용하는 경우에는 데이터 구문 분석을 포함하여 동적으로 프록시를 작성하므로 실제로 데이터를 직렬화하는 방법을 알지 못합니다.

+0

WCF는 WebHttpBinding을 통해 JSON을 지원합니다. –

+0

바인딩 프로토콜로 제한하는 것이 회사의 방향이 앞으로 나아가고 인터페이스로 코딩하는 것이면 좋지 않을 것이라고 생각합니다. WCF가 지적했듯이, 몇백 명의 캐릭터를 위해서 더 효율적일까요? 누군가 WCF를 연구하고 Wow의 "와우"에 상처를 입히고 프로젝트에서 어떻게 사용될 것인지 실제로 생각하는 결정을 내린 것처럼 나에게 들립니다. – griegs

+1

이것이 왜 투표가 실패했는지 확실하지 않습니다. 설명이나 왜 좋을지. – griegs

1

다른 바인딩을 사용하여 추가 엔드 포인트를 통해 동일한 서비스를 제공한다면 가치가있을 것입니다.하지만 AJAX를 사용하고 있다면 JsonResult를 리턴하는 MVC 컨트롤러와 함께 갈 것입니다. 액션 필터를 사용하여 매개 변수 직렬화를 계속 얻을 수 있습니다.

WCF 만 제공하는 특정 필수 기능이 없으면 MVC 컨트롤러가 더 간단 해집니다. 계약, 바인딩, 구성, WCF의 JSON 포맷팅 등에 대해 걱정할 필요가 없습니다.

1

그것은 개념 흥미로운 소리지만, 하루의 끝에서 당신은 여전히 ​​JSON을 반환하지 않습니다? 어쩌면 내가 뭔가를 놓친거야하지만 WCF에 의해 반환되는 Json은 WCF에 의해 반환되는 Json보다 더 최적화 될 수 있습니까? 내 XML이 자신보다 최적화되었다는 것과 같습니다. WCF가 브라우저에 바이너리 데이터를 반환 할 수있는 것과는 다릅니다. 데이터를 사용할 방법이 없습니다. (또는 할 수 있습니까?) WCF 시리얼 라이저가 MVC보다 빠를 수도 있지만 병목 현상은 항상있을 수 있습니다. 이 데이터를 전선에 전달할 것입니다.

물론 이것은 모두 순수한 추측입니다. 정확한 의견을 말하기 위해 읽은 제안서가 필요합니다. 그리고 Ajax를 통해 전송하는 데이터의 양에 따라 크게 다릅니다.

+0

WCF를 사용하도록 설득하려는 부분에서 제안이 매우 모호합니다. 어쨌든 WCF의 사용법을 기각하고 있습니다. 단지 제 생각에 두 번째 추측을 할 것입니다. "정말로 가치가 있나". 대답 해줘서 고마워. – 7wp

2

AJAX 호출을 용이하게하기 위해 WCF가 아닌 다른 레이어를 사용하지 않아도됩니다. MVC를 이미 사용하고 있다면 JsonResult는 위와 같은 Jason Fox에 따라 잘 수행 할 것입니다.

웹 서비스가 필요한 작업 (예 : 웹에서 상호 작용하는 작업)에 웹 서비스가 필요한 경우가 아니면 왜 그런가요? MVC Controller는 성가신 오버 헤드없이 항상 저를 위해 일해 왔습니다.

관련 문제