직렬화 형식 - 바이너리 및 JSON 직렬화
네트워크를 통해 전송되는 캐시 데이터는 직렬화되어야 합니다. 직렬화 프로세스는 기존 개체를 순회하여 데이터를 추출하고 이를 직렬화된 데이터로 변환합니다. 그런 다음 데이터가 네트워크를 통해 전송되고 역직렬화 프로세스에서 직렬화된 데이터를 읽습니다. 직렬화/역직렬화의 전체 프로세스에는 시간, 메모리, 성능 등과 같은 많은 요소가 필요합니다. 직렬화 형식을 선택할 때 이러한 요소를 염두에 두어야 합니다.
주의 사항
이 기능은 다음에서도 사용할 수 있습니다. NCache Professional.
에서 제공하는 직렬화 형식에는 두 가지 유형이 있습니다. NCache:
- 이진 직렬화
- JSON 직렬화
주의 사항
ASP.NET 5.0 이상을 사용하는 경우 JSON 직렬화를 사용하는 것이 좋습니다. 자세한 내용은 클릭 여기에서 지금 확인해 보세요..
이진 직렬화
바이너리 형식에서는 사용자 개체(예: 제품 개체)가 클라이언트 쪽에서 직렬화되어 동일한 형식으로 서버 측에 저장됩니다. 서버에서 항목이 요청될 때마다 클라이언트는 항목의 바이너리 형식을 받은 다음 로컬에서 Product 개체로 역직렬화합니다. 또한 직렬화/역직렬화는 클라이언트 측에서만 발생하며 데이터를 가져오거나 추가하는 동안 한 번만 발생합니다. 가져오는 동안 역직렬화되고 추가하는 동안 직렬화됩니다. 이렇게 하면 직렬화/역직렬화 비용이 절감됩니다. 이는 특히 크기가 큰 데이터를 캐시에서 추가하거나 가져오는 경우 눈에 띄게 나타납니다.
대부분의 처리가 클라이언트 측에서 이루어지고 수행되는 작업이 캐시에서 추가, 업데이트, 가져오기 및 제거와 같은 경우 바이너리 형식이 유용합니다. 예를 들어 직렬화된 Product 개체를 캐시에서 가져와 해당 콘텐츠를 표시합니다. 바이너리 형식을 사용하면 항목이 클라이언트에 도달한 후에만 역직렬화하면 되므로 처리 비용이 최소화됩니다. 개체 형식이 사용되는 경우 서버는 제품 개체를 직렬화하고 이를 클라이언트에 보낸 다음 역직렬화합니다. 이는 전반적인 오버헤드와 직렬화 및 역직렬화 비용을 증가시킵니다.
마찬가지로 바이너리 형식을 사용하여 캐시에 개체를 추가하는 경우 해당 개체는 네트워크를 통해 전송되기 전에 직렬화되어 그대로 저장됩니다.
JSON 직렬화
주의 사항
이 기능은 NCache Enterprise 와 전문 서비스.
JSON 데이터를 저장하고 교환하기 위한 텍스트 기반 구문입니다. 기계가 구문 분석하고 사용자가 이해하기가 훨씬 쉬운 형식입니다. JSON 직렬화를 사용하면 개체는 직렬화 시 해당 JSON으로 변환된 다음 역직렬화 시 사용자 지정 개체로 다시 변환됩니다.
.NET을 고려하십시오 프로덕트 제품 데이터를 포함하는 클래스입니다. 여기에는 다양한 속성이 포함되어 있습니다. 예: 상품명, ProductID및 제품만료 등
Product product = new Product();
product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Sizes = new string[] { "Small" };
이 데이터는 다음 JSON 문자열로 직렬화됩니다.
{
"Name": "Apple",
"Expiry": "2008-12-28T00:00:00",
"Sizes":
[
"Small"
]
}
사용된 시리얼라이저는 뉴튼소프트 타사 직렬 변환기. 이는 데이터를 간결하고 편리하게 직렬화하는 데 선호되는 접근 방식일 수 있습니다. JSON 직렬화는 다음과 같은 이유로 바이너리 직렬화보다 선호될 수 있습니다.
메모리 효율성: 메모리는 대규모 데이터 세트를 사용할 때 염두에 두어야 할 주요 매개변수 중 하나입니다. 더 큰 메모리를 소비하면 다른 성능 측정에 영향을 미칩니다. JSON 직렬화는 객체를 저장하는 데 더 적은 메모리에 영향을 미칩니다. 전체 데이터 세트는 JSON으로 직렬화되어 크기가 훨씬 작아 메모리 소비가 줄어들어 네트워크 통신이 향상됩니다.
이식성 : JSON 직렬화는 다양한 기술의 데이터를 동일한 표준으로 쉽게 직렬화할 수 있으므로 더 높은 이식성을 제공합니다. JSON 직렬 변환기는 모든 유형의 데이터를 직렬화합니다. 예를 들어 사용자가 Java 클래스를 사용하는 경우 JSON 직렬 변환기는 데이터를 문자열 형식으로 직렬화하고 사용자가 정의한 유형으로 역직렬화합니다. 이 수준의 이식성은 바이너리 직렬화에 의해 제공되지 않습니다.
코드 변경 없음: JSON 형식에 따른 직렬화는 완전히 자동화되어 있으므로, 자체 로직에 따라 코드 변경을 요구하지 않는 한 사용자가 코드 변경을 요구하지 않습니다.
직렬화할 수 없는 속성: 또한 클래스에서 "JsonIgnore"라는 메서드를 사용하여 선택 속성을 직렬화하고 선택한 속성을 직렬화되지 않은 상태로 유지할 수 있는 옵션도 제공됩니다. 이는 직렬 변환기가 데이터를 직렬화하고 나머지를 직렬화하는 동안 이러한 속성을 무시한다는 것을 의미합니다. 이는 사용자 정의 클래스의 속성을 통해서만 수행할 수 있습니다. 다음을 참조하세요. 뉴튼소프트 자세한 내용은 문서를 참조하세요. 예를 들어, 사용자가 속성을 유지하려는 경우 비밀번호 직렬화되지 않은 것으로,
JsonIgnore
직렬화 불가능으로 표시됩니다.
using Newtonsoft.Json;
[JsonIgnore]
public String Password()
{
get;
set;
}
다음은 직렬화할 수 없는 표시 속성이 있는 사용자 정의 클래스의 예입니다. 비밀번호. 직렬화 후 직렬화된 JSON 문자열에는 직렬화되지 않은 속성의 값이 포함되지 않습니다.
Account account = new Account
{
FullName = "Joe User",
EmailAddress = "joe@example.com",
Password = "VHdlZXQgJ1F1aWNrc2lsdmVyJyB0byBASmFtZXNOSw=="
};
위의 데이터는 다음 JSON 문자열로 직렬화됩니다.
{
"FullName":"Joe User",
"EmailAddress":"joe@example.com"
}
위의 요소를 염두에 두고 JSON 직렬화를 사용하면 더 높은 수준의 성능을 얻을 수 있습니다. 그러나 더 높은 수준의 정확성을 얻으려면 바이너리 직렬화 데이터가 더 정확하게 역직렬화되므로 JSON 직렬화 대신 바이너리 직렬화를 사용하십시오.