SQLite menambah sokongan WASM untuk menggunakan DBMS dalam pelayar web

Pembangun SQLite sedang membangunkan projek untuk melaksanakan keupayaan untuk menyusun perpustakaan ke dalam kod perantaraan WebAssembly, mampu berjalan dalam pelayar web dan sesuai untuk mengatur kerja dengan pangkalan data daripada aplikasi web dalam JavaScript. Kod untuk menyokong WebAssembly telah ditambahkan pada repositori projek utama. Tidak seperti API WebSQL, yang berasaskan SQLite, WASM SQLite diasingkan sepenuhnya daripada penyemak imbas dan tidak menjejaskan keselamatannya (Google memutuskan untuk menghentikan sokongan untuk WebSQL dalam Chrome selepas beberapa kelemahan dalam SQLite boleh dieksploitasi melalui WebSQL untuk menyerang penyemak imbas) .

Matlamat projek adalah untuk menyediakan rangka kerja JavaScript yang berfungsi yang sama dalam fungsi dengan API SQLite. Pembangun web disediakan dengan antara muka berorientasikan objek peringkat tinggi untuk bekerja dengan data dalam gaya sql.js atau Node.js, pengikatan ke atas API C peringkat rendah dan API berdasarkan mekanisme Pekerja Web, yang membolehkan anda untuk mencipta pengendali tak segerak yang dilaksanakan dalam urutan berasingan. Untuk menyembunyikan selok-belok mengatur kerja dengan strim di atas API berasaskan Web Worker, versi antara muka program berdasarkan mekanisme Promise juga sedang dibangunkan.

Data yang disimpan oleh aplikasi web dalam versi WASM SQLite boleh disetempatkan dalam sesi semasa (hilang selepas muat semula halaman) atau disimpan pada bahagian klien (disimpan antara sesi). Untuk storan kekal, bahagian belakang telah disediakan untuk meletakkan data dalam sistem fail tempatan menggunakan OPFS (Origin-Private FileSystem, sambungan kepada API Akses Sistem Fail, kini hanya tersedia dalam penyemak imbas berdasarkan WebKit dan Chromium) dan dalam storan penyemak imbas tempatan berasaskan pada window.localStorage API dan window.sessionStorage. Apabila menggunakan localStorage/sessionStorage, data dicerminkan dalam stor yang sepadan dalam format kunci/nilai, dan apabila menggunakan OPFS, terdapat dua pilihan: mensimulasikan FS maya menggunakan WASMFS dan pelaksanaan berasingan sqlite3_vfs, menawarkan lapisan SQLite VFS berasaskan pada OPFS.

Untuk membina SQLite ke dalam paparan WASM, pengkompil Emscripten digunakan (cukup untuk membina sambungan ext/wasm: β€œ./configure β€”enable-all; make sqlite3.c; cd ext/wasm; make”). Outputnya ialah fail sqlite3.js dan sqlite3.wasm, yang boleh disertakan dalam projek JavaScript anda (contoh HTML dan JavaScript).

Sumber: opennet.ru

Tambah komen