Ingestão de dados unidirecionais - .NET SDK
Novidades na versão 10.17.0.
Você pode usar aingestão de dados para transmitir dados do aplicação cliente para um Atlas App Services habilitado para Flexible Sync .
Talvez você queira sincronizar dados unidirecionalmente em aplicativos IoT, como um sensor meteorológico que envia dados para a nuvem. O arquivo de dados também é útil para gravar outros tipos de dados imutáveis em que você não exige a resolução de conflitos, como criar faturas a partir de uma aplicação de varejo ou registrar evento de aplicação.
A ingestão de dados é otimizada para fornecer melhorias de desempenho para volumes de trabalho pesados somente de inserção no lado do cliente.
Importante
Você não pode query, modificar ou excluir objeto assimétricos de um aplicativo cliente. Como o AsymmetricObject não pode ser modificado pelo cliente, o compilador não permitirá que você adicione uma assinatura a um AsymmetricObject.
O .NET SDK permite que você trabalhe com objetos assimétricos e objetos Realm padrão dentro do mesmo domínio.
Sincronizar dados unidirecionalmente a partir de um aplicativo do cliente
Alterado na versão 11,6,0.
Antes de configurar o arquivo de dados, você precisa entender as seguintes regras:
Os objetos C# que você sincronizará com o Atlas devem implementar a interface IAsymmetricObject ou derivar da classe AsymmetricObject .
A partir do .NET SDK versão 11.6.0 e posterior, um objeto que implementa
IAsymmetricObject
pode conter tipos IEmbeddedObject e links para tiposIRealmObject
. Nas versões 11 do .NET SDK, .5.0 e versões anteriores, um objeto que implementaIAsymmetricObject
só pode conter tipos IEmbeddedObject - ele não oferece suporte a links para tiposIRealmObject
ou outros tiposIAsymmetricObject
.IRealmObject
e tiposIEmbeddedObject
não podem conter tiposIAsymmetricObject
como propriedades.A sincronização unidirecional requer Flexible Sync.
O processo de sincronização de dados assimetricamente é o mesmo da sincronização bidirecional padrão, desde que as regras acima sejam seguidas. O código a seguir mostra a criação de um objeto Asymmetric e a sincronização com o backend. Também mostra query que geram erros.
private partial class Measurement : IAsymmetricObject { [ ] public Guid Id { get; private set; } = Guid.NewGuid(); public double Value { get; set; } public DateTimeOffset Timestamp { get; private set; } = DateTimeOffset.UtcNow; } public void SendMeasurementToRealm() { var measurement = new Measurement { Value = 9.876 }; realm.Write(() => { realm.Add(measurement); }); // The following line will cause a compile time error // _ = realm.All<Measurement>(); // The following line will compile but throw a // Realms.Exceptions.RealmInvalidObjectException at runtime // _ = measurement.Value; }
O Atlas Device Sync gerencia o ciclo de vida desses dados por completo. Ele é mantido no dispositivo até que a sincronização da ingestão de dados seja concluída e, em seguida, é removido do dispositivo.