2011-12-12 3 views
2

카테고리별로 정렬 된 버튼이있는 대시 보드가 포함 된 wpf 앱을 개발 중입니다. 각 버튼은 리소스를 엽니 다. PDF, 비디오 등이 될 수 있습니다. 범주별로 60 개의 과목과 교재가있는 12 개의 카테고리가 있습니다. 그래서 총 720..net 응용 프로그램에서 많은 응용 프로그램 자원을 처리하는 방법은 무엇입니까?

지금 내 설정은 다음과 같습니다 : 각 과목마다 데이터베이스에 관련된 학습 자료의 파일 이름 (SubjectID : 124, 제목 : "SomethingSmart", 자원 : "SmartPDF.pdf")을 저장합니다. . 내 리소스는 범주/폴더별로 하드 드라이브에 저장됩니다. 따라서 주제를로드 할 때 데이터베이스의 파일 이름을 조회하고 해당 카테고리와 연관된 폴더를 추가하고 파일을로드합니다.

이제 뭔가 이상적인 설정이 아니라고합니다.

  • C : \ TeachingMaterials/카테고리 1/pdf1.pdf
  • C : \ TeachingMaterials/카테고리 1/pdf2.pdf 우선 모든 파일은이 같은 하드 코딩 된 경로에 하드 드라이브에 저장되어 있기 때문에
  • C : \ TeachingMaterials/구분 2/pdf1.pdf
  • C : \ TeachingMaterials/구분 2/video2.pdf

둘째, "예, 첫 번째 사본 2백메가바이트을이 그냥 말도 같은 응용 프로그램을 배포 당신의 C : 드라이브에 자원의 - 오, 당신은 ha하지 않습니다. 네가 말하는 관리 권리는 있니? 그런 다음이 너무 나쁘다. "

이 일을 더 우아한 방법이 있나요? 응용 프로그램을 통해 교재를 추가 및 제거의 가능성을 가능한 유지해야하지만.

+0

리소스의 전체 경로를 저장하거나 응용 프로그램에서 제어하는 ​​디렉터리로 복사/이동 할 수 있습니다. '프로그램 데이터'는 일반적으로이 디렉터리에 사용됩니다. 특수 폴더를 참조하십시오. – kenny

답변

0

당신은 당신의 파일을 저장하는 Isolated Storage를 사용할 수 있습니다. 이 앱에 대한 .NET 프레임 워크 지원되는 파일 저장 영역 사용자가 파일을 설치할 수 있습니다 또는

당신이 상대 경로를 사용하고, 설치 디렉토리의 하위 디렉토리에 저장할 수 있습니다

예 :..

또한 자원으로 추가하고 출력 디렉터리에 복사 내장에서 자원 속성을 편집 할 수
  • 자료 \ pdf1.pdf ...
  • \

    • MyWPFApp.exe
    • 자원.

    +0

    파일을 응용 프로그램 파일과 별도로 두는 것이 좋습니다. 이렇게하면 앱을 더 쉽게 유지 관리 할 수 ​​있습니다. – Russell

    +0

    내가 위에서 말했듯이, 아마도 자원의 해결책을 응용 프로그램의 '협업 적 성격'때문에 서버 폴더에 배치해야합니다. (말하자면 :-)) 의견을 보내 주셔서 감사합니다! –

    1

    파일 배포에는 여러 가지 방법이 있습니다.

    먼저 공유 서버 위치에 액세스 할 수있는 인트라넷 응용 프로그램에 배포하는 경우 파일을 공유 경로에 저장할 수 있습니다. 문제의 각 리소스에 대해 데이터베이스에 저장할 수있는 전체 (절대) 경로입니다.

    둘째, 사용자 액세스 가능 폴더 (AppData 또는 이와 유사한)에 데이터를 저장하는 것입니다. 나는 또한 러셀의 대답을 좋아한다.

    다른 방법은 이진 내용으로 데이터베이스 자체에 데이터를 저장하는 것이다. 분명히 이것은 데이터베이스 크기를 상당히 증가시키고 파일은 '사용자 정의'액세스를 위해 쉽게 사용할 수 없지만 다른 사람이 파일을 삭제/이동/이름 변경 한 경우 앱에서 걱정할 필요가 없기 때문에 일반적으로 좋은 것입니다. 신청.

    +0

    첫 번째 제안을 통해 파일을 서버로로드 할 수 있습니다. 이렇게하면 여러 사용자가 응용 프로그램을 통해 자료를 추가/업데이트/삭제할 수 있습니다. 이것은 또한 사람들이 최신 재료를 가질 수 있도록합니다. 마음에 떠오르는 또 다른 사항은 본 자료를 캐싱하는 것입니다. 왜냐하면 파일이 매번 다운로드되기 때문에 네트워크에 막대한 부하가 걸릴 것입니다. 이를 수행하기 위해 .net 환경에서 제공되는 캐싱 메커니즘이 있는지 모릅니다. –

    +0

    캐시를 작성하려면 클라이언트에 로컬로 캐시해야합니다 (서버에있는 경우 전체 문서를 다시 가져와야하므로 최적화 이득이 없으므로). 다른 문제가 발생합니다. 원래 사본과 동기화 (다른 사람이 변경하는 경우) 등입니다.하지만 우리는 문서 캐시 생성이 대개 인트라넷에 대한 노력의 가치가 없다는 것을 발견했습니다. 매우 쉽게 문서 전송의 박동을 걸릴 수 있습니다 ... – veljkoz

    +0

    나는 더 멀리 라인 캐싱을 넣어 줄께. 나는 서버에서 모든 파일을 가지고 어떤 성능을 달성 할 수 있는지를 기다릴 것이다. 조언과 피드백에 감사드립니다 !! –

    관련 문제