Layanan XAML

Topik ini menjelaskan kemampuan kumpulan teknologi yang dikenal sebagai .NET XAML Services. Sebagian besar layanan dan API yang dijelaskan berada di perakitan System.Xaml. Layanan termasuk pembaca dan penulis, kelas skema dan dukungan skema, pabrik, pengaitan kelas, dukungan intrinsik bahasa XAML, dan fitur bahasa XAML lainnya.

Tentang Dokumentasi Ini

Dokumentasi konseptual untuk .NET XAML Services mengasumsikan bahwa Anda memiliki pengalaman sebelumnya dengan bahasa XAML dan bagaimana penerapannya pada kerangka kerja tertentu, misalnya Windows Presentation Foundation (WPF) atau Windows Workflow Foundation, atau area fitur teknologi tertentu, misalnya membangun fitur penyesuaian di Microsoft.Build.Framework.XamlTypes. Dokumentasi ini tidak berusaha menjelaskan dasar-dasar XAML sebagai bahasa markup, terminologi sintaksis XAML, atau materi pengantar lainnya. Sebagai gantinya, dokumentasi ini berfokus pada penggunaan .NET XAML Services yang diaktifkan secara khusus di pustaka rakitan System.Xaml. Sebagian besar API ini adalah untuk skenario integrasi dan ekstensibilitas bahasa XAML. Hal ini mungkin mencakup salah satu skenario berikut:

  • Memperluas kemampuan pembaca XAML dasar atau penulis XAML (memproses aliran node XAML secara langsung; menurunkan pembaca XAML atau penulis XAML Anda sendiri).

  • Mendefinisikan jenis kustom yang dapat digunakan XAML yang tidak memiliki dependensi kerangka kerja tertentu, dan menghubungkan jenis tersebut untuk menyampaikan karakteristik sistem jenis XAML mereka ke .NET XAML Services.

  • Menghosting pembaca XAML atau penulis XAML sebagai komponen aplikasi, seperti perancang visual atau editor interaktif untuk sumber markup XAML.

  • Menulis pengonversi nilai XAML (ekstensi markup; pengonversi jenis untuk jenis kustom).

  • Mendefinisikan konteks skema XAML kustom (menggunakan teknik pemuatan perakitan alternatif untuk mendukung sumber jenis; menggunakan teknik pencarian jenis yang diketahuil, sebagai ganti selalu mencerminkan rakitan; menggunakan konsep rakitan yang dimuat yang tidak menggunakan runtime bahasa umum (CLR) AppDomain dan model keamanan terkait).

  • Memperluas sistem jenis XAML dasar.

  • Menggunakan teknik Lookup atau Invoker untuk memengaruhi sistem jenis XAML dan bagaimana jenis pendukung dievaluasi.

Jika Anda mencari materi pengantar tentang XAML sebagai bahasa, Anda dapat mencoba Gambaran Umum XAML (WPF .NET). Topik tersebut membahas XAML untuk audiens yang baru mengenal Windows Presentation Foundation (WPF) dan juga menggunakan markup XAML dan fitur bahasa XAML. Dokumen berguna lainnya adalah materi pengantar dalam spesifikasi bahasa XAML.

Layanan .NET XAML dan System.Xaml dalam Arsitektur .NET

.NET XAML Services dan rakitan System.Xaml menentukan banyak hal yang diperlukan untuk mendukung fitur bahasa XAML. Hal ini termasuk kelas dasar untuk pembaca XAML dan penulis XAML. Fitur terpenting yang ditambahkan ke .NET XAML Services yang tidak ada dalam penerapan XAML khusus kerangka mana pun adalah representasi sistem jenis untuk XAML. Representasi sistem jenis menyajikan XAML dengan cara berorientasi objek yang berpusat pada kemampuan XAML tanpa mengambil dependensi pada kemampuan kerangka kerja tertentu.

