Docs Menu
Docs Home
/ /
Archivos del reino

Configurar y abrir un dominio - .NET SDK

Un dominio es un conjunto de objetos relacionados que se ajustan a un esquema predefinido. Los dominios pueden contener más de un tipo de datos, siempre que exista un esquema para cada tipo.

Cada reino almacena datos en un archivo de reino independiente que contiene la codificación binaria de cada objeto del reino. Puedes... sincronizar un reino en múltiples dispositivos y configurar controladores de eventos reactivos que llamen a una función cada vez que se crea, modifica o elimina un objeto en un reino.

Realm almacena una versión codificada en binario de cada objeto y tipo en un reino en un solo .realm archivo. El archivo se encuentra en la ruta que define en el objeto RealmConfiguration al abrir el reino, o en la ruta predeterminada si no especifica una ruta.

El archivo de reino predeterminado se llama default.realm y se encuentra donde el sistema operativo almacena datos específicos de la aplicación.

Tip

Implemente la compactación en su aplicación de producción

Toda aplicación de producción debe implementar ShouldCompactOnLaunch para reducir periódicamente el tamaño del archivo de dominio. Para obtener más información sobre cómo compactar un dominio, consulte: Reducir el tamaño del archivo de dominio- SDK de .NET.

Realm crea archivos adicionales para cada reino:

  • archivos de reino, con el sufijo "reino", pordefault.realm ejemplo: contienen datos de objetos.

  • Archivos de bloqueo, con el sufijo "lock", p. ej.: default.realm.lock registran las versiones de datos de un dominio que se utilizan activamente. Esto evita que el dominio recupere espacio de almacenamiento que aún utiliza una aplicación cliente.

  • archivos de notas, con el sufijo "nota", p. ej.: default.realm.note habilitan notificaciones entre subprocesos y entre procesos.

  • archivos de gestión, con el sufijo "gestión", pordefault.realm.management ejemplo: gestión del estado interno.

Eliminar estos archivos tiene implicaciones importantes. Para obtener más información sobre cómo .realm eliminar o archivos auxiliares, consulte: Eliminar un dominio.

Las siguientes secciones describen cómo abrir un archivo Realm para uso local (sin sincronización). Si te interesa usar sincronizar con tu Realm, consulta Configurar & Abrir un Realm sincronizado - .NET SDK.

Al abrir un dominio local (no sincronizado), pase un objeto RealmConfiguration a GetInstanceAsync() GetInstance()o. El siguiente ejemplo crea un RealmConfiguration objeto con una ruta de archivo local, establece la IsReadOnly propiedad en true y, a continuación, abre un dominio local con esa información de configuración:

var config = new RealmConfiguration(pathToDb + "my.realm")
{
IsReadOnly = true,
};
Realm localRealm;
try
{
localRealm = Realm.GetInstance(config);
}
catch (RealmFileAccessErrorException ex)
{
Console.WriteLine($@"Error creating or opening the
realm file. {ex.Message}");
}

Con un objeto InMemoryConfiguration, es posible crear un realm que se ejecute completamente en memoria (sin que los datos se escriban en el disco). El siguiente ejemplo muestra cómo hacerlo:

var config = new InMemoryConfiguration("some-identifier");
var realm = Realm.GetInstance(config);

Los dominios en memoria podrían seguir usando espacio en disco si la memoria se está agotando, pero todos los archivos creados por un dominio en memoria se eliminarán al cerrarlo. Al crear un dominio en memoria, el identificador debe ser único para todos los dominios, tanto los en memoria como los persistentes.

Importante

Cuando se elimina o se realiza la recolección de basura de un dominio en memoria, los datos se pierden. Para mantener un dominio en memoria activo durante la ejecución de la aplicación, asegúrese de incluir una referencia a él.

La instancia de realm implementa IDisposable para garantizar la liberación de recursos nativos. Debe desechar un objeto de realm inmediatamente después de su uso, especialmente en subprocesos en segundo plano. La forma más sencilla de hacerlo es declarar el objeto de realm con una instrucción using o encapsular el código que interactúa con un realm en una instrucción using (...):

config = new PartitionSyncConfiguration("myPart", user);
using (var realm = Realm.GetInstance(config))
{
var allItems = realm.All<Item>();
}

Si necesita que un objeto de reino se comparta fuera de un solo método, asegúrese de administrar su estado llamando al método Dispose():

realm.Dispose();

Nota

Como regla general, solo debe eliminar el dominio en subprocesos en segundo plano, ya que eliminar un dominio invalida todos los objetos asociados a esa instancia. Si está vinculando los objetos del dominio en el subproceso principal, por ejemplo, no debe llamar a Dispose().

De forma predeterminada, todas las RealmObject clases se almacenan en un dominio. En algunos casos, puede que desee limitar las clases que se almacenan, lo cual puede hacer con la propiedad Schema del RealmConfiguration objeto. El siguiente código muestra cómo especificar dos clases que desea almacenar en el dominio:

var config = new RealmConfiguration()
{
Schema = new Type[]
{
typeof(AClassWorthStoring),
typeof(AnotherClassWorthStoring)
}
};

Volver

Archivos del reino

En esta página