2010-04-14 4 views
3

현재 많은 공통 기능을 갖춘 세 개의 서로 다른 웹 사이트가 포함 된 프로젝트를 진행 중입니다. 현재 공통 기능은 사용자 컨트롤이 가득한 다른 웹 사이트에 배치됩니다.사용자 컨트롤 공유하기 여러 웹 사이트

문제는 여러 웹 사이트에 사용자 컨트롤을 공유하는 것입니다. SO 및 다른 웹 사이트를 둘러 보면서 유일한 해결책은 가상 디렉터리를 사용하는 것입니다. 이것이 실행 가능한 솔루션이므로 (현재 우리는 이것을 사용하고 있습니다) "깨끗한"솔루션으로 보이지 않습니다.

다른 사이트간에 공통된 기능 (GUI/HTML 포함) 공유에 대한 "모범 사례"는 무엇입니까?

단일 웹 응용 프로그램 프로젝트를 만들고 다른 프로덕션 환경에 하위 웹 응용 프로그램 (각각 자체 web.config 사용)을 배포 할 수 있습니까?

답변

1

ScottGu가 설명하는 사용자 정의 라이브러리을 빌드하여 사용자 컨트롤을 공유하기위한 solution이 있습니다. 제 생각에는이 솔루션이 너무 깨끗한 것은 아닙니다. 왜냐하면 미리 컴파일 된 파일을 복사하여이 솔루션이 작동하도록해야하기 때문입니다.

공통 UI 기능을 공유하기 위해 별도의 클래스 라이브러리에서 맞춤 웹 컨트롤을 사용하기로 결정했습니다. 하지만 스콧의 해결책이 도움이 될지도 모른다.

+0

클래스 라이브러리는 가장 명백한 비 도트 방법으로 보입니다. – Darren

0

IMHO 깨끗하지 않더라도 가상 디렉터리 솔루션을 사용하는 것이 좋습니다. 이렇게하면 각 웹 사이트에 별도의 파일을 배포 할 필요없이 여러 웹 사이트에서 사용할 수 있기 때문에 많은 두통을 해결할 수 있습니다. 변경 사항이있는 경우 한 곳에서만 수행해야합니다.

HTH

3

지금은 꽤 많은 시간이 다루고 있었고, 모두 가상 디렉터리 및 "사용자 제어 라이브러리"접근 방식을 사용하고, 그들을 모두 원하는 발견했다. Microsoft가 서버 컨트롤과 같이 사용할 사용자 정의 컨트롤을 컴파일하기 위해이 문제를 해결하지 못했음에 놀랐습니다.

  1. 쉬운에 대해 개발 : 어쨌든

    ...

    이 우리의 대부분은 사용자 컨트롤 라이브러리를 시도 할 때 찾아 두 편의입니다. 사용자 정의 컨트롤을 변경하면 한 곳에서 수행하려고합니다. 파일의 여러 복사본을 여러 개 관리하지 않고도 웹에서 편집 및 디버그를 수행 할 수 있기를 원합니다.

  2. 배포가 용이합니다. 여러 개의 웹 사이트에있는 ascx 파일을 잡고 번거 로움없이 게시 할 수 있기를 원합니다.

불행히도 가상 디렉터리 접근 주소는 # 2이고 "사용자 제어 라이브러리"주소는 # 2이고 # 1 부분 만 있습니다. "사용자 정의 라이브러리"를 사용하면 사용자 정의 라이브러리 소스에 대해 디버깅 할 수 있지만 작업 웹에서 ascx를 편집하면 다음에 "사용자 정의 라이브러리"가 작성 될 때 변경 사항이 덮어 쓰여집니다. 이는 서버 컨트롤이 작동하는 방식과 유사합니다. 다른 곳에서 편집해야하며 업데이트되도록 컴파일해야합니다. 예외는 .dll 참조를 업데이트하는 대신 "사용자 정의 라이브러리"를 복사해야한다는 것입니다.

해결책?

# 1을 해결하기 위해 사용한 내용은 symlinks입니다. 저장소에 공통 컨트롤 폴더를 만들고 원하는대로 각 웹에 해당 폴더를 심볼릭 링크합니다. symlink 폴더에 대한 모든 변경 사항은 소스 공용 컨트롤 폴더에서 수행됩니다.

# 2를 해결하기 위해 컨트롤을 적절한 위치에 복사 한 전체 웹 사이트를 배포하기 만하면됩니다. 대신 가상 디렉터리를 쉽게 수행 할 수 있으며 각 웹 사이트의 심볼릭 링크 된 폴더를 롤아웃 할 수 없습니다. 필자는 퍼포먼스 이슈 (많은 웹, 트래픽 톤)에 대한 우려로 소스를 호스팅하는 일반 사용자 컨트롤에 대해 가상 디렉터리에서 벗어난 경향이 있습니다.

도움이 되었기를 바랍니다.

관련 문제