Hey, Yavor on the Realm team here. A reactive database allows you to structure your code so that you "react" to changes in your data layer - you don't have to re-run queries to get updates, because Realm updates all your data objects to point to the newest version of your data. Check out the sample code in your blog post: https://realm.io/news/introducing-realm-xamarin
The core of Realm tracks writes across different threads and processes and that's how we know to update the result objects without rebuilding the query or rebinding the model objects. There is a PR to actually expose this as a high-level notifications API and we'll roll it out in our next Realm Xamarin release: https://github.com/realm/realm-dotnet/pull/502/commits/f4169.... Using that it will be possible to implement INotifyCollectionChanged and IObservable directly on top of Realm.
In addition to the reactive features that Realm offers, it also supports offline synchronization and works with a server component that offers fine grained acces control.
None of the effort in adding C# and Xamarin support distracted anyone from getting the core product to 1.0. We are an entirely separate team hired specifically for this project. If you follow the Java, Swift or Objective-C products you will have seen a steady set of releases in the last year. I can't comment on our closeness to 1.0 shipping.
I'd like to think that the C# team has also contributed by setting a high standard for API usability and ease of use but we're standing on the shoulders of the giants who wrote LINQ and Fody (thanks Simon Cropp).
I played a bit, but there are 2 things that annoys me: the footprint is really huge, for iOS, Realm.dll has 103 MB, so it means my app will instantly have 100MB more!!!.
The second thing(even more important for me) is about the fact that all my storable objects have to be derived from RealmObject, so no POCO support. This is pretty important because I will need to carry Realm dependency everywhere I pass my objects.
Realm itself only adds less than 1 MB extra in your final app :-)
On Xamarin.iOS the Realm static libraries for all the iOS platforms and architectures we support are embedded inside the Realm.dll assembly. During build, Xamarin extracts the static libraries and links the app against them.
We should be more explicit about the size implications to avoid that chocking misunderstanding! We will update our FAQ.
16 comments
[ 3.2 ms ] story [ 27.7 ms ] threadIn addition to the reactive features that Realm offers, it also supports offline synchronization and works with a server component that offers fine grained acces control.
I'd like to think that the C# team has also contributed by setting a high standard for API usability and ease of use but we're standing on the shoulders of the giants who wrote LINQ and Fody (thanks Simon Cropp).
Realm also keeps growing all its other teams and people are welcome to apply https://jobs.lever.co/realm
On Xamarin.iOS the Realm static libraries for all the iOS platforms and architectures we support are embedded inside the Realm.dll assembly. During build, Xamarin extracts the static libraries and links the app against them.
We should be more explicit about the size implications to avoid that chocking misunderstanding! We will update our FAQ.
Re. POCO support: We expect to support that going forward - you can follow the issue here: https://github.com/realm/realm-dotnet/issues/529.
Let us know if you have other questions or concerns! Github issues is a good place to suggest features or ask questions.
Thanks!