2010-08-12 4 views
0

저는 건축 및 건설 업계에서 일하지만 현재 소프트웨어 개발에 많은 시간을 투자하고 있습니다. 내 소프트웨어 프로젝트를 Subversion 저장소로 옮긴 후이 업계에서 설계 및 시공 문서에 대한 유사한 시스템이 얼마나 필요한지 깨달았습니다. 저는 1 년 반 동안 소프트웨어를 개발해 왔기 때문에 이런 프로젝트를 수행 할 수있는 자격이 없습니다. 그러나 나는 학습 경험을 위해 그 무엇도 시도하지 않는다면 여전히 시도에 관심이 있습니다.특수 버전 제어 시스템 개발에 대한 지침 찾기

SubVersion과 비슷한 HTTP를 통해 실행되는 서버 클라이언트 시스템을 개발하고 싶지만 시스템이 아키텍처 설계 정보를 저장하는 원시 파일을 관리하는 것이 아닙니다. Industry Foundation Classes라는이 유형의 데이터에 대한 개방형 스키마 사양이 이미 존재합니다. 그러나 현재이 형식의 정보는 항상 개별 파일에 저장되고 STEP 또는 XML로 인코딩되며 간단한 FTP 서버를 통해 공유됩니다.

대신 데이터의 하위 집합을 쉽게 쿼리하거나 업데이트 할 수 있도록이 정보를 데이터베이스에 저장하는 방법을 개발하고 싶습니다. 또한, 중앙 데이터베이스가 델타로 데이터 변경을 추적하는 서브 버전과 유사한 버전 지정 기능을 포함하고 싶습니다. 또한 여러 옵션으로 분기 할 수도 있습니다.

SVN을 사용하고 싶지 않습니다. 시스템에 포함 된 데이터를 인식하고 싶기 때문입니다. 예를 들어 사용자는 서버에서 모든 벽을 쿼리 할 수 ​​있기를 원할 수 있습니다. 그러나 서버가 작동하려면 벽이 포함될 수 있음을 이해해야합니다.

분명히 내가 이것에 대해 어떻게해야하는지에 관해 물어볼 수있는 많은 질문이 있습니다. 하지만 먼저 각 레이어가 어떻게 작동하고 어떤 기술을 사용하는지에 대한 큰 그림을 파악하려고합니다.

지금까지 주로 C# .Net의 독립 실행 형 응용 프로그램 만 개발했습니다. 그래서 저는 어떤 종류의 네트워크/서버/클라이언트 유형 개발을 처음 접했습니다. SQL Server 데이터베이스에 연결된 .NET 웹 서비스와 같은 응용 프로그램을 개발하는 것이 합리적입니까? 따라서 서버에 대한 요청은 SOAP을 통해 이루어지며 데이터는 XML로 반환됩니다. SVN은 비슷한 일을하지만 WebDAV를 통해 정확합니까? 아래 다이어그램을 참조하십시오.

alt text

내가 반드시 마이크로 소프트/C#을 /. NET 환경에 머물고에 붙어 있지 않다 그러나 나는 이미 및 Visual Studio 및 .NET 꽤 편안 해요 주어진 가장 쉬운 옵션처럼 보인다 WebService는 자동으로 SOAP 기능을 생성합니다. RCP 인터페이스가 아닌 객체 모델에만 집중할 수있는 .NET 웹 서비스에 해당하는 Java가 있습니까? XML-RCP, JSON 또는 REST와 같은 SOAP 이외의 RCP를 사용하면 상당한 이점이 있습니까?

경험이 많은 개발자의 의견을 듣고 싶습니다. 어떻게 이와 같은 프로젝트에 접근 할 것인가?

+1

IFC에 관한 Wikipedia 기사에서 인용 : "IfcRoot 기반 엔티티가 고유 한 식별자를 가지고 있으며 추가, 수정, 삭제됨 또는 변경 사항 없음으로 표시 될 수있는 프로젝트가 개정 제어를 지원합니다. 이러한 기능으로 여러 IFC 파일을 병합 할 수 있습니다 결정적으로 인간의 개입없이 데이터 무결성을 보장합니다." – rwong

답변

1

매우 큰 물음입니다.

다른 방식으로 살펴 보는 것이 좋습니다. git/svn/hg/etc를 콘텐츠 중립적 인 저장 시스템으로 사용할 수 있습니까? 그리고 콘텐츠에 대해 질의하고 콘텐츠 인식 작업을 수행 할 수있는 보완적인 시스템을 가지고 있습니까? 이렇게하면 모든 문제를 다시 해결할 필요가 없으며 이미 완료되고 검증 된 작업을 계속 수행 할 수 있으며 이미 작성된 도구를 사용하여 '원시'데이터로 작업 할 수 있습니다.

+0

예 확실히 큰 물음에 대해 분명히 알고 있습니다. SVN과 같은 기존 시스템을 사용하여 버전 제어를 수행 한 다음 SVN에 대한 사용자 정의 인터페이스를 작성할 수 있다는 것을 알고 있습니다. 따라서 사용자가 모든 벽을 수정에서 요청하려는 경우 69 시스템은 SVN에서 버전 69를 요청한 다음 벽을 필터링합니다. 문제는 데이터가 어떻게 변하는지를 실제로 이해하지 못하기 때문에 사용자는 어떤 객체 (벽, 문, 창문 등)를 찾을 수 있기를 원할 수 있습니다. 두 개정 사이에서 수정되었습니다. 백그라운드에서 SVN과 같은 기존 시스템을 사용하는 것이 가장 좋은 방법 일 수 있습니까? –

+0

Subversion에 "pre-commit hooks"을 추가하여 새 변경 사항이 커밋 될 때마다 세 번째 -party IFC 도구는이 버전의 모든 엔티티 (벽)에 대한 일반 텍스트 목록과 각 엔티티 (벽)의 세부 정보에 대한 체크섬을 추출하는 데 사용됩니다.이 파일을이 버전에 커밋 될 내용과 함께 커밋하십시오. fo를 확인하려면 이 파일에서 "svn blame"을 실행하면됩니다. – rwong

관련 문제