restricciones relacional reglas referencial modelo mecanismos introduccion integridad hacer ejemplo dominio diseño datos como c# reference protobuf-net binaryformatter

c# - relacional - restricciones de integridad del mr



Integridad de referencia en BinaryFormatter (1)

La existencia de la opción AsReference en Protobuf-net y la palabra que BinaryFormatter es un "serializador de gráficos" me llevan a suponer que BinaryFormatter no mantiene referencias y que hace una copia de cada objeto.

Pero hice algunas pruebas y descubrí que todas las referencias en una sola llamada BinaryFormatter Serialize () o Deserialize () se mantienen incluso para referencias recursivas.

¿Puedo confirmar que BinaryFormatter sí mantiene referencias? ¿Cómo es esto diferente de Protobuf-net? Parece que entiendo "serialización de gráficos" incorrectamente? ¿Qué más debería buscar?

Gracias por adelantado.


tl; dr; versión - BinaryFormatter siempre conserva las referencias.

El hecho de que BinaryFormatter es un "serializador de gráficos" es sinónimo de "conserva las referencias", ya que se requiere para reproducir con precisión un gráfico. La alternativa es un serializador de árbol (que es la mayoría de ellos; XmlSerializer , DataContractSerializer (sin una opción particular habilitada), JavascriptSerializer y protobuf-net sin AsReference son todos basados ​​en árbol). Los serializadores de árbol generalmente no conservan las referencias (a menos que trabajen algunos trucos, es decir, lo que hace DataContractSerializer si habilita el modo de gráfico completo, o protobuf-net lo hace con AsReference ). Los serializadores de árbol (sin vudú habilitado) tienden a explotar en un lío con un modelo recursivo, que los hace fáciles de detectar.