NETCoreSync is a database synchronization framework where each client's local offline database (on each client's multiple devices) can be synchronized on-demand via network into a single centralized database hosted on a server. Data which are stored locally within each device of a single client can all be synchronized after each device have successfully performed the synchronization operation.
NETCoreSync is a database synchronization framework where each client's local offline database (on each client's multiple devices) can be synchronized on-demand via network into a single centralized database hosted on a server. Data which are stored locally within each device of a single client can all be synchronized after each device have successfully performed the synchronization operation.
This framework has two components that needs to be implemented in each of your client and server projects, and this framework has two versions that is determined by how you've built your client projects.
Client | Client Generator | Server |
---|---|---|
If the client is built using Flutter, use the Flutter version of NETCoreSync. This version provides netcoresync_moor
package for the client side, and the NETCorSyncServer
package for the server side. The client's netcoresync_moor
package is built on top of Flutter's Moor library, and the server's NETCoreSyncServer
package is built using Microsoft .NET 5.0 ASP .NET Core Middleware.
The repository folders are
Client + Server |
---|
If the client is built using Xamarin, use the Xamarin version of NETCoreSync. This version provides NETCoreSync
package for both client and server side. The NETCoreSync
package is built using Microsoft .NET Standard 2.0.
The repository folders are
The following lists the characteristics of this framework (applies for both Flutter and Xamarin versions):
Moor
and will use any database that is configured with it, so therefore the client side is not database-agnostic, while the server side framework is still database-agnostic.Moor
's insert/update/delete methods in the client project into this framework ones.Moor
table's primary key is expected to be a TextColumn
type and should contain unique Uuid values (probably generated from the uuid
package).Guid
values (and therefore the table's column type is usually a string
) to ensure its uniqueness.The Flutter version is actually newer than the Xamarin version (the Xamarin version was the initial framework when NETCoreSync was built). Flutter has become one of the hottest framework nowadays to easily build a beautiful, performant, single code-base application that works on ALL platforms (android, ios, web, windows, macos, linux), so naturally, NETCoreSync is adapted to work with Flutter. There are several advantages of the Flutter version:
Moving forward, the Flutter version will be the primary development to have periodical updates and improvements, while the Xamarin version will remain as a backward-compatible solution only.
To read more about the Flutter version of NETCoreSync, visit the netcoresync_moor
here.
To read more about the Xamarin version of NETCoreSync, visit the NETCoreSync
here.