는이

2009-04-21 4 views
0

내가 내 응용 프로그램의 기능을 저장 처리하는 방법에 대해 생각하기 시작 C#을 이미지 처리 응용 프로그램에서 저장 기능을 구현, 약 2 옵션을 생각 :는이

Blur 
Contrast 
Sharpen 
Invert 
... 

:

응용 프로그램은 같은 노드가를 같은 자체 실행 파일 형식으로 저장된 파일을 갖는

Blur name:"Blur01" Amount:5 
... 

2 :

.처럼 저장된 파일을 해석
Blur blur = new Blur(); 
blur.Name = "Blur01" 
blur.Amount = 5 
... 

어느 쪽을 준비해야합니까? 이 문제를 해결할 더 좋은 방법이 있습니까?

저장된 파일을 이전 버전과 호환되도록하고 싶습니다.

편집 : 모든 답장을 보내 주셔서 감사합니다. # 2가 미래의 증거가 될 수없는 이유는 누구나 설명해주십시오. # 1에 대한로드/열기 코드를 변경할 수 있지만 # 2에 대한로드/열기 코드가 없기 때문입니까?

답변

2

나는 첫 번째 옵션과 비슷한 것을 선택할 것입니다.

일반적으로 XML은 독자적인 구문을 만드는 것보다 더 나은 접근 방법이라고 생각합니다. 이는 파일에 대한 독자적인 구문 분석기를 만들려고 시도하는 것보다 호환성/미래 검증의 관점에서 훨씬 좋습니다.

무엇과 같이 약 : 그것은 널리 인정과 사람이 읽을 수이기 때문에 당신은 아마, XML 직렬화를 사용할 수

<Filters> 
    <Blur Name="Blur01" /> 
    <Sharpen Name="Sharpen01" Amount=5 /> 
</Filters> 
0

텍스트 파일로 저장 하시겠습니까?

그렇다면 XML로 저장하는 것이 더 좋지 않을까요?

<Blur> 
<name>Blur01</name> 
<amount>5</amount> 
</Blur> 

그렇지 않으면 나는 질문 : 이것이 당신이 이전 버전과의 호환성 전달을 모두 보장 할 수로

+0

그래, 모든 형태의 ascii 파일. –

1

나도 XML 파일로 갈 것이라고 이해 모르겠습니다.

줄 단위로 파일을 구문 분석하지 않고 속성을 확인하기 때문입니다.

<Blur> 
<name>Blur01</name> 
<amount>5</amount> 
</Blur> 

에 : 그들은 깃털에 대한 보이지 않는 것 같은 응용 프로그램의

<Blur> 
<name>Blur01</name> 
<amount>5</amount> 
<feather>true</feather> 
</Blur> 

이전 버전 여전히 파일을 읽을 수 있습니다에서 흐림 변경하는 경우 예를 들어

, 재산. 설정하지 않은 데이터를 읽지 않고 이전 파일을 읽을 수 있도록 객체를 만들 때 기본값을 설정해야합니다.

업데이트에 대한 응답으로 # 2 미래의 증거를 만들 수 없었습니다. 당신은 스스로 버전 관리를해야 할 것입니다.

1

이유 자체 실행 "형식으로 저장은"일반적으로 나쁜있는 당신의 "블러"기능의 모양에 오늘입니다 갖는

public class Blur 
{ 
    int Amount = 5; 
} 

하지만 미래에 당신이 당신의 흐림 "시스템"을 향상시킬 수 있습니다 대신 같은 것을 가지고 : 더 이상 '양'속성이 있기 때문에 당신이 저장된 파일을 실행할 때

public class Blur 
{ 
    int HorizontalAmount = 5; 
    int VerticalAmount = 10; 
} 

지금을 더 이상 컴파일되지 않습니다. 하위 호환성을 얻으려면 Amount 값을 '해석'해야합니다. 이제 HorizontalAmount = 5 VerticalAmount = 5 (또는 무엇이든)을 의미합니다.

장기적으로 보면 처음부터 해석 된 파일 형식을 사용하는 것이 좋습니다.

+0

고마워요, XML 직렬화를 사용하면 자체 실행 문제와 동일한 문제가 발생합니까? –

+0

자동 응답기를 사용하는 경우 대답은 '일반적으로 예'이지만 주변에는 여러 가지 방법이 있습니다. 당신은 또한 xml serialization을 직접 처리 할 수 ​​있고 대답은 no입니다. – JasonRShaver

관련 문제