bestsource

ASP.NET 웹 양식 + ASP.NET Ajax 대 ASP.NET MVC 및 Ajax 프레임워크 자유도

bestsource 2023. 10. 11. 20:50
반응형

ASP.NET 웹 양식 + ASP.NET Ajax 대 ASP.NET MVC 및 Ajax 프레임워크 자유도

선택권이 주어진다면 어떤 길을 택하시겠습니까?

ASP.NET 웹 양식 + ASP.NET AJAX

아니면

ASP.NET MVC + 원하는 자바스크립트 프레임워크

ASP에 제한이 있습니까?NET 웹 양식 / ASP.NET AJAX는 MVC와 비교해서?

최근에 둘 다 해봤는데, MVC를 10번 중에 9번이나 받겠어요.

  • 저는 asp.net ajax 컨트롤을 구현하는 것을 정말 싫어합니다. 타이밍, 이벤트 및 디버깅 포스트백 문제와 관련된 많은 문제에 부딪쳤습니다.저는 http://encosia.com/2007/07/11/why-aspnet-ajax-updatepanels-are-dangerous/ 에서 많은 것을 배웠습니다.
  • asp.net 프로젝트는 MVP 패턴인 http://www.codeplex.com/aspnetmvp, 을 사용했고 패턴은 잘 작동했습니다.하지만 서버측 제어장치와 직접적으로 상호작용을 하고 있었기 때문에(즉, 많은 그리드 뷰 조작) 보기에 많은 코드가 표시되었습니다.이 코드는 단위 테스트 프레임워크에서는 거의 테스트할 수 없습니다.코드를 눈에 띄지 않게 하는 데 더 부지런했어야 했지만, 어떤 경우에는 더 쉽고 덜 지저분했습니다.

제가 asp.net 양식 개발을 사용하기로 선택한 한 가지는 그리드 뷰 컨트롤을 사용하는 것입니다.우리는 mVC와 함께 jquery를 javascript 프레임워크에 사용하고 있지만 아직 컨트롤과 같이 좋은 그리드 뷰를 찾지 못했습니다.우리는 기능적인 것을 가지고 있지만, asp.net 서버 측면 제어를 사용하는 대신 학습, 조정 및 디버깅에 많은 시간을 할애했습니다.마이크로소프트사가 asp.net 양식을 개발하지 않는 선에서 제공하는 훌륭한 위젯을 모두 잃게 됩니다.이러한 위젯의 손실은 자유로우면서도 처음 시작할 때 무섭기도 합니다.

결국 저는 우리가 MVC 개발을 하는 것이 행복합니다.저희 팀과 저는 새로운 프레임워크를 배웠고(이전에는 asp.net 개발자에 불과했습니다) html과 javascript로 손을 더럽혔습니다.필요할 때마다 다른 프로젝트나 다른 언어를 사용할 수 있는 기술입니다.

사람들이 그것이 명백한 선택이라고 생각하도록 속이지 마세요.당신은 두 세계 모두에서 최고를 얻을 수 있습니다.제 접근 방식은 MVC 프로젝트를 만드는 것이지만 뷰를 추가하는 대신 표준 asp.net 페이지를 추가하고 코드를 변경하여 MVC에서 상속합니다.페이지 보기는 다음과 같습니다.

public partial class SamplePage : System.Web.Mvc.ViewPage
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
}

코드 앞에 있는 단일 양식 태그(runat="server"가 있는 경우)로 제한하면 표준 asp.net 서버 컨트롤에 대한 액세스 뒤에 전체 코드가 표시됩니다.즉, 기존 ASP 스타일의 코드 직조 작업을 수행할 필요 없이 프레젠테이션을 전체 서버 측에서 제어할 수 있습니다(예: 데이터 바인딩 및 리피터 사용).

    protected void Page_Load(object sender, EventArgs e)
    {
        IObjectDefinition instance = (IObjectDefinition)ViewData["definition"];
        _objectName.Text = instance.DisplayName;//textbox or label

        DataTable itemVals = new DataTable();
        itemVals .Columns.Add("itemName");
        itemVals .Columns.Add("itemValue");            


        IDictionary<string, string> items = (IDictionary<string, string>)ViewData["items"];
        foreach (KeyValuePair<string, string> datum in items)
        {
            conditions.Rows.Add(new object[] { datum.Key, datum.Value});
        }

        _itemList.DataSource = itemVals;//repeater
        _itemList.DataBind();
    }