Sistem jenis XAML tidak dibatasi oleh bentuk markup atau spesifikasi runtime asal XAML; juga tidak dibatasi oleh sistem jenis dukungan tertentu. Sistem jenis XAML mencakup representasi objek untuk jenis, anggota, konteks skema XAML, konsep tingkat XML, dan konsep bahasa XAML lainnya atau intrinsik XAML. Menggunakan atau memperluas sistem jenis XAML memungkinkannya diturunkan dari kelas seperti pembaca XAML dan penulis XAML, dan memperluas fungsionalitas representasi XAML ke dalam fitur spesifik yang diaktifkan oleh kerangka kerja, teknologi, atau aplikasi yang menggunakan atau memancarkan XAML. Konsep konteks skema XAML memungkinkan operasi penulisan grafik objek praktis dari kombinasi penerapan penulis objek XAML, sistem jenis dukungan teknologi yang dikomunikasikan melalui informasi perakitan dalam konteks, dan sumber node XAML. Untuk informasi lebih lanjut tentang konsep skema XAML. lihat Konteks Skema XAML Default dan Konteks Skema XAML WPF.

Aliran Node XAML, Pembaca XAML, dan Penulis XAML

Untuk memahami peran yang dimainkan .NET XAML Services dalam hubungan antara bahasa XAML dan teknologi spesifik yang menggunakan XAML sebagai bahasa, akan sangat membantu untuk memahami konsep aliran node XAML dan bagaimana konsep tersebut membentuk API dan terminologi. Aliran node XAML adalah perantara konseptual antara representasi bahasa XAML dan grafik objek yang diwakili atau didefinisikan oleh XAML.

  • Pembaca XAML adalah entitas yang memproses XAML dalam beberapa bentuk, dan menghasilkan aliran node XAML. Di API, pembaca XAML diwakili oleh kelas dasar XamlReader.

  • Penulis XAML adalah entitas yang memproses aliran node XAML dan menghasilkan sesuatu yang lain. Di API, penulis XAML diwakili oleh kelas dasar XamlWriter.

    Dua skenario paling umum yang melibatkan XAML adalah memuat XAML untuk membuat instans grafik objek, dan menyimpan grafik objek dari aplikasi atau alat dan menghasilkan representasi XAML (biasanya dalam bentuk markup yang disimpan sebagai file teks). Memuat XAML dan membuat grafik objek sering disebut dalam dokumentasi ini sebagai jalur pemuatan. Menyimpan atau membuat serialisasi grafik objek yang ada ke XAML sering disebut dalam dokumentasi ini sebagai jalur penyimpanan.

    Jenis jalur beban yang paling umum dapat digambarkan sebagai berikut:

  • Mulai dengan representasi XAML, dalam format XML yang dikodekan UTF dan disimpan sebagai file teks.

  • Muat XAML itu ke XamlXmlReader. XamlXmlReader adalah subkelas XamlReader.

  • Hasilnya adalah aliran node XAML. Anda dapat mengakses setiap node dari aliran node XAML menggunakan API XamlXmlReader / XamlReader. Operasi yang paling umum di sini adalah untuk maju melalui aliran node XAML, memproses setiap node menggunakan metafora "catatan saat ini".

  • Teruskan node yang dihasilkan dari aliran node XAML ke API XamlObjectWriter. XamlObjectWriter adalah subkelas XamlWriter.

  • XamlObjectWriter menulis grafik objek, satu objek pada satu waktu, sesuai dengan kemajuan melalui aliran node XAML sumber. Penulisan objek dilakukan dengan bantuan konteks skema XAML dan penerapan yang dapat mengakses rakitan serta jenis sistem dan kerangka kerja jenis pendukung.

  • Panggil Result di akhir aliran node XAML untuk mendapatkan objek akar dari objek grafik.

    Jenis simpan jalur yang paling umum dapat digambarkan sebagai berikut:

  • Mulailah dengan grafik objek dari seluruh runtime aplikasi, konten UI dan status runtime, atau segmen yang lebih kecil dari representasi objek aplikasi secara keseluruhan pada runtime.

  • Dari objek awal yang logis, seperti akar aplikasi atau akar dokumen, muat objek ke XamlObjectReader. XamlObjectReader adalah subkelas XamlReader.

  • Hasilnya adalah aliran node XAML. Anda dapat mengakses node secara terpisah dari aliran node XAML menggunakan XamlObjectReader dan API XamlReader. Operasi yang paling umum di sini adalah untuk maju melalui aliran node XAML, memproses setiap node menggunakan metafora "catatan saat ini".

  • Teruskan node yang dihasilkan dari aliran node XAML ke API XamlXmlWriter. XamlXmlWriter adalah subkelas XamlWriter.

  • XamlXmlWriter menulis XAML dalam pengodean XML UTF. Anda dapat menyimpan ini sebagai file teks, sebagai aliran, atau dalam bentuk lain.

  • Panggil Flush untuk mendapatkan hasil akhir.

