Ada banyak "rasa" dari .NET Framework :
- Penuh ("normal")
- Subset profil klien
- Silverlight di browser web
- "Silverlight" di Windows Phone
- Kerangka kerja yang kompak
- WinRT
Ketika kode C # diperlukan pada platform baru, akan terlihat bahwa Microsot lebih suka untuk mengambil CLR penuh dan mengupasnya menjadi subset kecil, membuat rakitan baru dan memindahkan jenis-jenis, bukan hanya menggunakan rakitan yang ada seperti yang ada di BCL . Silverlight misalnya memiliki kelas / metode yang berbeda untuk WPF (bahkan hingga beberapa metode memiliki tanda tangan yang sedikit berbeda atau implementasi yang sangat berbeda), daripada hanya merujuk pada implementasi yang sama List<T>
seperti WPF.
Apakah ini arsitektur yang ideal, atau tanda warisan? Bukankah seharusnya BCL berjalan di semua platform, dengan hanya pustaka presentasi / IO yang berbeda pada masing-masing platform? Atau apakah BCL dan perpustakaan lain terlalu membengkak, dan membaginya akan membuat terlalu banyak masalah kompatibilitas, dapat diterima?
Jika kita mulai dari kanvas kosong dan tidak khawatir tentang kompatibilitas ke belakang, apakah situasi saat ini benar-benar cara terbaik untuk menangani beberapa platform?
sumber
Jawaban:
Apa yang dilakukan Microsoft, membagi rutinitas menjadi beberapa paket, adalah hal biasa. Ada versi. NET yang berjalan pada komputer papan tunggal (.Net Micro Framework) dengan memori terbatas. Misalnya, tidak masuk akal untuk memasukkan semua versi yang diperlukan untuk menjalankan antarmuka pengguna grafis lengkap dalam versi itu.
Jika Anda melihat Apple, iPhone tidak mengandung semua rutinitas yang akan ditemukan di Mac.
sumber
List<T>
membuat Kerangka MikroList<T>
, bukankah BCL harus dipisah dengan benar sehingga binari berjalan di semua platform?List<T>
tetapi mungkin memangkas beberapa hal dari kode atau bergabung dengan beberapa hal platform spesifik dan menghasilkan item penyebaran.Saya tidak berpikir. NET adalah masalahnya. Meskipun ada berbagai runtimes, mereka masih kompatibel, itulah sebabnya teknologi seperti Portable Class Libraries berfungsi (untuk sebagian besar runtimes yang Anda daftarkan).
Mengapa ini dibutuhkan? Selama semuanya kompatibel (sekali lagi, lihat Portable Class Libraries), ini seharusnya tidak masalah, karena BCL adalah bagian dari runtime itu sendiri, dan didistribusikan bersama-sama.
sumber
List<T>
dan menjalankannya di platform apa pun tanpa membuat perpustakaan portabel? Atau tidakkah seharusnyaList<T>
berada di perpustakaan portabel? Perpustakaan portabel bagiku terasa seperti solusi daripada bagian dari desain yang elegan..NET pada dasarnya mengganti dan memperluas objek com di lingkungan windows. Ini juga digunakan untuk mengidentifikasi banyak teknologi yang sangat berbeda, bayangkan jika Adobe mengganti nama semua produk mereka untuk memiliki kata yang sama dalam nama mereka, itu semacam apa yang terjadi dengan .NET
sumber