컨트롤에 대한 게시물은 페이지에 다시 게시되지 않고 컨트롤러에 게시됩니다.서버 컨트롤에서 이름 속성을 사용하는 것을 기억하는 경우, 표준 MVC에 따라 페이지 변수에 액세스할 수 있도록 FormControls 컬렉션에 들어갑니다.

그래서 뭘 얻었습니까?

  • 프레젠테이션의 전체 서버측 제어 당신의 코드는 순수하게 HTML과 asp.net 서버 제어 태그입니다.
  • 관심사를 완전히 분리 - 페이지는 프레젠테이션만 수행하고 모든 조정 및 마샬링은 컨트롤러에서 수행됩니다(페이지의 asp.net 스타일이 아닌).
  • 완전한 MVC 시험성
  • html 코드 위빙 없음
  • 보기 상태를 끄고 페이지 부풀리기를 줄일 수 있습니다.

무엇을 잃었습니까?

  • 서버 컨트롤만 사용하려면 다시 페이지당 하나의 양식으로 제한됩니다.
  • 버튼 및 양식에 대한 포스트백 대상을 수동으로 지정해야 할 수도 있습니다.
  • 당신은 다시 한번 당신의 발표를 위해 2개의 파일을 가지고 있습니다.

아, 그리고 AJAX - jQuery도 물론입니다.JsonResult를 반환하는 컨트롤러 방식으로 요청하면 일이 정말 간단해집니다.

저는 웹폼을 좋아하지만 ASP.넷 아약스는 쓰레기 더미입니다.

저는 모든 AJAX 호출의 서버측을 처리하는 WebForms + custom HTTP핸들러를 사용하는 것을 선호합니다.

헤헤, 반대표를 던졌는데...

ASP.NET AJAX 콜백은 전체 페이지 클래스를 다시 복구해야 하기 때문에 쓰레기 더미입니다. 하나의 방법을 호출하는 것이 아니라 매번 서버에 전체 페이지를 다시 빌드하는 것입니다.

또한 UpdatePanels는 전체 페이지를 반환합니다. 업데이트 패널의 섹션만 팝업으로 표시되므로 대역폭이 낭비됩니다.

WebForms 컨트롤이 쉽게 다른 방법이 될 수는 없지만 여전히 형편없기 때문에 왜 이런 방식으로 이루어졌는지 이해합니다.

대부분의 응답이 MVC 1.0 이전에 나온 것으로 알고 있습니다. 2.0 Preview이기 때문에 다시 방문하는 것도 좋을 것 같다고 생각했습니다.

전 ASP였어요.지난 3월 MVC로 이전하기 전까지 약 5년간 NET 개발자.한 순간도 후회하지 않았습니다.ASP에서 더 강해진 것을 이제야 알게 되었습니다.NET WebForms는 자바스크립트나 AJAX의 비 마이크로소프트 구현과 같은 다른 기술을 배우는 것이 더 어려워졌습니다.Microsoft는 ASP를 활용했습니다.WinForms 개발 접근 방식의 NET 개발 접근 방식은 WebForms 개발에서 오는 경우 학습 곡선에 도움이 되었지만, 두 접근 방식의 차이점을 이해한다면 웹 애플리케이션을 개발하는 것은 좋은 방법이 아닙니다.

제가 최근에 진행하고 있는 프로젝트는 ASP를 배우도록 요구했습니다.NET MVC, 자바스크립트, jQuery, CSS 2 및 AJAX(비 마이크로소프트).불과 9개월 만에 ASP 5년 만에 웹 개발 프로젝트에 접근하는 것보다 훨씬 더 나은 준비가 된 것 같습니다.NET 개발.ASP.NET 구현은 장기적인 유지 관리를 훨씬 더 어렵게 만듭니다.MVC는 단축키에 덜 의존하기 때문에 일을 훨씬 쉽게 만듭니다.프레임워크를 배우려면 시간이 좀 걸리지만, 프레임워크에 대해 더 많이 배울수록 프레임워크에 대한 의존도가 낮아지고 자바스크립트나 AJAX와 같은 기존 표준을 배우고 이해하기 시작합니다.

저에게는 분명한 선택입니다.다시는 ASP로 돌아가지 않겠습니다.NET. ASP를 사용할 수 없다면.NET MVC, 루비나 PHP를 배워보겠습니다.저는 제 웹 개발 도구의 진행과 발전이 수익이 아닌 개발자 커뮤니티의 요구에 의해 동기부여되기를 원합니다.

