C : 직렬화 된 데이터를 유형으로 사용

IdeaHat

그래서 저는 흥미로운 디자인 패턴을 만났고 여러분이 그것에 대한 의견이 있는지 알고 싶었습니다.

기본적으로 디자인은 모든 것을 사전 직렬화 된 유형으로 전달합니다. 예를 들어, 반품에 대한 "유형"이 없습니다. 간단한 uint8_t *로 전달됩니다. 버퍼에 무엇이 있는지, 얼마나 큰지, 버퍼의 버전이 무엇인지 등을 "알려주는"정의 된 헤더가 있습니다. 모든 구조를 평평하게하기 때문에 "사전 직렬화"라고 부릅니다.

장점 :

  1. 원하는 내용에 쉽게 쓸 수 있습니다. 파일, IO, 무엇이든.
  2. 임의의 데이터를 저장할 수 있습니다.

단점 : IMHO :

  1. 유형 안전은 악몽이 될 것입니다.
  2. 프로그래머는 코드를 구문 분석해야합니다. 열거 형이 있더라도 사용자는 그 유형이 의미하는 바를 알아야합니다. 유형을 구문 분석하는 함수가 있더라도 프로그래머는 그것이 호출 할 함수임을 알아야합니다.
  3. 버전 지옥 : 코드를 변경하면 오류의 파급 효과가 발생합니다. 모든 곳에서 다르게 구문 분석하기 때문에 코드가 어디에서 작동하는지 또는 어디에서 손상되었는지 알 수 없습니다.
  4. 그것은 바이러스 성입니다. 플랫하기 때문에 외부 데이터 끝에 헤더를 "삽입"할 수 없습니다. "데이터"를 복사하면 호출을 래핑 할 수 있지만 이로 인해 불필요한 복사가 느려질 수 있습니다. 따라서 코드가 필요한 것보다 느리거나이 데이터 구조를 준수합니다.
  5. 사람이 읽을 수 있거나 디버그 할 수 없습니다.

이 디자인 패턴을 전에 본 적이 있습니까? 이 디자인 패턴의 이름이 있습니까? 내가 놓친 것?

브루스 마틴

Honza가 말했듯이 이것은 Legacy Cobol / PL1 에서 정상일 것입니다 ( Cobol / PL1 변환 또는 COBOL 프로그램에 대한 인터페이스 ???).

에서 COBOL디자인 패턴을 만들 것 이해 하지 있는지에 대해, C (바이너리 직렬화 패키지 또는 JSON 등 중 하나가 분별 수 있습니다)하지만.

Cobol 에서는 모든 프로그램이 사용하고 Cobol 카피 북 (파일 지원 또는 Microfocus 데이터 편집기 등 )을 사용하여 데이터를 편집 할 수 있는 Cobol 카피 북 이 있습니다 .


Cobol 에서이 "디자인 패턴"사용하는 이유 :

  • 모듈의 회귀 테스트; 다음과 같은 드라이버 모듈을 작성할 수 있습니다.
    읽기 테스트 데이터 파일 
    동안 많은 데이터 
        통화 모듈의 
        출력 파일에 대한 쓰기 결과 
        읽기 테스트 데이터 파일의 

    당신은 다음 사이 비교 할 수있는 출력 로부터 
     다시 변경 프로그램 받는 변경된 프로그램 .
  • 테스트-때때로 테스트에서 "프로덕션 파일"을 사용할 수 있습니다.

  • 파일은 진행 상황에 대한 추적 또는 스냅 샷을 제공하므로 매우 유용 할 수 있습니다.

  • 간편한 배치 스트림 재구성 :

    • 프로그램을 분할하고 파일을 통해 데이터를 전달합니다. 이를 수행하는 데는 다양한 이유가 있습니다.
      • 프로그램이 커지고 유지하기가 어렵습니다.
      • 데이터 정렬
      • 성능 (DB를 여러 번 누르는 대신 파일 사용)
      • 추출 된 데이터의 새로운 용도

귀하의 단점 은 C에 유효 하지만 Cobol에서는 문제가되지 않습니다.

"디자인 패턴" 을 사용하는 핵심 은 형식 편집 /보기 / 비교할 수 있다는 것입니다. 파일을 편집 /보기 / 비교할 수 없으면 요점이 보이지 않습니다

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

JNI를 사용하여 GPB 직렬화 된 데이터를 Java에서 C ++로 효율적으로 전달

분류에서Dev

PHP로 AJAX 객체의 직렬화 된 데이터 사용

분류에서Dev

C # 직렬화를 사용하여 매우 사용자 지정 형식으로 직렬화하는 방법

분류에서Dev

Avro를 사용한 중첩 된 특정 유형 역 직렬화

분류에서Dev

JSON에서 /에서 중첩 된 파생 개체를 사용하여 C # 데이터 개체 역 직렬화

분류에서Dev

구조화 된 데이터 유형의 프로 시저를 C 라이브러리의 콜백으로 사용 (GTK + 3)

분류에서Dev

YamlDotNEt 및 C #의 사용자 지정 형식 클래스를 사용하여 중첩 된 YAML 역 직렬화

분류에서Dev

protobuf를 사용하여 .Net에서 C ++로 유형 System.Drawing.Rectangle 직렬화

분류에서Dev

객체를 암호화 된 std :: fstream으로 직렬화 (C ++)

분류에서Dev

사용자 정의 필드 데이터를 wp_postmeta에서 올바른 직렬화 된 배열 형식으로 저장

