Windows (WinUI3) uygulamanıza çevrimdışı veri eşitleme ekleme
Not
Bu ürün kullanımdan kaldırıldı. .NET 8 veya üzerini kullanan projelerin yerini alması için bkz. Community Toolkit Datasync kitaplığı.
Bu öğretici, Windows Uygulama SDK'sı (WinUI3) hızlı başlangıç uygulaması için Azure Mobile Apps'in çevrimdışı eşitleme özelliğini kapsar. Çevrimdışı eşitleme, ağ bağlantısı olmadığında bile son kullanıcıların bir mobil uygulamayla (verileri görüntüleme, ekleme veya değiştirme) etkileşim kurmasına olanak tanır. Değişiklikler yerel veritabanında depolanır. Cihaz yeniden çevrimiçi olduktan sonra bu değişiklikler uzak arka uçla eşitlenir.
Bu öğreticiye başlamadan önce, uygun bir arka uç hizmeti oluşturmayı içeren Windows (WinUI3) Hızlı Başlangıç Öğreticisitamamlamış olmanız gerekir. Ayrıca uygulamanıza kimlik doğrulaması eklediğinizi varsayalım. Uygulamanıza kimlik doğrulaması olmadan çevrimdışı özellikler ekleyebilirsiniz.
Uygulamayı çevrimdışı eşitlemeyi destekleyecek şekilde güncelleştirme
Çevrimiçi işlemde, bir IRemoteTable<T>
için okuma ve yazma işlemleri gerçekleştirmeniz gerekir. Çevrimdışı eşitlemeyi kullanırken, bunun yerine bir IOfflineTable<T>
okuma ve yazma işlemi yapılır.
IOfflineTable<T>
bir cihaz içi SQLite veritabanı tarafından yedeklenir ve arka uç veritabanıyla eşitlenir.
Gerekli NuGet paketlerini ekleme
Visual Studio'da:
çözümüne sağ tıklayın ve çözüm için NuGet Paketlerini Yönet... seçin. Yeni sekmedeGözat'ı
seçin ve arama kutusuna Microsoft.Datasync.Client girin. Microsoft.Datasync.Client.SQLiteStore
paketini seçin.Sağ bölmede tüm istemci projelerini (
TodoAppService.NET6
proje hariç) seçin.yükle'yi
seçin. İstendiğinde lisans sözleşmesini kabul edin.
Uzak hizmet istemcisini güncelleştirme
TodoApp.Data
projesini açın ve RemoteTodoService.cs
sınıfını bulun (Services
dizininde). sınıfını aşağıdaki gibi güncelleştirin:
Dosyanın en üstüne aşağıdaki
using
deyimini ekleyin:using Microsoft.Datasync.Client.SQLiteStore;
_table
tanımınıIOfflineTable<TodoItem>
olacak şekilde değiştirin:/// <summary> /// Reference to the table used for datasync operations. /// </summary> private IOfflineTable<TodoItem> _table = null;
Çevrimdışı veritabanı konumunu depolamak için yeni bir özellik ekleyin:
/// <summary> /// The path to the offline database /// </summary> public string OfflineDb { get; set; }
çevrimdışı veritabanını tanımlamak için
InitializeAsync
yöntemini güncelleştirin:// Create the offline store definition var connectionString = new UriBuilder { Scheme = "file", Path = OfflineDb, Query = "?mode=rwc" }.Uri.ToString(); var store = new OfflineSQLiteStore(connectionString); store.DefineTable<TodoItem>(); var options = new DatasyncClientOptions { OfflineStore = store, HttpPipeline = new HttpMessageHandler[] { new LoggingHandler() } }; // Create the datasync client. _client = TokenRequestor == null ? new DatasyncClient(Constants.ServiceUri, options) : new DatasyncClient(Constants.ServiceUri, new GenericAuthenticationProvider(TokenRequestor), options); // Initialize the database await _client.InitializeOfflineStoreAsync(); // Get a reference to the offline table. _table = _client.GetOfflineTable<TodoItem>(); // Set _initialized to true to prevent duplication of locking. _initialized = true;
çevrimdışı eşitleme yapmak için
RefreshItemsAsync()
güncelleştirin:/// <summary> /// Refreshes the TodoItems list manually. /// </summary> /// <returns>A task that completes when the refresh is done.</returns> public async Task RefreshItemsAsync() { await InitializeAsync(); // First, push all the items in the table. await _table.PushItemsAsync(); // Then, pull all the items in the table. await _table.PullItemsAsync(); return; }
Çevrimdışı veritabanı konumunu ayarlama
TodoApp.WinUI
projesinde MainWindow.xaml.cs
dosyasını düzenleyin.
RemoteTodoService
tanımını aşağıdaki gibi değiştirin:
_service = new RemoteTodoService(GetAuthenticationToken)
{
OfflineDb = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\offline.db"
};
_serviceWinUI3WinUI3W = new RemoteTodoService()
{
OfflineDb = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\offline.db"
};
Not
Çevrimdışı veritabanını, Bir Windows sisteminde okuma/yazma/oluşturma izinlerinizin olduğu her yerde depolayabilirsiniz.
Environment.SpecialFolder
sınıfı, uygulamaya göre standart konumlar verir.
Uygulamayı test edin
Uygulama, yenileme simgesine basılana kadar arka uçla eşitlenmez. Test etmek için:
Azure portalınıaçın.
Hızlı başlangıç için kaynakları içeren kaynak grubunu açın.
quickstart
veritabanını seçin.Sorgu düzenleyicisi (önizleme)seçin.
Veritabanı için ayarladığınız kimlik bilgilerini kullanarak SQL Server kimlik doğrulamasıyla oturum açın.
- Gerekirse, IP adresiniz için erişime izin vermeniz istenir. İzin verilenler listesini güncelleştirmek için bağlantıyı seçin, ardından oturum açmayı yeniden denemek için Tamam tuşuna basın.
Sorgu düzenleyicisinde
SELECT * FROM [dbo].[TodoItems]
girin. Ardındançalıştır'ıseçin.
Geçerli TodoItems listesi görüntülenir.
Şimdi uygulamanız aracılığıyla bazı değişiklikler yapın. REFRESH (henüz) BASMAYIN.
Azure portalında SQL deyimini tekrarlayın ve veritabanındaki verilerde hiçbir değişiklik yapılmadığını doğrulayın.
Kuyruktaki verileri arka uç hizmetine göndermek için uygulamanızdaki Yenileme simgesini seçin. Çıkış Hata Ayıklama penceresinde HTTP işlemlerinin gerçekleştiğini görürsünüz.
Azure portalında SQL deyimini tekrarlayın ve değişikliklerinizin uzak hizmete gönderildiğini doğrulayın.
Kaynakları temizleme
Başka bir hızlı başlangıç öğreticisi gerçekleştirmediğiniz sürece, arka uç hizmetiyle ilişkili kaynakları şimdi silebilirsiniz.
- Azure portalınıaçın.
- Hızlı başlangıç kaynaklarını tutan kaynak grubunu seçin.
- kaynak grubunu sil
seçin. - Silme işlemini onaylamak için yönergeleri izleyin.
Azure CLI'yi de kullanabilirsiniz:
az group delete -g quickstart
Kaynakları dağıtmak için Azure Geliştirici CLI'sini kullandıysanız bunun yerine azd down
komutunu kullanabilirsiniz.
Silme işleminin tamamlanması birkaç dakika sürer.
Sonraki adımlar
- NASIL YAPıLıR belgelerini gözden geçirin:
- ASP'. NET6 hizmet belgeleri
- .NET istemci belgeleri