Untuk informasi lebih lanjut tentang konsep aliran node XAML, lihat Memahami Struktur dan Konsep Aliran Node XAML.

Kelas XamlServices

Tidak selalu perlu berurusan dengan aliran node XAML. Jika Anda menginginkan jalur pemuatan dasar atau jalur penyimpanan dasar, Anda dapat menggunakan API di kelas XamlServices.

  • Berbagai tanda tangan Load menerapkan jalur pemuatan. Anda dapat memuat file atau aliran, atau dapat memuat XmlReader, TextReader atau XamlReader yang membungkus input XAML Anda dengan memuat dengan API pembaca tersebut.

  • Berbagai tanda tangan Save menyimpan grafik objek dan menghasilkan output sebagai aliran, file, atau instans XmlWriter/TextWriter.

  • Transform mengonversi XAML dengan menautkan jalur pemuatan dan jalur penyimpanan sebagai satu operasi. Konteks skema yang berbeda atau sistem jenis dukungan yang berbeda dapat digunakan untuk XamlReader dan XamlWriter, yang memengaruhi bagaimana XAML yang dihasilkan diubah.

Untuk informasi lebih lanjut tentang cara menggunakan XamlServices, lihat Kelas XAMLServices dan Membaca atau Menulis XAML Dasar.

Sistem Jenis XAML

Sistem jenis XAML menyediakan API yang diperlukan untuk bekerja dengan node terpisah tertentu dari aliran node XAML.

XamlType adalah representasi suatu objek - hal yang Anda proses antara node objek awal dan node objek akhir.

XamlMember adalah representasi anggota suatu objek - hal yang Anda proses antara node anggota awal dan node anggota akhir.

API seperti GetAllMembers dan GetMember serta DeclaringType melaporkan hubungan antara XamlType dan XamlMember.

Perilaku default sistem jenis XAML seperti yang diterapkan oleh .NET XAML Services didasarkan pada runtime bahasa umum (CLR), dan analisis statis jenis CLR dalam rakitan dengan menggunakan refleksi. Oleh karena itu, untuk jenis CLR tertentu, penerapan default sistem jenis XAML dapat mengekspos skema XAML dari jenis tersebut dan anggotanya serta melaporkannya dalam bentuk sistem jenis XAML. Dalam sistem jenis XAML default, konsep penetapan jenis dipetakan ke pewarisan CLR, dan konsep instans, jenis nilai, dan sebagainya, juga dipetakan ke perilaku dan fitur pendukung CLR.

Referensi untuk Fitur Bahasa XAML

Untuk mendukung XAML, .NET XAML Services menyediakan penerapan spesifik dari konsep bahasa XAML sebagaimana didefinisikan untuk namespace XAML bahasa XAML. Hal ini didokumentasikan sebagai halaman referensi khusus. Fitur bahasa didokumentasikan dari perspektif bagaimana fitur bahasa ini berperilaku saat diproses oleh pembaca XAML atau penulis XAML yang ditentukan oleh .NET XAML Services. Untuk informasi lebih lanjut, lihat XAML Namespace (x:) Fitur Bahasa.