문제

나는 크고 오래되고 스파게티가 가득한 ASP 시스템에서 몇 가지 중요한 개발을 수행해야 합니다.저는 오랫동안 ASP를 떠나 Rails 개발에 에너지를 집중했습니다.

내가 취한 기본 단계 중 하나는 페이지를 의미 있는 이름을 가진 하위 및 함수로 리팩터링하여 최소한 파일 상단에서 일반적으로 진행되는 작업을 쉽게 이해할 수 있도록 하는 것입니다.

ASP를 위한 가치 있는 MVC 프레임워크가 있습니까?아니면 적어도 뷰에서 비즈니스 로직을 가져오는 방법에 대한 모범 사례는 무엇입니까?(당시에는 인클루드를 많이 했던 기억이 납니다. 아직도 그렇게 합니까?)

비즈니스 로직에 대한 단위 테스트도 수행하고 싶지만 너무 많은 것을 요구하는 것은 아닐까요?

업데이트:

프로젝트에는 200개 이상의 ASP 스크립트가 있으며 길이는 수천 줄에 이릅니다. ;) 으악!

우리는 "대규모 재작성"을 선택할 수도 있지만 그때까지는 페이지를 변경할 때 스파게티를 정리하는 데 약간의 시간을 더 투자하고 싶습니다.

도움이 되었습니까?

해결책

가정

Classic ASP 시스템에 대한 문서는 다소 가볍습니다.

경영진은 재작성을 원하지 않습니다.

Ruby on Rails를 사용해왔으므로 (VB/C#) ASP.NET은 기껏해야 무난할 것입니다.

내 경험

나 역시 ex excel-vba 유형에 의해 무작정 결합된 고전적인 ASP 시스템을 물려받았습니다.이런 내용이 많았어요 <font size=3>crap</font> (때로는 닫는 태그가 누락되기도 합니다.아아아아!).2.5년 동안 나는 보안 시스템, 공통 라이브러리, CSS+XHTML을 추가하고 xhtml1.1(안타깝게도 적절한 MIME 유형이 없음)을 검증하도록 강제할 수 있었고 상당히 강력하고 Ajaxy 보고 시스템을 구축했습니다. 매일 80명의 사용자가 사용합니다.

cTags와 함께 jEdit을 사용했습니다. 방해 위) 및 기타 여러 플러그인이 있습니다.

나의 충고일반적으로 사용되는 모든 항목을 가져올 마스터 포함 파일을 만들어 보십시오.로그인/로그아웃, 데이터베이스 액세스, 웹 서비스, 자바스크립트 라이브러리 등과 같은 것입니다.

수업을 활용하세요.그것들은 매우 원시적(상속 없음)이지만 jamting이 말했듯이 편리할 수 있습니다.

스크립트를 올바르게 들여쓰기하세요.

논평

외부 아키텍처 문서를 작성합니다.저는 개인적으로 LyX를 사용합니다. 왜냐하면 멋진 형식의 PDF를 생성하는 것은 불가능하기 때문입니다. 하지만 원하는 것은 무엇이든 사용할 수 있습니다.Wiki를 사용하는 경우 graphviz 추가 기능을 설치하여 사용하세요.쉽게 수정할 수 있는 빠른 다이어그램을 만드는 것은 매우 쉽습니다.

개선 사항이 얼마나 실질적이어야 하는지 모르기 때문에, 좋은 상위 수준에서 중간 수준 아키텍처 문서를 갖고 있으면 개선 사항을 계획하는 데 매우 유용할 것이라고 제안합니다.

비즈니스 로직 유닛 테스트에서 제가 찾은 유일하게 작동하는 것은 메인 라이브러리를 가져오고 메인 라이브러리의 하위 포함에 함수(서브루틴은 아님)를 노출하는 asp의 xml-rpc 리스너를 설정하는 것입니다. xml-rpc를 통해 ASP 기능을 호출하는 기능을 더 잘 지원하는 언어로 단위 테스트 시스템을 별도로 구축하십시오.저는 Python을 사용하지만 Ruby가 그 일을 해야 한다고 생각합니다.(말이 돼?).멋진 점은 소프트웨어의 단위 테스트 부분을 작성하는 사람이 호출할 기능에 대한 적절한 설명이 있는 한 ASP 코드를 볼 필요조차 없다는 것입니다.

라는 프로젝트가 있습니다. 아스푸유닛 sourceforge에 있지만 마지막 릴리스는 2004년이었고 비활성으로 표시되어 있습니다.한번도 사용한 적이 없지만 순수한 vbscript입니다.코드를 대충 살펴보면 작성자가 자신이 무엇을 하고 있는지 알고 있는 것처럼 보입니다.

마지막으로, 도움이 필요하신 경우 계약 재택근무 업무(주당 최대 8시간 정도)를 할 수 있는 시간이 있습니다.연락처 정보를 보려면 링크 트레일을 따라가세요.

행운을 빌어요!HTH.

다른 팁

작동 중인 시스템을 완전히 다시 작성하는 것은 매우 위험할 수 있으므로 제가 드릴 수 있는 작은 팁은 다음과 같습니다.프로젝트에 풍부한 태그인 ctags를 설정하세요.이렇게 하면 함수 정의로 쉽게 이동할 수 있는데, 이는 많은 도움이 된다고 생각합니다.

"뷰"에서 논리를 분리하는 방법.VBScript는 클래스를 통해 일종의 OO를 지원합니다.나는 "뷰" 역할을 하는 ASP 페이지에 포함된 논리를 수행하는 클래스를 작성하는 경향이 있습니다.그런 다음 Username과 같은 클래스로 뷰를 연결합니다.<%= 내 계정.사용자 이름 %>.MyAccount 클래스에는 다음과 같은 메서드도 있을 수 있습니다.MyAccount.Login() 등.

