2008-08-27 4 views
5

우리 사이트의 고객 대면 섹션을 .NET 3.5에서 다시 설계하는 중입니다. 지금까지 잘 진행되어 왔고 동일한 작업 흐름과 저장 프로 시저를 사용하고 있습니다. 가장 큰 변경 사항은 UI, ORM (사전에서 LINQ까지) 및 분명히 언어입니다. 이 점에 대한 대부분의 페이지는 사소한 것이었지만 이제는 가장 무거운 워크 플로우 페이지를 작업 중입니다.ASP 클래식에서 .NET으로 마이그레이션 및 통증 완화

우리의 오퍼 수용 섹션의 메인 페이지는 1500 라인이며, 그 중 약 90 %가 ASP이며, include에 대한 함수 호출에서 아마도 또 다른 1000 라인이있을 것입니다. 나는 우리가 지금까지 사용하고 표준 연습 응용 프로그램 모두에 위에 읽는 어쩌면 시간 정도를 지출하는 것입니다이

function GetDealText(sUSCurASCII, sUSCurName, sTemplateOptionID, sSellerCompany, sOfferAmount, sSellerPremPercent, sTotalOfferToSeller, sSellerPremium, sMode, sSellerCurASCII, sSellerCurName, sTotalOfferToSeller_SellerCurr, sOfferAmount_SellerCurr, sSellerPremium_SellerCurr, sConditions, sListID, sDescription, sSKU, sInv_tag, sFasc_loc, sSerialNoandModel, sQTY, iLoopCount, iBidCount, sHTMLConditions, sBidStatus, sBidID, byRef bAlreadyAccepted, sFasc_Address1, sFasc_City, sFasc_State_id, sFasc_Country_id, sFasc_Company_name, sListingCustID, sAskPrice_SellerCurr, sMinPrice_SellerCurr, sListingCur, sOrigLocation) 

같은 보석과 함께 작업하고 있기 때문에 1500 선이 조금 너무 속이고 생각 주석 처리 된/비추천 된 코드를 제거해야합니다. 그런 다음 깊이 우선 방식으로 작업하십시오. 상단에서 시작하여 aspx.cs 파일에 코드 세그먼트를 복사하고 재 작성을 시작하여 특히 ORM을 활용하기 위해 명확한 리팩터링을 작성합니다. 우리가 가지고 있지 않은 함수 호출을 얻으면 정의를 쓸 것이다.

모든 코드를 작성한 후에 리팩터링/테스트에서 몇 가지 단계를 거칩니다. 이 프로세스를 좀 더 쉽고/효율적으로 만드는 방법에 대한 조언이 있다면 궁금 할 것입니다.

답변

6

당신이 어디에서 오는지 내가 정확히을 알고, 날 믿어 .. 나는 현재 ... .NET으로 기존 ASP에서 큰 응용 프로그램을 마이그레이션하고 그리고 난 아직도 ASP를 배우고 .그물! : S (그래, 나는 두려워!). 내가 지금까지 현재의 디자인에서 (즉, "더 거대한가이 모든 것을 찢어과 ASP.NET을 할 수없는 너무 길 잃은 해달라고

  • :

    내가 내 마음에 보관 한 주요 것들

    이있다 마법 같은!) ASP 고전 고전이 경향이 커플 링의 엄청난 양 때문에, 이것은 매우 위험합니다. 물론, 자신감이 있다면, 부츠를 채우십시오 :) 이것은 나중에 언제든지 리팩토링 될 수 있습니다 :
  • 모두 백업 테스트, 테스트 및 더 많은 테스트!정말 TDD에 들어가기 위해 열심히 노력하고 있지만 기존 앱을 테스트하는 것은 매우 어렵습니다. 따라서 고전을 제거하고 .NET으로 교체 할 때마다 최대한 많은 녹색 빛 테스트를 통해 가능한 한 나를 뒷받침합니다.
  • 많이 연구하면 고전과 .NET 사이의 몇 가지 주요한 변화가 있습니다. 때로는 코드의 여러 줄이 될 수 있으며 고전에 포함될 수 있습니다 코드 몇 줄에서 얻을 수 있습니다. 코딩하기 전에 생각합니다. D

