Aplikasi Host Model Windows

Aplikasi Host Model Windows

Pada Windows 10 versi 2004, kami memperkenalkan konsep Aplikasi Host ke Model Aplikasi Windows. Aplikasi yang dihosting terdaftar sebagai aplikasi independen di Windows, tetapi membutuhkan proses host untuk dapat berjalan. Contohnya adalah file skrip yang memerlukan inangnya (mis: Powershell atau Python) untuk diinstal. Dengan sendirinya, itu hanya sebuah file dan tidak memiliki cara apa pun untuk muncul sebagai aplikasi ke Windows.

Dengan Model Aplikasi Host, suatu aplikasi dapat mendeklarasikan dirinya sebagai suatu host, dan kemudian paket dapat mendeklarasikan ketergantungan pada host tersebut dan dikenal sebagai aplikasi yang dihosting. Ketika aplikasi yang di-host diluncurkan, host yang dapat dieksekusi kemudian diluncurkan dengan identitas paket aplikasi yang dihosting alih-alih identitasnya sendiri. Hal ini memungkinkan tuan rumah untuk dapat mengakses konten dari paket aplikasi yang dihosting dan ketika memanggil API, ia melakukannya dengan identitas aplikasi yang dihosting.

Aplikasi Host Model Windows

Latar Belakang

Aplikasi modern didefinisikan untuk Windows melalui paket MSIX yang ditandatangani. Paket memberikan identitas, sehingga diketahui oleh sistem dan berisi semua file, aset, dan informasi pendaftaran untuk aplikasi yang dikandungnya. Banyak aplikasi memiliki skenario di mana mereka ingin meng-host konten dan binari, seperti poin ekstensibilitas, dari aplikasi lain. Ada juga skenario di mana aplikasi host lebih dari mesin runtime yang memuat konten skrip. Selain itu, ada keinginan agar aplikasi yang dihosting ini terlihat dan berperilaku seperti aplikasi terpisah pada sistem – di mana ia memiliki ubin awal, identitas, dan integrasi mendalam dengan fitur Windows seperti BackgroundTasks, Notifications, dan Bagikan. Menggunakan Hosted App Model, aplikasi kios ritel dapat dengan mudah diganti namanya, atau skrip Python atau Powershell sekarang dapat diperlakukan sebagai aplikasi terpisah.

Pengembang berupaya untuk mencapai hal ini hari ini dengan salah satu dari dua cara. Pertama, mereka cukup menggunakan pintasan di desktop untuk meluncurkan host. Tetapi pengalaman ini tidak memiliki integrasi mendalam dengan Windows dan shell, karena ‘app’ adalah host yang dapat dieksekusi bukan skrip. Untuk mendapatkan pengalaman yang lebih terintegrasi, alternatifnya adalah bagi pengembang untuk membuat aplikasi paket yang menyertakan binari host dalam paket. Sementara paket sekarang akan menjadi aplikasi yang terpisah dan memiliki kemampuan untuk integrasi Windows yang mendalam, pendekatan ini tidak efisien karena setiap aplikasi perlu mendistribusikan kembali host dan dapat memiliki potensi masalah servis dan lisensi.

Hosted App Model menyelesaikan kebutuhan aplikasi yang dihosting ini. Hosted App Model bergantung pada dua bagian, “Host” yang tersedia untuk aplikasi lain, dan “Hosted App” yang menyatakan ketergantungan pada host. Ketika aplikasi yang di-host diluncurkan, hasilnya adalah bahwa host tersebut kemudian berjalan di bawah identitas paket aplikasi yang di-host, sehingga dapat memuat aset visual, konten dari lokasi paket Aplikasi yang Di-host, dan ketika ia memanggil API, ia melakukannya dengan identitas dideklarasikan di Aplikasi Hosted. Aplikasi Host mendapat persimpangan kemampuan yang dinyatakan antara Host dan Aplikasi Host – ini berarti bahwa jika Aplikasi Host tidak dapat meminta lebih banyak kemampuan daripada yang disediakan Host. Dalam rilis awal dari Model Aplikasi Host Aplikasi ini paket desktop didukung, dan kami akan memperluas dukungan untuk host UWP dalam rilis mendatang.

Apa itu Host dan Aplikasi Host?

Lebih khusus, Host adalah yang dapat dieksekusi dalam paket yang dinyatakan oleh ekstensi HostRuntime yang menunjuk ke proses eksekusi atau runtime utama untuk aplikasi yang dihosting. Ekstensi HostRuntime memiliki atribut Id, dan pengidentifikasi ini dirujuk sebagai ketergantungan oleh Aplikasi Hosted dalam manifes paketnya. Host dapat menentukan identitas paket yang saat ini dijalankannya dengan merujuk ke api Windows.ApplicationModel.Package.Current.

Hosted App adalah aplikasi yang menyatakan ketergantungan paket pada Host, dan memanfaatkan HostRuntime Id untuk aktivasi alih-alih menentukan Entrypoint yang dapat dieksekusi dalam paketnya sendiri. Biasanya berisi konten, aset visual, skrip, atau binari yang dapat diakses oleh host. Paket Aplikasi host dapat Ditandatangani atau Tidak Ditandatangani:

  • Paket yang ditandatangani mungkin berisi file yang dapat dieksekusi. Ini berguna dalam skenario yang memiliki mekanisme ekstensi, yang memungkinkan host memuat dll atau komponen terdaftar dalam paket aplikasi yang dihosting.
  • Paket yang tidak ditandatangani hanya dapat berisi file yang tidak dapat dieksekusi. Ini berguna dalam skenario di mana hostruntime hanya perlu memuat gambar, aset, dan konten seperti file skrip. Paket yang tidak ditandai harus menyertakan OID Penerbit Tidak Ditandatangani khusus dalam Identitasnya atau mereka tidak akan diizinkan mendaftar. Ini mencegah paket yang tidak ditandatangani memalsukan identitas paket yang ditandatangani.

Mendeklarasikan Host

Mendeklarasikan sebuah Host cukup sederhana. Yang perlu Anda lakukan adalah mendeklarasikan ekstensi paket HostRuntime di AppxManifest.xml Anda. Ekstensi HostRuntime adalah paket-lebar dan dinyatakan sebagai anak dari elemen paket. Di bawah ini adalah kutipan dari contoh AppxManifest.xml yang memperlihatkan entri HostRuntime yang mendeklarasikan aplikasi sebagai Host dengan Id “PythonHost.”

  • hostRuntime – ekstensi paket-lebar mendefinisikan informasi runtime yang digunakan saat mengaktifkan Aplikasi Hosted.
  • Executable – Biner yang dapat dieksekusi yang akan menjadi proses host
  • RuntimeBehavior dan TrustLevel – Aplikasi host akan berjalan dengan definisi yang dinyatakan dalam ekstensi. Misalnya, aplikasi yang dihosting menggunakan Host yang dinyatakan di atas akan menjalankan PyScriptEngine.exe yang dapat dieksekusi, pada tingkat kepercayaan sedang.
  • HostRuntime Id – Identifier unik yang digunakan untuk menentukan Host dalam sebuah paket. Paket dapat memiliki beberapa Aplikasi Host, dan masing-masing harus memiliki Id HostRuntime yang unik. Pengidentifikasi ini dirujuk oleh Aplikasi Hosted.