Bagikan melalui


Mengakses data lokal dan jarak jauh di aplikasi ClickOnce

Sebagian besar aplikasi mengonsumsi atau menghasilkan data. ClickOnce memberi Anda berbagai opsi untuk membaca dan menulis data, baik secara lokal maupun jarak jauh.

Data Lokal

Dengan ClickOnce, Anda dapat memuat dan menyimpan data secara lokal menggunakan salah satu metode berikut:

  • ClickOnce Data Directory

  • Penyimpanan Terisolasi

  • File Lokal Lainnya

Direktori data ClickOnce

Setiap aplikasi ClickOnce yang diinstal di komputer lokal memiliki direktori data, disimpan di folder Dokumen dan Pengaturan pengguna. Setiap file yang disertakan dalam aplikasi ClickOnce dan ditandai sebagai file "data" disalin ke direktori ini saat aplikasi diinstal. File data dapat berupa jenis file apa pun, yang paling sering digunakan adalah file teks, XML, dan database seperti file .mdb Microsoft Access.

Direktori data ditujukan untuk data yang dikelola aplikasi, yaitu data yang disimpan dan dikelola aplikasi secara eksplisit. Semua file statis dan nondependensi yang tidak ditandai sebagai "data" dalam manifes aplikasi akan berada di Direktori Aplikasi. Direktori ini adalah tempat file dan assembly executable (.exe) aplikasi berada.

Catatan

Ketika instalan aplikasi ClickOnce dihapus, Direktori Data ClickOnce juga dihapus. Jangan pernah menggunakan Direktori Data untuk menyimpan data yang dikelola pengguna akhir, seperti dokumen.

Menandai file data dalam distribusi ClickOnce

Untuk meletakkan file yang ada di dalam Direktori Data, Anda harus menandai file yang ada sebagai file data dalam file manifes aplikasi ClickOnce Anda. Untuk informasi selengkapnya, lihat Cara: Menyertakan file data dalam aplikasi ClickOnce.

Membaca dari dan menulis ke direktori data

Membaca dari Direktori Data mengharuskan aplikasi ClickOnce Anda meminta izin Baca; demikian pula, menulis ke direktori memerlukan izin Tulis. Aplikasi Anda akan secara otomatis memiliki izin ini jika dikonfigurasi untuk dijalankan dengan Kepercayaan Penuh. Untuk informasi selengkapnya tentang meningkatkan izin untuk aplikasi Anda menggunakan Elevasi Izin atau Penyebaran Aplikasi Tepercaya, lihat Mengamankan aplikasi ClickOnce.

Catatan

Jika organisasi Anda tidak menggunakan Penyebaran Aplikasi Tepercaya dan telah menonaktifkan Elevasi Izin, menegaskan izin akan gagal.

Setelah aplikasi Anda memiliki izin ini, aplikasi dapat mengakses Direktori Data menggunakan panggilan metode pada kelas di dalam System.IO. Anda dapat memperoleh jalur Direktori Data di dalam aplikasi ClickOnce Formulir Windows menggunakan properti DataDirectory yang ditentukan di properti CurrentDeployment dari ApplicationDeployment. Ini adalah cara yang paling praktis dan direkomendasikan untuk mengakses data Anda. Contoh kode berikut menunjukkan cara melakukan ini untuk file teks bernama CSV.txt yang telah Anda sertakan di dalam penyebaran sebagai file data.

Catatan

Kelas ApplicationDeployment dan API di System.Deployment.Application namespace tidak didukung dalam .NET Core dan .NET 5 dan versi yang lebih baru. Di .NET 7, metode baru untuk mengakses properti penyebaran aplikasi didukung. Untuk informasi selengkapnya, lihat Properti penyebaran Access ClickOnce di .NET. .NET 7 tidak mendukung metode ApplicationDeployment yang setara.

