2009-06-02 2 views
42

[WebMethod] 속성으로 표시된 방법으로 .NET 3.5 aspx 장소가 있습니다. JSON을 양방향으로 보내는 jQuery를 호출합니다. 이 모든 것이 훌륭하게 작동합니다. 제 질문은, [ScriptMethod]은 메소드에 적용 할 때 무엇을합니까? 나는 이것을 시도하고 같은 결과를 얻을 것으로 보인다. ScriptMethodWebMethod은 동일하고 상호 교환 가능합니까? 아니면 다른 하나가 제공하지 않는 기능 및/또는 오버 헤드를 제공합니까? 일반적으로 웹 서비스를 구현하는 데 사용할 수있는 모든 옵션과 혼동을 겪고 있으며 각각의 장점과 단점이 무엇인지 알고 싶습니다.WebMethod 대 ScriptMethod

+2

큰 질문과 환영합니다! – JoshJordan

답변

2

ScriptMethodAttribute 특성은 선택 사항입니다. 그러나 클라이언트 스크립트에서 호출 할 수있는 메서드에는 System.Web.Services .. ::. WebMethodAttribute 특성이 적용되어 있어야합니다. 메서드가 ScriptMethodAttribute로 표시되지 않으면 HTTP POST 명령을 사용하여 메서드가 호출되며 응답은 JSON으로 serialize됩니다. 이 설정은 스크립트에서 재정의 할 수 없습니다. 에서

- http://msdn.microsoft.com/en-us/library/system.web.script.services.scriptmethodattribute.aspx

편집 :의 WebMethod 및 ScriptMethod는 특성을 경쟁하지 않습니다. ScriptMethod는 위의 para에서 말한 것처럼 추가 주석이 될 수 있습니다.

+0

WebMethod = HTTP POST로 호출 ... ScriptMethod를 추가하면 무엇이 더 많습니까? 둘 다 클라이언트에서 호출 할 수 있습니다 ... 나는 그것을 얻지 못합니다. –

29

다음 두 가지 시나리오에서 ScriptMethod 특성을 사용합니다.

  1. jquery 또는 다른 아약스 요청 메커니즘을 사용하고 있지만 POST가 아닌 GET 요청을 원합니다.
  2. XML 형식의 응답을 javaScript로 수신하려고합니다.

위 요구 사항 중 하나가없는 경우; ajax 요청을 사용하여 JSON 응답이 필요하다면 WebMethod를 간단하게 사용할 수 있습니다.

여기에 하나 더 혼란스러운 요소가 있는데, ScriptService 속성을 언제 사용합니까? 이 당신이 마이크로 소프트 아약스 클라이언트 스크립트 프레임 워크를 사용하는 경우 사용되며, 이것은 그냥 보통의 객체와 같은 함수를 호출 할 수 있도록 클라이언트에서 프록시 객체를 생성하기 위해 서버에게 속성. var MyRemoteObject = new RemoteObject();MyRemoteObject.getMessage(....) ScriptService 특성을 사용하는 경우에도 위 시나리오에서만 ScriptMethod 특성을 추가 할 필요가 없습니다. 내가 ScriptService과 ScriptMethod 그냥 WebService를 함께 같은 작품 특성과의 WebMethod 특성을 생각하기 때문에

그것은 시작 부분에서 나에게 혼란이었다.