2016-06-23 1 views
5

잠재적으로 많은 수의 (최대 300 개까지) 다양한 유형의 스크립트 파일을 사용하는 Visual Studio 프로젝트를 디자인하고 있습니다. 이 파일은 다른 프로젝트와 공유되지 않습니다. 즉, 프로젝트에만 적용됩니다. 을 모두임베디드 리소스 (빌드 작업 설정)으로 설정 한 다음 실행시에 Assembly.GetManifestResourceStream()을 사용하여 이러한 파일을 검색하는 것에 반대하는 좋은 인수가 있습니까? 아니면 이것이 임베디드 리소스의 오용일까요? 이러한 리소스를 파일로 유지하는 파일 시스템 디렉토리가 대신 사용해야합니까? 포함 된 리소스를 사용하는많은 수의 스크립트를 프로젝트에 포함 된 리소스로 포함시키는 것은 나쁜 습관입니까?

장점은 것으로 나타납니다

  • 생성 어셈블리 (스크립트 파일 또는 유효하지 않은 경로 누락에 대해 걱정할 필요없이 하나의 파일 배포를) 공유하고 배포하기 쉬운;
  • 격리 및 편의성 : VS 프로젝트 내에서 모든 리소스에 액세스 할 수 있습니다.

이 방법에 대한 인수는 일반적으로 다음과 같습니다

  • 당신이 어셈블리의 재 컴파일 및 재배치없이 자원을 수정할 수 없습니다. 그러나 텍스트 기반 리소스가 많은 프로젝트의 경우에도 결과 어셈블리는 다소 작고 재배포하기 쉽습니다. 단일 파일 시스템에 위치한 스크립트 파일이됩니다. 이론적으로 어셈블리의 변경된 부분 (따라서 작은 업데이트)을 대체 할 수 있어야하지만 기존의 diff/merge 도구가 있는지는 잘 알지 못합니다.
  • 생성 된 DLL은 더 커질 것이고 결국에는 상당히 클 것입니다. 그런 다음 다시 임베디드 리소스가없는 린 어셈블리를 만든 다음 리소스를 별도로 디렉터리에 배포 한 경우 배포 할 전체 프로그램 크기가 동일합니다.

다른 고려 사항이 있습니까? 보다 일반적으로 프로젝트 리소스가 수정 된 경우 필요한 어셈블리 재 컴파일 이외에 포함 리소스로 포함되어서는 안되는 이유가 무엇입니까?

답변

4

복잡한 환경의 관점에서 통찰력을 줄 수 있습니다.

응용 프로그램이 조직의 중요성이나 중요성에 가깝고 인시던트 응답 시간을 최소화해야하는 경우 모든 스크립트를 별도의 파일로 유지하는 것이 좋습니다. 어셈블리를 다시 컴파일하는 것이 매우 쉽지만 구조화 된 회사 환경에서 핫픽스 릴리스는 대개 응급 상황에서도 뛰어 넘기 위해 많은 수의 후프를 필요로합니다. 게다가 지원자는 스크립트 파일을 변경하기에 충분해야하는 반면 dev에 사람이 필요합니다.

다른 고려 사항은 리소스에서 스트리밍 될 때 (적어도 일부) 스크립트가 제대로 실행되지 않을 수 있다는 것입니다. 중간 또는 결과 데이터를 쓸 장소가 필요할 수 있습니다. 스크립트들 사이에 어떤 의존성이있을 수도있다.)

다른 하나의 요인은 프로젝트 원천에 대한 액세스 권한이 없을 때 리소스를 별도로 확보하면 빠른 검토가 가능하다는 것입니다. 이렇게하면 응용 프로그램에 투명성이 추가됩니다 (원할 수도 있음). 또한 문제가 발생했을 때 응용 프로그램에 어떤 현상이 발생했는지 판단하고 잠재적으로 빠른 변경/수정을 할 수있게 도와주는 것이 유용 할 수 있습니다 (첫 번째 요점과 다소 비슷 함).

일반적으로 귀하의 요구 사항에 따라 다릅니다. 스크립트 (또는 컴파일 할 수없는 다른 리소스)를 자주 변경할 수 있어야하는 경우 별도로 지정하는 것이 훨씬 좋습니다. 파일이 너무 자주 변경되지 않고 깔끔하고 단순하며 컴팩트 한 파일 구조를 원한다면 포함은 좋은 선택입니다.

0

자신의 호스트에서만 사용할 웹 프로젝트 인 경우 임베디드 리소스로 사용하지 않는 것이 더 좋습니다. (한 번만 프로젝트를 설치해야하지만 작은 업데이트는 쉽습니다)

다른 프로젝트에서 재사용 할 수있는 dll을 만들려면 포함 된 리소스를 사용하는 것이 좋습니다. 업데이트를하면 각 프로젝트에서 하나의 dll 만 업데이트 할 수 있습니다.

관련 문제