2010-07-07 6 views
2

면책 조항, 개발자가 아닌 회사 지원 및 기술 지원 담당자입니다. 나는 세부 사항을 따르지 않고, 단순히 내가 습득하고 싶은 것이 가능한지 아닌지에 대한 생각이다.전자 상거래 소프트웨어의 여러 인스턴스를 단일 코드 기반으로 리팩토링

우리는 기존의 ASP 레거시 전자 상거래 소프트웨어 응용 프로그램을 수백 가지 호스팅하고 있으며 클라이언트와 사용자가 수없이 많은 사용자 정의로 인해 버전 관리가 악몽 같은 사용자 지정 코드를 관리 할 수 ​​없으며 새로운 기능 및 대량 배포 버그 수정은 어디에서 패치를 필요로하는지 추적 할 수 없기 때문에 가능합니다.

이 질문에 대한 답변 저는 더 나은 자동화를 위해 관리 스크립트를 만들고 있습니다.

그러나 정말로하고 싶은 것은 최소 코드를 사용하여 응용 프로그램 코드 (데이터베이스 아님)를 단일 코드 기반으로 이식하는 것입니다. 질문 :

  • ASP는 상대적으로 효율적으로 다른 데이터베이스에 대한 연결을 처리 할 때 호스트 헤더에 따라 다룰 수 있습니까? 루틴에 대한 기본 확장을 계획하고 hostheader를 metadb에서 db 자격 증명을 조회하고 그에 따라 응용 프로그램 연결 문자열을 설정하십시오.

  • 응용 프로그램 캐시 목적을 위해 데이터베이스에서 웹 서버에 몇 가지 파일을 씁니다.이 동작을 /masterapp/customer1/specificfile.htm과 같은 내용으로 작성한 다음 참조를 변경하여 처리하려고합니다. /specificfile.htm에/masterapp/등의 코드를 추가하십시오. /specificfile.htm. 분명히 specificfile.htm을 작성하는 루틴은 그에 따라 새 위치에 기록합니다. 이것은 합리적으로 보입니까?

  • 이미지 및 CSV 파일과 같은 기타 웹 서버 바인딩 저장소 특정 URL을 이상적으로 변경하지 않고도 계속 작업해야합니다. ASP는 로직을 사용하여 /images/example.jpg에 대한 요청을/masterapp/상점 이름 /images/example.jpg 또는/shopname /images/example.jpg 호스트 헤더에 다시 의존 하시겠습니까? 아니면 isapirewrite를 통해 할 수 있습니까? (우리가 이미 사용하고있다)

나는 이것이 가장 큰 도전이라고 생각한다. 이 모든 것들을 구현하는 방법에 대한 완벽한 프로젝트 계획이 필요하지는 않습니다. 가능한지 알고 싶습니다. 대답이 '예'인 경우 지원 시간 절약으로 인해 상사를 개발에 팔 수 있어야하며 사내 개발자가이를 잘 관리 할 수 ​​있습니다.

답변

0

이 가능해야합니다.이 가능해야하며 처음부터 그렇게 개발 된 코드로 비슷한 결과를 얻었습니다. 당신이 그것을 개조하고 있기 때문에 그것은 훨씬 더 어려울 것입니다. 그러나 그것은 당신의 실제 질문과 분리되어 있습니다.

는 실제 지점에 대답하려면 :

  • 은 아마도 당신의 DB 연결 문자열은 응용 프로그램 변수 또는 설정 파일에 이미? 그렇다면 호스트 헤더를 읽고 적절한 DB 문자열을 선택하는 global.asa Session_OnStart에 일부 논리가 필요합니다. 이것은 하드 코딩되거나 사이트, DB 문자열 파일 경로 등을 저장하고 세션 객체에 세부 사항을 가져 오는 "제어"DB를 가질 수 있습니다.

  • 이것은 위의 관련되면, DB에서 캐시 저장 위치를 ​​잡아 당기거나 각 사이트에 대해 "친숙한 디렉토리 이름"기본 이름을, 그래서 당신이 경우 당신은 "/masterapp/" & Session("strSiteBaseName") & "/cache/somefile.htm"

  • 을 가질 수 있습니다 IIS7 그럼 당신은 URL을 재작 성 모듈을 사용하여 이것을 처리 할 수 ​​있습니다. IIS6에 있다면 당신은 URL 재 작성을 할 수있는 타사 도구가 있습니다. 다시 나는 이것을 했으므로 작동하도록 보증 할 수있다. 정말로 영리 해지기를 원할 경우 마스터 응용 프로그램에서 파일을 다시 작성하고 web.config를 "터치하여 IIS에로드되도록 할 수 있습니다.

호스트 헤더를 사용하면 "www"와 "no-www"레코드를 모두 기억해야합니다.

각 사이트에 대해 맞춤 코드를 언급 했으므로 프로덕션에서는이 작업을 수행하지 않았지만 앱 외부에서 테스트 한 결과 이미 선언 된 기능을 다시 작성할 수 있습니다. 변수 이름에는 포함 할 수 없지만 텍스트 파일에로드하여 실행하면 사용자 정의 함수를 포함하는 방법 또는 변경된 응용 프로그램의 개별 인스턴스에 대한 핵심 기능이 변경됩니다.