programing

ASMX, ASPX 또는 ASHX에 대한 .NET AJAX 콜

lovejava 2023. 3. 5. 09:18

ASMX, ASPX 또는 ASHX에 대한 .NET AJAX 콜

클라이언트 측에서 AJAX를 사용하여 javascript에서 비즈니스 로직을 호출하는 가장 효율적인 방법은 무엇입니까?javascript에서 직접 aspx로 [WebMethod]를 호출하거나(제 경우는 JQuery를 사용하여 도움을 주고 있습니다) .asmx를 직접 호출할 수 있습니다.오버헤드가 적은 콜은 무엇입니까?베스트 프랙티스는 무엇입니까?

또한 [ScriptService]속성은 클래스에서 무엇을 합니까?지금까지 .aspx [ Web Method ]메서드로 사용해 본 적이 없고, 모든 것이 정상적으로 동작하고 있는 것 같습니다.

나는 이것이 순전히 객관적인 질문이었으면 좋겠다.잘 부탁드립니다!

Script Service는 asp.net에 숨겨진 보석이라고 생각합니다.스크립트 서비스에 대한 콜은 데이터 + 뷰스테이트 형식의 패스백이 아니라 린하고 고속의 JSON 페이로드입니다.

이게 가장 좋은 부분이야, ASP.NET3.5의 스크립트 매니저는 사용자가 호출할 JS 메서드를 생성하고 필요한 JS 클래스를 설정하는 것과 관련된 대부분의 작업을 대신 수행할 수 있습니다.

사용자가 C# 클래스라고 가정한 "사용자"에 대한 세부 정보를 가져오는 간단한 예제입니다.

Person Service.asmx:

namespace MyProj.Services {
  [System.Web.Script.Services.ScriptService]
  [System.Web.Script.Services.GenerateScriptType(typeof(Person))] 
  public class PersonService : System.Web.Services.WebService
  {
    [WebMethod, ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
    public Person GetPersonDetails(int id)
    { 
       /* return Logic here */
    }
  }
}

DetailsPage.aspx에서

<asp:ScriptManager ID="ScriptManager1" runat="server">
 <Services>
  <asp:ServiceReference Path="~/Services/PersonService.asmx" />
 </Services>
</asp:ScriptManager>

이러한 설정을 사용하면 서비스를 호출하고 C# Person 클래스의 JS 버전을 얻을 때 JQuery의 도움도 필요하지 않습니다. .net은 이 모든 것을 제공합니다.JS에서 이 서비스를 사용하는 예는 다음과 같습니다.

MyProj.Services.PersonService.GetPersonDetails(id, _onDetailsCallbackSuccess, _requestFailed, null);

_onDetailsCallbackSuccess: function(result, userContext, methodName) {
 //all persons properties are now intact and available
 document.getElementById('txtFirstname').value = result.Firtname;
}

어쨌든 ASP를 조사하는 것 이상의 가치가 있습니다.NET Ajax ScriptService 관련 정보이번에는 사용하지 않기로 결정해도 꽤 나쁜 기능입니다.

링크

서버측 오버헤드만 신경 쓴다면 쿼리 문자열과 함께 단순한 GET을 ASHX로 보내는 것이 좋습니다.이것은 확실히 보다 바람직합니다.ASPX는 불필요한 페이지 라이프 사이클을 거칩니다.

ASMX Web 메서드의 장점은 다른 테크놀로지로 쉽게 호출할 수 있는 표준(디스커버리 지원)을 기반으로 구축되어 있다는 것입니다.매뉴얼을 첨부하여를 참조해 주십시오.ASHX도 마찬가지로 전화하기 쉬울 것입니다.

질문의 표현은 ASMX "Script Service", ASHX Http Handler 및 ASP의 차이를 고려하고 있다고 생각합니다.NET AJAX "PageMethod" (실제 ASPX 페이지가 아님)

만약 그렇다면, 그들은 모두 매우 비슷합니다.ASP.NET AJAX Page Methods는 모든 면에서 ASMX Script Services와 동일합니다.페이지 인스턴스를 작성하지 않으므로 일반적으로 ASPX 페이지와 관련된 오버헤드가 발생하지 않습니다.

요구로 서버를 포화시키는 것을 말하는 것이 아니라면, 이 세 가지 모두 동등한 성능을 발휘한다는 것을 알게 될 것입니다.

언급URL : https://stackoverflow.com/questions/673075/net-ajax-calls-to-asmx-or-aspx-or-ashx