2008-09-17 3 views
1

나는 Service Factory을 시험해 보았으며 긴 파일 이름과 관련하여 몇 가지 문제가 발생했습니다. Vista/XP의 한계를 뛰어 넘었습니다. 문제는 모델 서비스 팩토리에서 코드를 생성 할 때 모든 것이 지정된 네임 스페이스로 시작한다는 것입니다. 폴더 구조를 엄청나게 만듭니다.서비스 팩토리 : 매우 긴 경로/파일 이름 문제

C로 시작하는 예를 들면 : 작업 \ sftest \ MyWebService를

나는 데이터 계약 및 서비스 인터페이스의 이름을 적당한 길이로 각 모델을 만들 \. 저도 같은 접두사

 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.ServiceImplementation\MyCompany.SFTest.MyWebService.ServiceImplementation.proj 

이를 가진 프로젝트 파일을 나는 각 폴더에서

 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Business Logic 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Resource Access 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.DataContracts 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.FaultContracts 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.MessageContracts 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.ServiceContracts 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.ServiceImplementation 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Tests 

으로 끝낼 코드입니다 생성 한 후

MyCompany.SFTest.MyWebservice

로 네임 스페이스를 설정 창은 특정 길이를 초과하는 파일 이름을 수용 할 수 없기 때문에 제조법을 폭파시킵니다.

각 폴더 이름에 명시 적으로 네임 스페이스를 포함해야합니까? 분명히 어떤 지점에서 서비스를 다른 위치로 갈 수도 있지만 위와 같은 이유 때문에 서비스가 불가능할 수도 있습니다. 해결 방법이 있습니까?

답변

1

서비스 팩토리를 잘 모르겠습니다. 도움이 될지 모르겠습니다. 어쨌든 : MSDN의 Naming a File or Directory 문서가 도움이 될 수 있습니다.

Windows API의 경로 길이는 최대 (MAX_PATH = 260)입니다. 더 긴 경로 이름을 사용하려면 경로 앞에 "\\? \"접두어를 붙이면 유니 코드 버전의 API를 사용해야합니다. 이자형. 그 표기법을 허용

"\\?\C:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.ServiceImplementation\MyCompany.SFTest.MyWebService.ServiceImplementation.proj"

대신

"C:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.ServiceImplementation\MyCompany.SFTest.MyWebService.ServiceImplementation.proj"

합니까 서비스 공장의 사용?

+1

감사합니다. 서비스 팩터 리는 사용자 상호 작용없이 코드를 생성하므로 솔루션을 생성하는 위치와 네임 스페이스를 지정할 때가 아닌 다른 디렉토리 구조를 조작 할 방법이 없습니다. 이런 종류의 문제없이 내 네임 스페이스를 사용할 수 있기를 원합니다. – Xerx

1

우리는 정확히이 문제가 있었고 서비스 팩토리를 일반 라이브러리 (WCF 항목으로 마크 업 됨) 주위의 매우 얇은 래퍼로 만들었습니다. 이것은 우리에게 평범한 깊은 프로젝트 (공장)를 주었고, 그 다음에는 (인터페이스와 로직을 추출하지 않고 무엇을 추출하지 않고) 놀랍도록 깊은 래퍼 팩토리를 제공했습니다.

우리는 여전히 몇 가지 문제가 있지만 - 주로 클라이언트 측에서 - 우리 서버는 대부분 문제가 없습니다.

관련 문제