if (ApplicationDeployment.IsNetworkDeployed)
{
    try
    {
        using (StreamReader sr = new StreamReader(ApplicationDeployment.CurrentDeployment.DataDirectory + @"\CSV.txt"))
        {
            MessageBox.Show(sr.ReadToEnd());
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("Could not read file. Error message: " + ex.Message);
    }
}

Untuk informasi selengkapnya tentang menandai file dalam penyebaran Anda sebagai file data, lihat Cara: Menyertakan File Data dalam Aplikasi ClickOnce.

Anda juga dapat memperoleh jalur direktori data menggunakan variabel yang relevan pada kelas Application, seperti LocalUserAppDataPath.

Memanipulasi jenis file lainnya mungkin memerlukan izin tambahan. Misalnya, jika Anda ingin menggunakan file database Access (.mdb), aplikasi Anda harus menegaskan kepercayaan penuh untuk menggunakan kelas <xref:System.Data> yang relevan.

Direktori data dan versi aplikasi

Setiap versi aplikasi memiliki Direktori Data tersendiri, yang diisolasi dari versi lainnya. ClickOnce membuat direktori ini terlepas dari apakah ada file data yang disertakan dalam penyebaran sehingga aplikasi memiliki lokasi untuk membuat file data baru pada durasi. Saat versi baru aplikasi diinstal, ClickOnce akan menyalin semua file data yang ada dari Direktori Data versi sebelumnya ke Direktori Data versi baru—apakah file tersebut disertakan dalam penyebaran asli ataupun dibuat oleh aplikasi.

ClickOnce akan menggantikan versi file yang lebih lama dengan versi server yang lebih baru jika file data memiliki nilai hash yang berbeda dalam versi lama aplikasi dibandingkan dengan versi baru. Selain itu, jika versi aplikasi yang lebih lama membuat file baru yang memiliki nama yang sama dengan file yang disertakan dalam penyebaran versi baru, ClickOnce akan menimpa file versi lama dengan file baru tersebut. Dalam kedua kasus, file lama akan disertakan dalam subdirektori di dalam direktori data bernama .pre, sehingga aplikasi masih dapat mengakses data lama untuk tujuan migrasi.

Jika Anda memerlukan migrasi data yang lebih halus, Anda dapat menggunakan API Penyebaran ClickOnce untuk melakukan migrasi kustom dari Direktori Data lama ke Direktori Data baru. Anda harus menguji unduhan yang tersedia menggunakan IsFirstRun, mengunduh pembaruan menggunakan Update atau UpdateAsync, dan melakukan setiap pekerjaan migrasi data kustom sendiri setelah pembaruan selesai.

Penyimpanan terisolasi

Penyimpanan Terisolasi menyediakan API untuk membuat dan mengakses file menggunakan API sederhana. Lokasi aktual dari file yang disimpan disembunyikan dari pengembang maupun pengguna.

Penyimpanan Terisolasi berfungsi di semua versi .NET Framework. Penyimpanan Terisolasi juga berfungsi di aplikasi tepercaya parsial tanpa perlu pemberian izin tambahan. Anda harus menggunakan Penyimpanan Terisolasi jika aplikasi Anda harus berjalan dalam kepercayaan parsial, tetapi harus mempertahankan data khusus aplikasi.

Untuk informasi selengkapnya, lihat Penyimpanan Terisolasi.

File lokal lainnya

Jika aplikasi Anda harus bekerja dengan atau menyimpan data pengguna akhir seperti laporan, gambar, musik, dan sebagainya, aplikasi Anda akan memerlukan FileIOPermission untuk membaca dan menulis data ke sistem file lokal.

Data jarak jauh

Pada titik tertentu, aplikasi Anda kemungkinan harus mengambil informasi dari situs Web jarak jauh, seperti data pelanggan atau informasi pasar. Bagian ini membahas teknik yang paling umum untuk mengambil data jarak jauh.

Mengakses file dengan HTTP

Anda dapat mengakses data dari server Web menggunakan kelas WebClient atau HttpWebRequest di namespace layanan System.Net. Data dapat berupa file statis atau aplikasi ASP.NET yang mengembalikan teks mentah atau data XML. Jika data Anda berupa format XML, cara tercepat untuk mengambil data adalah menggunakan kelas XmlDocument, dengan metode Load yang mengambil URL sebagai argumen. Misalnya, lihat Membaca dokumen XML ke dalam DOM.

Anda harus mempertimbangkan keamanan ketika aplikasi Anda mengakses data jarak jauh melalui HTTP. Secara default, akses aplikasi ClickOnce Anda ke sumber daya jaringan mungkin dibatasi, tergantung pada bagaimana aplikasi Anda disebarkan. Pembatasan ini diterapkan untuk mencegah program berbahaya mendapatkan akses ke data jarak jauh istimewa atau mencegah penggunaan komputer pengguna untuk menyerang komputer lain di jaringan.

Tabel berikut mencantumkan strategi penyebaran yang dapat Anda gunakan beserta izin Web default-nya.

Jenis penyebaran Izin jaringan default
Penginstalan Web Hanya dapat mengakses server Web tempat aplikasi diinstal
Penginstalan Berbagi File Tidak dapat mengakses server Web apa pun
Penginstalan CD-ROM Dapat mengakses server Web apa pun

Jika aplikasi ClickOnce Anda tidak dapat mengakses server Web karena pembatasan keamanan, aplikasi harus menegaskan WebPermission untuk situs Web tersebut. Untuk informasi selengkapnya tentang meningkatkan izin keamanan untuk aplikasi ClickOnce, lihat Mengamankan aplikasi ClickOnce.

Mengakses data melalui layanan Web XML

Jika Anda mengekspos data sebagai layanan Web XML, Anda dapat mengakses data menggunakan proksi layanan Web XML. Proksi adalah kelas .NET Framework yang Anda buat menggunakan salah satu Visual Studio. Operasi layanan Web XML—seperti mengambil pelanggan, melakukan pemesanan, dan sebagainya—diekspos sebagai metode pada proksi. Ini membuat layanan Web jauh lebih mudah digunakan dibandingkan teks mentah atau file XML.

Jika layanan Web XML Anda beroperasi melalui HTTP, layanan akan terikat oleh pembatasan keamanan yang sama dengan kelas WebClient dan HttpWebRequest.

Mengakses database secara langsung

Anda dapat menggunakan kelas di dalam namespace layanan System.Data untuk membuat koneksi langsung dengan server database seperti SQL Server di jaringan Anda, tetapi Anda harus mempertangungjawabkan masalah keamanan. Tidak seperti permintaan HTTP, permintaan koneksi database selalu dilarang secara default di bawah kepercayaan parsial; Anda hanya akan memiliki izin tersebut secara default jika menginstal aplikasi ClickOnce dari CD-ROM. Ini memberikan aplikasi Anda kepercayaan penuh. Untuk mengaktifkan akses ke database SQL Server tertentu, aplikasi Anda harus meminta SqlClientPermission ke database tersebut; untuk mengaktifkan akses ke database selain SQL Server, aplikasi harus meminta OleDbPermission.

Sering kali, Anda tidak perlu mengakses database secara langsung, tetapi akan mengaksesnya melalui aplikasi server Web yang tertulis dalam ASP.NET atau layanan Web XML sebagai gantinya. Mengakses database dengan cara ini sering kali merupakan metode terbaik jika aplikasi ClickOnce Anda disebarkan dari server Web. Anda dapat mengakses server dalam kepercayaan parsial tanpa meningkatkan izin aplikasi Anda.