분류에서Dev

이진 직렬화 된 데이터 파일로 목록 상자를 채우는 방법-C # WPF

분류에서Dev

HTTP를 전송으로 사용하여 Avro를 통해 직렬화 된 이진 데이터를 읽는 방법은 무엇입니까?

분류에서Dev

직렬화 된 사용자 세션 데이터 추출

분류에서Dev

직렬화 된 테이블 직렬화 해제 또는 텍스트 행 목록 직사각형 화

분류에서Dev

Python DRF, 직렬화 된 데이터를 변수로 추출

분류에서Dev

JavaScript를 사용하여 직렬화 된 데이터 구문 분석

분류에서Dev

C #에서 int를 키로 사용하는 JSON 역 직렬화

분류에서Dev

JsonSubTypes없이 jackson을 사용하여 인터페이스를 특정 유형으로 역 직렬화

분류에서Dev

C #에서 Newtonsoft를 사용하여 중첩 된 JSON 개체의 역 직렬화

분류에서Dev

Rijndael (C #)로 암호화 된 PHP를 사용하여 데이터 해독

분류에서Dev

Entity Framework 포함 된 관련 엔터티를 사용하여 엔터티를 json으로 직렬화

분류에서Dev

jQuery post ()를 사용하여 직렬화 된 양식 데이터 및 기타 데이터 보내기

분류에서Dev

OWL API를 사용하여 Turtle에서 직렬화 된 온톨로지로드

분류에서Dev

사용자 지정 데이터 형식 VB.net 직렬화

분류에서Dev

연관된 레코드를 사용하여 JSON 레일 모델로 직렬화

분류에서Dev

.NET DataContractJsonSerializer serializer를 사용하여 사전으로 JSON 직렬화 / 역 직렬화

분류에서Dev

.NET DataContractJsonSerializer serializer를 사용하여 사전으로 JSON 직렬화 / 역 직렬화

분류에서Dev

Google 드라이브를 사용하여 앱 데이터를 구조화 된 형식으로 저장-Dropbox Datastore API와 유사

분류에서Dev

JSON.Net-클래스 유형이 값 대신 유형 이름으로 직렬화 된 속성

Related 관련 기사

  1. 1

    JNI를 사용하여 GPB 직렬화 된 데이터를 Java에서 C ++로 효율적으로 전달

  2. 2

    PHP로 AJAX 객체의 직렬화 된 데이터 사용

  3. 3

    C # 직렬화를 사용하여 매우 사용자 지정 형식으로 직렬화하는 방법

  4. 4

    Avro를 사용한 중첩 된 특정 유형 역 직렬화

  5. 5

    JSON에서 /에서 중첩 된 파생 개체를 사용하여 C # 데이터 개체 역 직렬화

  6. 6

    구조화 된 데이터 유형의 프로 시저를 C 라이브러리의 콜백으로 사용 (GTK + 3)

  7. 7

    YamlDotNEt 및 C #의 사용자 지정 형식 클래스를 사용하여 중첩 된 YAML 역 직렬화

  8. 8

    protobuf를 사용하여 .Net에서 C ++로 유형 System.Drawing.Rectangle 직렬화

  9. 9

    객체를 암호화 된 std :: fstream으로 직렬화 (C ++)

  10. 10

    사용자 정의 필드 데이터를 wp_postmeta에서 올바른 직렬화 된 배열 형식으로 저장

  11. 11

    이진 직렬화 된 데이터 파일로 목록 상자를 채우는 방법-C # WPF

  12. 12

    HTTP를 전송으로 사용하여 Avro를 통해 직렬화 된 이진 데이터를 읽는 방법은 무엇입니까?

  13. 13

    직렬화 된 사용자 세션 데이터 추출

  14. 14

    직렬화 된 테이블 직렬화 해제 또는 텍스트 행 목록 직사각형 화

  15. 15

    Python DRF, 직렬화 된 데이터를 변수로 추출

  16. 16

    JavaScript를 사용하여 직렬화 된 데이터 구문 분석

  17. 17

    C #에서 int를 키로 사용하는 JSON 역 직렬화

  18. 18

    JsonSubTypes없이 jackson을 사용하여 인터페이스를 특정 유형으로 역 직렬화

  19. 19

    C #에서 Newtonsoft를 사용하여 중첩 된 JSON 개체의 역 직렬화

  20. 20

    Rijndael (C #)로 암호화 된 PHP를 사용하여 데이터 해독

  21. 21

    Entity Framework 포함 된 관련 엔터티를 사용하여 엔터티를 json으로 직렬화

  22. 22

    jQuery post ()를 사용하여 직렬화 된 양식 데이터 및 기타 데이터 보내기

  23. 23

    OWL API를 사용하여 Turtle에서 직렬화 된 온톨로지로드

  24. 24

    사용자 지정 데이터 형식 VB.net 직렬화

  25. 25

    연관된 레코드를 사용하여 JSON 레일 모델로 직렬화

  26. 26

    .NET DataContractJsonSerializer serializer를 사용하여 사전으로 JSON 직렬화 / 역 직렬화

  27. 27

    .NET DataContractJsonSerializer serializer를 사용하여 사전으로 JSON 직렬화 / 역 직렬화

  28. 28

    Google 드라이브를 사용하여 앱 데이터를 구조화 된 형식으로 저장-Dropbox Datastore API와 유사

  29. 29

    JSON.Net-클래스 유형이 값 대신 유형 이름으로 직렬화 된 속성

뜨겁다태그

보관