장비제어 프로그램시 Recipe 를 어떤 방법으로 저장하시나요??

저는 장비제어를 전문으로 개발하는 개발자 입니다. 기존에는 C++ 빌더를 이용해서 개발을 했으나 올해 부터는 C# 으로 툴을 바꾸고 개발을 하고 있습니다.

장비제어 하신분들은 아시겠지만 장비제어를 위한 Recipe 들이 존재 합니다.
C++로 개발할 때는 ini 파일을 사용하여 저장하고 불러오고 했는데 C#으로 변경하고 나서는 ini 파일을 사용하려고 하니 좀 불편하네요… 그래서 현재는 Newtonsoft json 을 이용하고 있습니다.

그런데 이게 편리한 부분도 있기는 한데 또 나름 불편한 부분도 존재하네요…
예를 들어 항목이 하나 추가가 되었을 경우 기존의 추가된 항목이 없는 파일을 불러오면 에러가 발생한다는 것입니다. ini 파일의 경우 default 값을 지정해 놓으면 항목이 없어도 default 값으로 강제 설정해서 사용할 수 있었는데요…

제어 관련해서 프로그램 하시는 분들은 주로 어떤 라이브러리나 방식으로 사용하시는지요…
궁금합니다.

2 Likes

그냥 예외 처리하면 되는 거 아닌가요?
래퍼 클래스 만들어서 쓰세요
json 보다 yaml 쪽이 땡기네요

2 Likes

장비제어는 아니지만 혹시나 도움될까해서 링크를 달아봅니다.
ini 파일 처리 관련해서 저는 이 소스를 옛날에 받아서 지금껏 사용해오고 있는데 제가 쓰기에는 부족함이 없었습니다.

3 Likes

역직렬화 시에, Json 에는 없는 속성이 POCO 에 있는 경우, Newtonsoft 나 System.Text.Json 이나 동일하게 속성 형식의 기본값으로 설정되는 것으로 알고 있습니다.

반대로, JSON 에는 있는 속성이 POCO 에 없는 경우, 전자는 예외를, 후자는 json 의 속성을 무시하는 게 기본 행태로 알고 있습니다.

닷넷의 많은 프레임워크들이 System.Text.Json 을 바탕으로 다시 쓰여지고 있어서, 가급적 갈아 타시는게…

3 Likes

저도 yaml 에 한표 던집니다.

2 Likes

지금 파일 받아서 테스트 해보니 잘되네요…
오히려 예전 C++ 에서 사용한 것보다 더 편해 보이기도 합니다.

감사합니다.

2 Likes

yamlDotNet 라이브러리 받아서 테스트 해보니 json 의 단점을 많이 보완해 주네요…
감사합니다.

2 Likes

장비 업체에서 일하고 있는데 저도 Newtonsoft json 사용하고 있습니다.
불편하신 부분들은 Attributes 찾아보시면 어느정도 해결 가능 하실 것 같은데
편하신 방법 찾으시길 바랍니다.

1 Like