ASP.NET MVC는 아직 "Preview" 형태이므로 성숙하기 전까지는 고려하지 않을 것입니다.배관 작업을 많이 하지 않아도 자신만의 MVP 패턴을 쉽게 롤업할 수 있습니다.

Ajax측에서는 여러분이 원하는 것을 할 수 있는 라이브러리(상업용 또는 기타)를 찾아 보십시오.기본적인 것들(그리드, 트리, 자동완성 텍스트 박스 등)은 죽을 때까지 해왔습니다.바퀴를 재창조하지 마십시오.

제가 사이트를 설계할 때 가장 선호하는 것 중 하나는 DRY 원칙입니다.IMO ASP.NET MVC는 웹 형태보다 훨씬 더 건조합니다.

저는 최근에 웹 양식에서 MVC로 이동했는데 다시는 돌아갈 필요가 없기를 바랍니다!

업데이트 패널이 필요하다면 오픈소스와 라이트 MagicAjax 또는 ComfortASP를 사용하는 것을 추천합니다.프레임워크가 필요하다면 커스텀 ax 개발에 도움이 된다면 jQuery를 추천합니다.

ASP로 웹 양식을 만듭니다.NET Ajax는 천국입니다.그 둘의 통합은 그저 놀라울 뿐이고 함께 일하기에 너무나 자연스럽게 느껴집니다.

mvc 대신 웹 양식을 사용하면 라이프사이클을 활용하여 매우 우수하고 재사용 가능한 컨트롤을 개발할 수 있습니다.

하지만 저는 여전히 돔을 횡단하고 애니메이션을 추가하기 위한 믹스에 약간의 jQuery를 추가하고 싶습니다. 서버측과의 통합을 위해 asp.net ajax를 사용하는 것이 좋습니다.

MVC의 개념은 훌륭하지만, 수년간 사용해 온 모든 서버 컨트롤의 기능을 실질적으로 상실할 준비가 되어 있습니다.지금 MVC 구현을 살펴본 지 일주일 정도밖에 되지 않았지만 페이지 라이프사이클과 보기 상태가 사라져서 더 이상 이러한 컨트롤이 제대로 작동하지 않습니다.

또한 마크업에서 논리 코드를 많이 포함하고 있는 많은 예들을 발견하고는 경악했습니다.맞아요, aspx 파일에 있는 'if'와 'foreach' 문장은 끔찍한 단계를 뒤로 한 것입니다.저는 전통적인 asp를 뒤로하고 매우 기뻤지만, 현재 asp.net mvc 패턴을 구현하면 마크업에서 코드로 돌아가고, 모든 곳에서 도우미를 사용해야 하며, 사실상 사용 가능한 서버 제어가 전혀 없습니다.

지금 새 프로젝트를 시작하는 경우 asp.net 웹 양식을 사용하고 필요에 따라 내장된 asp.net ajax, 툴킷 및 jQuery를 사용하는 것이 좋습니다.asp.net ajax 구현이 최적의 구현이거나 가장 효율적인 구현은 아닐 수 있지만, 첫날에 100만 개의 고유한 기능을 얻거나 서버가 코모도빅 20이 아닌 이상 성능 히트는 눈에 띄지 않을 것입니다.

물론 이는 프로젝트 크기에 따라 다릅니다.수백만 페이지의 페이지 뷰를 기대하는 5년짜리 엔터프라이즈급 애플리케이션을 시작하는 경우 UpdatePanel은 이를 자르지 못할 수도 있지만, 평균적인 사이트를 구축하거나 프로토타입을 포기하거나 빠르게 이동해야 하는 경우 asp.net ajax는 완벽하게 작동하며 학습 곡선이 매우 낮습니다.

분명히 말씀드리지만, 아약스 콜을 할 때마다 전체 페이지가 반환되는 것은 아닙니다. /Only/ 업데이트가 필요한 패널의 내용이 유선으로 전송됩니다.모든 http 모니터가 이 점을 증명할 것입니다.예, / lifecycle/ 페이지가 수행되지만 상당히 효율적인 asp.net 을 구축할 수 있다는 사실을 알고 애플리케이션을 아약스합니다.