일종의 원시적이지만 최소한 일부 코드를 캡슐화하여 HTML에서 숨길 수 있습니다.

내 조언은 리팩토링을 계속하라는 것입니다. 기존 ASP는 클래스를 지원하므로 표시 코드를 제외한 모든 것을 클래스만 포함된 ASP 파일로 이동할 수 있어야 합니다.구식 ASP에서 ASP.NET으로 전환하는 방법에 대한 자세한 내용은 이 기사를 참조하세요.

ASP 리팩토링

미래의 방향에 관해서 저는 ASP.NET 웹 양식을 목표로 하지 않고 대신 ASP.NET의 추가 기능인 Microsoft의 새로운 MVC 프레임워크를 선택하겠습니다. 클래식 ASP에서 이것으로 마이그레이션하는 것이 훨씬 간단할 것입니다.

나는 사용한다 ASPUnit 우리의 클래식 ASP 중 일부를 단위 테스트하고 그것이 도움이 될 것이라고 생각합니다.오래되었을 수도 있지만 ASP도 마찬가지입니다.간단하지만 작동하며 필요한 경우 사용자 정의하거나 확장할 수 있습니다.

나도 찾았어 레거시 코드를 효과적으로 사용하기 Michael Feathers가 작성한 오래된 코드 중 일부를 테스트하는 방법을 찾는 데 유용한 가이드입니다.

포함 파일은 단순하게 유지하는 한 도움이 될 수 있습니다.어느 시점에서 나는 각 클래스에 대한 포함을 생성하려고 시도했지만 그다지 잘 작동하지 않았습니다.나는 공통 비즈니스 로직을 포함하는 몇 가지 기본 포함을 갖고, 복잡한 페이지의 경우 때로는 각 페이지에 대한 논리를 포함하는 것을 좋아합니다.비슷한 설정으로 MVC를 수행할 수 있을 것 같습니다.

ASP에서 ASP.Net으로 이동할 가능성이 있습니까?아니면 기존 ASP로 유지하고 정리만 하려고 하시나요?가능하다면 최대한 .Net으로 이동하는 것이 좋습니다.어쨌든 많은 코드를 다시 작성/재구성하는 것처럼 보이므로 .Net으로 이동하는 데 추가 노력이 많이 들지 않을 수도 있습니다.

아마도 현재 유지 관리하고 있는 시스템의 대부분 또는 전체를 다른 사람이 작성했을 것입니다.일반적인 나쁜 습관(반복되는 코드, 범위가 너무 넓은 변수, 중첩된 if 문 등)을 찾아 다른 언어와 마찬가지로 리팩토링하세요.동일한 파일이나 다른 파일에서 반복되는 항목을 주의 깊게 살펴보고 이를 함수로 추상화하세요.

다양한 사람들이 코드를 작성/유지 관리하는 경우 일관성 없는 코딩 스타일로 인해 문제가 발생할 수 있습니다.코드를 다시 한 줄로 가져오면 리팩토링할 수 있는 항목을 더 쉽게 볼 수 있다는 것을 알았습니다.

"수천 줄의 길이"는 느슨하게 관련된 내용이 같은 페이지에 표시되는 상황도 있을 수 있다는 의심을 갖게 합니다.여기서도 이를 별도의 서브루틴으로 추상화하려고 합니다.

결국에는 데이터베이스 연결과 같은 항목을 캡슐화하는 데 도움이 되는 개체를 작성하고 싶지만 거기에 도달하기까지는 시간이 좀 걸릴 것입니다.

이것은 매우 오래되었지만 2센트를 추가하는 것을 거부할 수 없었습니다.다시 작성해야 하고 기존 ASP를 계속 사용해야 하는 경우:

  • JScript를 사용하세요!훨씬 더 강력하고 상속을 얻을 수 있으며 클라이언트 측에 사용하는 것과 동일한 서버 측 유효성 검사 방법을 사용하는 것과 같은 몇 가지 좋은 측면 이점이 있습니다.
  • 당신은 절대적으로 MVC를 할 수 있습니다. 저는 MVC 프레임워크를 작성했는데 코드 줄이 그리 많지 않았습니다.
  • 약간의 작업을 통해 모델 클래스를 자동으로 생성할 수도 있습니다.꽤 잘 작동하는 코드가 있습니다.
  • 매개변수화된 쿼리를 수행하고 항상 연결이 끊긴 레코드세트를 반환하는지 확인하세요.

소프트웨어 개발 프로젝트 관리 관행에 따르면 이와 같은 소프트웨어는 폐기되어야 합니다.

나는 옳은 일을 하는 것이 얼마나 어려운지 알고 있으며, 책임 있는 관리자가 모든 것을 알고 최악의 방법 이외의 모든 것을 두려워할 때 더욱 그렇습니다.

하지만 여전히.새로운 소프트웨어 개발 작업을 시작해야 합니다.이것을 영원히 유지하는 것은 단순히 불가능하며, 그들이 그것을 폐기하기를 기다리는 로거는 더 나쁩니다.

적절한 사양/요구 사항 문서가 없는 경우(해당 코더의 초보자 능력을 고려할 때 전 세계 ASP 소프트웨어는 없다고 생각합니다) 소프트웨어 기능을 알고 있는 사용자 그룹과 관리자가 모두 필요합니다. 요구 사항을 검증하는 일을 담당합니다.모든 기능을 검토하고 요구 사항을 문서화해야 합니다.

이 과정에서 소프트웨어와 해당 비즈니스에 대해 더 많이 배우게 됩니다.정보가 충분하면 새로운 정보 개발을 시작할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top