Saya mencoba mendapatkan Runtime Windows 8 baru yang digunakan untuk membuat aplikasi gaya Metro . Saya tahu Anda dapat menggunakannya dengan XAML dan didasarkan pada. NET sehingga C # dan VB.NET dapat digunakan untuk menulis aplikasi, tetapi tampaknya ada hubungannya dengan HTML, CSS, DOM, dan JavaScript.
Dapatkah seseorang menjelaskan apa itu dalam beberapa paragraf, dalam hal yang dapat dipahami oleh programmer .NET UI? (Saya kehilangan sesuatu "kunci" yang perlu untuk memahaminya.)
Kita semua tahu bahwa WPF, Silverlight , Windows Forms , dll. Akan tetap berfungsi di bawah Windows 8 (dan Windows 10) setidaknya pada sistem Intel, jadi tolong jangan katakan padaku ...
wpf
windows-runtime
windows-store-apps
windows-10
win-universal-app
Ian Ringrose
sumber
sumber
Windows.*
tercakup dalam namespaces. Terminologi sejauh ini agak membingungkan di sini, karena WinRT mengacu pada teknologi dan seluruh rangkaian perpustakaan standar. Saya tidak berpikir ada label ringkas hanya untuk perpustakaan UI (Windows.UI.*
).Jawaban:
Pada level terendah, WinRT adalah model objek yang didefinisikan pada level ABI. Ia menggunakan COM sebagai basis (jadi setiap objek WinRT mengimplementasikan
IUnknown
dan melakukan penghitungan ulang), dan membangun dari sana. Itu memang menambahkan cukup banyak konsep baru dibandingkan dengan COM yang lama, yang sebagian besar datang langsung dari .NET - misalnya, model objek WinRT memiliki delegasi, dan acara dilakukan .NET-style (dengan delegasi dan menambah / menghapus pelanggan metode, satu per peristiwa) daripada model COM sumber kejadian dan tenggelam. Dari hal-hal penting lainnya, WinRT juga memiliki antarmuka parametrized ("generic").Satu perubahan besar lainnya adalah bahwa semua komponen WinRT memiliki metadata yang tersedia untuk mereka, seperti halnya .NET assemblies. Dalam COM Anda agak punya dengan typelibs, tetapi tidak setiap komponen COM memilikinya. Untuk WinRT, metadata terkandung dalam file .winmd - lihat di dalam "C: \ Program Files (x86) \ Windows Kits \ 8.0 \ Windows Metadata \" di Pratinjau Pengembang. Jika Anda mengaduk-aduk, Anda akan melihat bahwa mereka sebenarnya adalah kumpulan CLI tanpa kode, hanya tabel metadata. Anda dapat membukanya dengan ILDASM. Catatan, ini tidak berarti bahwa WinRT sendiri dikelola - hanya menggunakan kembali format file.
Lalu ada sejumlah perpustakaan diimplementasikan dalam hal model objek - mendefinisikan antarmuka dan kelas WinRT. Sekali lagi, lihat folder "Windows Metadata" yang disebutkan di atas untuk melihat apa yang ada di sana; atau jalankan Object Browser di VS dan pilih "Windows 8.0" di framework selector, untuk melihat apa yang dibahas. Ada banyak hal di sana, dan itu tidak berurusan dengan UI saja - Anda juga mendapatkan ruang nama seperti
Windows.Data.Json
, atauWindows.Graphics.Printing
, atauWindows.Networking.Sockets
.Kemudian Anda mendapatkan beberapa perpustakaan, yang secara khusus berurusan dengan UI - sebagian besar akan berbagai ruang nama di bawah
Windows.UI
atauWindows.UI.Xaml
. Banyak dari mereka sangat mirip dengan WPF / ruang nama Silverlight - misalnyaWindows.UI.Xaml.Controls
sangat cocokSystem.Windows.Controls
; Dato untukWindows.UI.Xaml.Documents
dllSekarang, .NET memiliki kemampuan untuk mereferensikan komponen WinRT secara langsung seolah-olah mereka adalah .NET assemblies. Ini berfungsi berbeda dari COM Interop - Anda tidak memerlukan artefak perantara seperti majelis interop, Anda hanya
/r
file .winmd, dan semua jenis dan anggota mereka dalam metadata-nya menjadi terlihat oleh Anda seolah-olah mereka adalah objek .NET. Perhatikan bahwa pustaka WinRT sendiri sepenuhnya asli (dan dengan demikian program C ++ asli yang menggunakan WinRT tidak memerlukan CLR sama sekali) - keajaiban untuk mengekspos semua hal yang dikelola di dalam CLR itu sendiri, dan levelnya cukup rendah. Jika Anda membuat program NET. Yang mereferensikan .winmd, Anda akan melihat bahwa itu benar-benar terlihat seperti referensi perakitan eksternal - tidak ada sulap tipu tangan seperti jenis embedding di sana.Ini juga bukan pemetaan tumpul - CLR mencoba menyesuaikan tipe WinRT dengan padanannya, jika memungkinkan. Jadi misalnya GUID, tanggal dan URI menjadi
System.Guid
,System.DateTime
danSystem.Uri
, masing-masing; Antarmuka koleksi WinRT sepertiIIterable<T>
danIVector<T>
menjadiIEnumerable<T>
danIList<T>
; dan seterusnya. Ini berlaku dua arah - jika Anda memiliki objek .NET yang mengimplementasikanIEnumerable<T>
, dan meneruskannya kembali ke WinRT, itu akan melihatnya sebagaiIIterable<T>
.Pada akhirnya, ini berarti bahwa aplikasi .NET Metro Anda mendapatkan akses ke subset dari perpustakaan .NET standar yang ada, dan juga ke pustaka WinRT (asli), beberapa di antaranya - khususnya
Windows.UI
- terlihat sangat mirip dengan Silverlight, berdasarkan API. Anda masih memiliki XAML untuk mendefinisikan UI Anda, dan Anda masih berurusan dengan konsep dasar yang sama seperti di Silverlight - binding data, sumber daya, gaya, template dll. Dalam banyak kasus, dimungkinkan untuk mem-port aplikasi Silverlight hanya denganusing
ruang nama baru, dan men-tweak beberapa tempat dalam kode tempat API disesuaikan.WinRT sendiri tidak ada hubungannya dengan HTML dan CSS, dan itu berhubungan dengan JavaScript hanya dalam arti bahwa itu juga diekspos di sana, mirip dengan bagaimana hal itu dilakukan untuk .NET. Anda tidak perlu berurusan dengan HTML / CSS / JS ketika Anda menggunakan pustaka WinRT UI di aplikasi .NET Metro Anda (well, saya kira, jika Anda benar-benar ingin, Anda dapat meng-host
WebView
kontrol ...). Semua keterampilan .NET dan Silverlight Anda tetap sangat relevan dalam model pemrograman ini.sumber
Dari keynote Build :
Mereka menyediakan API umum untuk aplikasi HTML / CSS / JavaScript dan aplikasi C # / XAML. C # dan XAML akan digunakan, tetapi itu bukan WPF atau Silverlight.
sumber
Gagasan utamanya adalah sekarang ada dua jalur pengembangan - Desktop dan Metro.
Beberapa poin penting:
sumber
Popup
( msdn.microsoft.com/en-us/library/windows/apps/… ), jadi jika Anda mau, Anda bisa memasak sesuatu seperti MDI. Jelas tidak disarankan untuk menyalahgunakannya karena Anda berisiko berakhir dengan UI yang tidak ramah sentuhan.localhost
, Anda hanya dapat terhubung ke aplikasi yang sama. Anda bisa menggunakan file normal di salah satu "folder yang dikenal" bersama (Dokumen, Gambar dll), tetapi itu adalah peretasan yang cukup kasar yang mengharuskan polling dan dapat dilihat oleh pengguna.Ada versi modifikasi dari arsitektur yang pasti akan membantu Anda memahami di mana tepatnya letak semua itu. Salah satu ninja Telerik mengobrol dengan tim CLR dan memodifikasi gambar:
Di sini Anda dapat melihat di mana posisi CLR. Kerangka .NET sekarang memiliki dua profil
1- .NET Metro profil (CLR yang berhubungan dengan aplikasi Metro)
2-. Profil Klien NET (runtime CLR untuk aplikasi C # dan VB.NET)
Saya harap ini memberi Anda gambaran yang lebih jelas. Baca artikel lengkapnya dalam Gambar yang buruk bernilai diskusi panjang. .
sumber
Banyak detail dari Microsoft di sini .
Singkatnya, Windows Runtime adalah kumpulan perpustakaan baru yang mengekspos fungsionalitas Windows dan tersedia untuk JavaScript / C # / VB / C ++. Setiap bahasa telah dibuat untuk memahami dan dapat memanggil mereka secara langsung daripada harus melalui beberapa lapisan pemogokan.
Silverlight dan WPF adalah rasa XAML yang berjalan pada CLR. Di antara fungsionalitas lain, Windows Runtime memperlihatkan versi XAML yang sangat mirip dengan Silverlight, tetapi melakukannya dengan cara asli, bukan melalui CLR. Itu dapat diakses dari CLR, tetapi juga dari C ++.
sumber