저의 경험은 pph와 루비로 된 아파치 서버용 웹 앱을 프로그래밍하는 것이었습니다.asp.net (웹 양식)으로 작성된 웹 앱을 유지하는 일을 시작했을 때, 저는 마이크로소프트의 웹 앱 구축 방법을 배우기 시작했습니다.저는 완전히 수치심을 느꼈다고 말해야겠습니다!나는 WTF가 이 모든 뷰스테이트 쓰레기가 다시 앞으로 보내지고 있다고 생각하고 있었습니다.이게 꼭 필요하긴 합니까?

그리고 나서 저는 ajax와 jquery로 간단한 일들을 하는 것을 고려하기로 결정했습니다. 그래서 패널과 클라이언트를 업데이트하기로 했습니다.보기에서 설정한 ID가 아닌 생성된 ID입니다.시간을 낭비하다니요!한 페이지에 여러 양식을 작성할 수 없는 이유는 무엇입니까?왜 그냥 일반적인 에이잭스 콜을 사용할 수 없습니까?내 보기에 서버 논리가 있는 이유는 무엇입니까?이러한 질문들은 많은 웹 프로그래머들이 asp.net 웹 양식에 직면하게 될 것이라고 확신하는 것들이었습니다.그 다음에 발견했습니다.NET MVC. 내 삶이 훨씬 쉬워졌어요.

레일스나 케이크 같은 MVC 프레임워크를 사용하는 데 익숙했습니다.웹 앱을 원래 프로그래밍된 방식으로 만드는 PHP.실제로 웹을 위한 기술을 사용합니다.

웹에서 프로그래밍한다는 사실을 추상화하려고 하기 때문에 윈폼 유형의 응용 프로그램을 프로그래밍하는 데 익숙한 사용자에게 웹 양식을 남겨주세요.만약 당신이 웹 프로그래머들에게 실질적으로 의미가 있는 웹용 어플리케이션을 개발할 진정한 자유를 가지기를 원한다면, 를 사용하세요.NET MVC나 당신에게 방해가 되지 않는 비슷한 것.

내 돈 2센트...

@ben의 대답을 칭찬하기 위해 ASP를 사용했습니다.간단한 데이터 바인딩을 위한 넷 웹폼과 모든 Ajax 트랜잭션을 위한 JQuery.솔직히 말해서, 저는 여전히 데이터 바인딩의 단순성 때문에 포기할 수 없었습니다.뷰 상태는 거의 쓸모가 없기 때문에 기본적으로 전원을 끕니다.MVC를 사용할 수는 있지만 양식에서 당연하게 여기는 기능을 개발하는 데 대부분의 시간이 소요될 것입니다.행운을 빌어요!

ajax.net 에서 asp.net winforms와 프로토타입/ext/jquery를 사용했습니다.고려해야 할 점이 사이트의 목표라고 생각합니다.MVC는 인기있는 패턴입니다.ASP MVC를 사용할 기회가 없었기 때문에 저는 ASP MVC에 반대하는 말을 할 수 없지만, 웹 양식을 선택했다면 ajax.net 에만 국한되지 않는다는 것을 확실히 하고 싶습니다.

asp.net ajax UpdatePanels가 이상적인 솔루션이 아니라는 데 동의합니다.

사용을 피하고 대신 클라이언트 측 라이브러리를 사용하여 서버와 통신을 수행해 왔습니다.asp.net ajax 4.0에서 제공되는 선언 구성 요소와 클라이언트 측 템플릿 기능에 대해 PDC에서 본 내용이 마음에 듭니다. 매우 좋습니다!JQuery를 기존 라이브러리와 결합하면 상당한 이점을 얻을 수 있습니다. JQuery가 설치 공간이 훨씬 작고 asp.net ajax 클라이언트 라이브러리와 동일한 작업을 많이 수행할 수 있다는 점을 고려하여 JQuery를 독점적으로 사용하는 것에 의문을 제기했습니다.

서버 스택에 관해서는 - 아직 MVC를 사용한 적은 없지만 웹폼을 이용한 홈롤 MVP 접근법을 사용하여 성공을 거두었습니다.

원래 질문이 나온 지 오래됐어요.이제 MVC3와 .NET4가 있습니다.

MVC는 이전보다 더 나은 솔루션이 되었습니까?

언급URL : https://stackoverflow.com/questions/99056/asp-net-webforms-asp-net-ajax-versus-asp-net-mvc-and-ajax-framework-freedom

반응형