그것의 매우 코드 :)와 Jenga 재생과 같은

프로젝트와 행운을 빕니다, 더 이상 질문, 다음 :

1

다시 작성하지 않고도 기존 ASP에서 3.5로 ASP를 사용할 수 있습니까? 스킬 즈. 필자는 기존의 ASP @work를 처리해야했습니다. 구문 분석하고 다시 작성하는 것이 더 쉽다고 생각합니다.

2

모든 항목을 코딩 한 후에 리팩토링/테스트시 몇 가지 단계를 거칩니다. 이 프로세스를 좀 더 쉽고/효율적으로 만드는 방법에 대한 조언이 있다면 궁금 할 것입니다.

Doing it wrong

는 일반적으로 나는 TDD의 팬이 아니지만, 정말 리팩토링의 경우에 갈 수있는 방법입니다.

당신이보고있는 비트가 실제로하고 있는지 확인하는 몇 가지 테스트를 먼저 작성하십시오. 리팩토링. 이것은 '그것은 여전히 ​​작동하는 것처럼 보입니다.'보다 훨씬 더 믿을만합니다.

이것에 대한 다른 큰 이점은 페이지 아래쪽이나 공유 라이브러리 등에서 리팩토링 할 때 어려운 방법을 찾지 않고 테스트를 다시 실행할 수 있다는 점입니다 겉으로는 관련이없는 변화 실제로

관련된 것을
0
문의하시기 바랍니다 :이 어려운 방법으로, 여러 번 배운

당신은 사물에 대해 꽤 잘 다루는 것처럼 들립니다. . 많은 사람들이 음역을 포함하여 직선 음역을하려고하는 것을 보았습니다. 단지 작동하지 않습니다. 많은이 Classic ASP와 다르기 때문에 ASP.Net의 작동 방식을 잘 이해하고 있어야합니다.

큰 파일의 경우 먼저 더 높은 수준의보기를 얻으려고합니다. 예를 들어, 내가 알아 차 렸던 한 가지는 Classic ASP가 함수 호출에 대해 끔찍한 것이 었습니다. 당신은 어떤 코드를 읽었을 것이고 그것이 구현 될지도 모른다는 단서가없는 함수 호출을 발견 할 것이다. 결과적으로 Classic ASP 코드는 이러한 불쾌한 점프를 피하기 위해 긴 함수와 스크립트를 사용하는 경향이있었습니다. 나는 40 페이지에 인쇄 된 기능을 본 기억이있다! 그 많은 코드를 직접 파싱하는 것은 재미 없다.

ASP.Net을 사용하면 함수 호출을 쉽게 수행 할 수 있으므로 더 큰 코드 블록을 몇 개의 작은 함수로 나누는 것으로 시작할 수 있습니다.

1

1500 라인 ASP 페이지? 파일을 포함하라는 외침이 많이 있습니까? 말하지 말아라. 함수는 어떤 include 파일이 그들의 구현을 가지고 있는지 알려주는 이름 짓기 규칙을 가지고 있지 않다 ... 그것은 추억을 가져온다. (떨림) ...

꽤 단단한 접근법 - 당신의 고통을 완화시키는 마법의 방법이 있는지 확실하지 않습니다. 전환 작업이 끝난 후에도 앱 아키텍처가 복잡하고 UI가 복잡해 지므로 (코드 숨김 워크 플로) 코드를 유지 관리하는 데 다소 어려움이있을 수 있지만 리팩터링을 통해 확실히 도움이됩니다.

앱을 너무 많이 확장하려고하지 않고 주로 앱을 유지 관리 할 책임이없는 한 복잡한 워크 플로를 업그레이드하는 것과는 달리 처음부터 다시 작성하는 것에 비해 업그레이드의 중요성을 생각해보십시오. 당신이하는 것처럼 기반 애플 리케이션은 처음부터 다시 작성보다 저렴하고 더 나은 선택이 될 수 있습니다. ASP.NET은 최소한 Classic ASP보다 성능 및 확장 성을 개선 할 수있는 좋은 기회를 제공해야합니다. 귀하의 질문에서 나는 그것이 어쨌든 그 토론을위한 과정에서 너무 늦었다 고 생각합니다.

행운을 빈다.

0

는 말하지 마 - 기능은하지 파일을 포함 당신이 다시 기억 (전율) ... 제공합니다 ... 자신의 구현이 을 알 수있는 이름 지정 규칙을

어떻게 알았습니까?- 당신이 너무 많은 응용 프로그램을 확장하려는 가 아니며 당신이 주로 책임을지지 않습니다만큼 당신이 방금 처음부터 를 다시 작성에 대해하고있는 업그레이드 무게를 바랍니다)

앱을 유지하면서 과 같은 복잡한 워크 플로 기반 앱을 으로 업그레이드하면 처음부터 다시 작성하는 것보다 저렴하고 더 좋은 방법이 될 수 있습니다. ASP.NET은 더 나은 성능을 제공합니다. 및 확장 성, 적어도 기본 ASP. 귀하의 질문에서 나는 어쨌든 그 토론을위한 과정에서 너무 늦었다 고 상상해보십시오.

이것은 우리가 얘기 한 내용입니다. 타이밍 (경쟁사의 사이트를 열려고 시도)과 리소스 (기본적으로 두 명의 개발자)를 기반으로하면 궤도에서 사이트를 핵으로 만들지 않는 것이 좋습니다. 상황은 내가 예상했던 것보다 훨씬 좋아졌다. 우리는 계획 단계에서도이 코드가 우리에게 가장 큰 문제점을 줄 수 있음을 알고있었습니다. 관련된 고전적인 ASP 페이지의 개정 내역을 볼 수 있어야합니다.

큰 파일의 경우 먼저 상위 수준보기를 얻으려고합니다. 예를 들어, 내가 알아 차 렸던 한 가지는 Classic 함수 호출에 대해 ASP가 끔찍했습니다. 일부 코드를 읽으면 실마리가없는 경우 실마리가없는 함수를 호출 할 수 있습니다. 그 결과 Classic ASP 코드는 에 긴 함수와 스크립트를 사용하여 의 스크립트를 사용하여 이러한 불쾌한 점프를 방지했습니다. 나는 을 인쇄하여 40 페이지를 출력하는 기능을 기억합니다! 을 통해 파싱하면 많은 코드가 재미 있지 않습니다.

저는 실제로 레거시 코드로 작업하는 것에 대한 불만이 많아서 시스템에 대한 상당한 수준의 이해를했습니다. 함수 길이에 대해 옳았는데, 새로운 사이트의 aspx 페이지/도우미 클래스/ORM 중 3-4 배에 해당하는 루틴 (대부분 작은 크기로 리팩토링 한 루틴)이 있습니다.

0

한 번 ASP에서 이식 된 .Net 앱을 발견했습니다. .aspx 페이지는 완전히 비어 있습니다. 개발자는 UI를 렌더링하기 위해 코드 뒤에 StringBuilders를 사용하고 response.write를 수행했습니다. 이것은 그것을하는 틀린 방법 일 것입니다!

0

이전에 ASP에서 이식 된 .Net 앱이 나왔습니다. .aspx 페이지는 완전히 비어 있습니다. 개발자는 UI를 렌더링하기 위해 코드 뒤에 StringBuilders를 사용하고 response.write를 수행했습니다. 이것은 그것을하는 틀린 방법 일 것입니다!

다른 방식으로 코드를 볼 수 있습니다. 전역 선언을 제외하고 코드 숨김 페이지가 비어 있습니다. 그런 다음 VBScript가 ASPX에 남아 있습니다.

관련 문제