Neden bu kadar çok .NET lezzetine sahibiz? Bu iyi bir şey midir? [kapalı]


9

.NET Framework'ün birçok "lezzeti" vardır :

  • Tam ("normal")
  • İstemci profili alt kümesi
  • Web tarayıcılarında Silverlight
  • Windows Phone'da "Silverlight"
  • Kompakt çerçeve
  • WinRT

Yeni bir platformda C # kodu gerektiğinde, Microsot'un sadece BCL'deki gibi mevcut montajları kullanmak yerine, yeni montajlar oluşturarak ve türleri hareket ettirerek tam CLR'yi alıp küçük bir alt kümeye ayırmayı tercih ettiği görülüyor. . Örneğin Silverlight, WPF ile aynı uygulamaya atıf yapmak yerine, WPF için farklı sınıflara / yöntemlere (biraz farklı imzalara veya çok farklı uygulamalara sahip bazı yöntemlere kadar bile) sahiptir List<T>.

Bu ideal bir mimari mi, yoksa bir miras işareti mi? BCL, her biri üzerinde farklı sunum / IO kütüphaneleri bulunan tüm platformlarda çalışmamalıdır mı? Yoksa BCL ve diğer kütüphaneler çok şişmiş mi ve bunları ayırmak kabul edilebilir olmak için çok fazla geriye dönük uyumluluk sorunu yaratacak mı?

Boş bir tuvalden başlasak ve geriye dönük uyumluluktan endişe etmiyor olsaydık, mevcut durum gerçekten birden fazla platformu ele almanın en iyi yolu olurdu?


7
Tüm yakın oylamalarda ne var? Bu tamamen meşru bir soru.
Mason Wheeler

2
Muhtemelen biraz yargı ile ifade edildiği için kapanmış gibi görünüyor (sanki "kötü mimariye" karar vermişsiniz gibi görünüyor). " Neden .NET'in bu kadar çok lezzeti var?"
Sinirli

1
@FrustratedWithFormsDesigner doğru. Soru, .NET'e karşı bir önyargı ile başlar. Ton daha nötr olsaydı, yakın oy kullanamayacağından şüpheliyim.
Oded

2
Bana bir soru başlatmaya çalışıyorsun, soruna yapıcı cevaplar aramıyormuş gibi geliyor. Sanırım bu yüzden yakın oy alıyorsunuz.
Ocak'ta Tyanna

2
@Oded ve diğerleri - Ünvanı ve vücudu yeniden yazdım, umarım onayınızla buluşuyor :)
Paul Stovell

Yanıtlar:


5

Microsoft'un yaptığı, rutinleri birden fazla pakete bölen şey yaygındır. Sınırlı belleğe sahip tek kartlı bilgisayarlarda (.Net Micro Framework) çalışan bir .NET sürümü vardır. Örneğin tam bir grafik kullanıcı arabirimi çalıştırmak için gereken her şeyi bu sürüme dahil etmek hiç mantıklı olmaz.

Apple'a bakarsanız, iPhone, Mac'te bulabileceğiniz tüm rutinleri içermez.


Ancak , List<T>Micro Framework oluşturmak için kodu kopyalayan / yapıştıran bir geliştirici yerine List<T>, BCL, ikili platformların tüm platformlarda çalışacağı şekilde düzgün bölünmemelidir?
Paul Stovell

2
Başka bir deyişle, kodun başka bir platformda çalıştırılmasını sağlamak, hangi montajları destekleyeceğini seçmek durumunda değil mi?
Paul Stovell

1
Java da bunu yapıyor. Örneğin, Java Kartı Java'nın bir alt kümesidir.
Bernard

2
@PaulStovell: MS'in bunu nasıl yaptığından emin değilim ... ancak MS'in kodu alan ve hedef platform için inşa eden ayrı bir oluşturma yolu / komut dosyası (hafifçe koymak için) varsa şaşırmam. bir kopya / yapıştır değil, List<T>ancak koddan bazı şeyleri budayabilir veya platforma özgü bazı şeylerle birleşebilir ve bir dağıtım öğesi oluşturabilir.
Steven Evers

1

Sorunun .NET olduğunu sanmıyorum. Çeşitli çalışma zamanları olsa da, bunlar hala uyumludur, bu yüzden Taşınabilir Sınıf Kütüphaneleri gibi teknolojiler çalışır (listelediğiniz çalışma zamanlarının çoğu için).

Örneğin, her lezzet, koleksiyonlarının çeşitli kopyalarıyla kendi System.dll / mscorlib.dll kopyasına sahip olan tek bir paylaşılan paylaşılan derleme yerine "System.Collections.dll" göndermemelidir?

Bu neden gerekli? Hepsi uyumlu olduğu sürece (yine Taşınabilir Sınıf Kütüphanelerine bakın), BCL çalışma zamanının kendisinin bir parçası olduğu ve birlikte dağıtıldığı için bu önemli değildir.


List<T>Taşınabilir bir kütüphane oluşturmadan yalnızca herhangi bir platformda kullanan ve çalıştırabilen bir sınıf yazamam gerekir mi? Ya da List<T>kendisi taşınabilir bir kütüphanede olmamalı mı? Taşınabilir kütüphaneler bana zarif bir tasarımın parçası olmaktan ziyade geçici bir çözüm gibi geliyor.
Paul Stovell

1

.NET temelde bir Windows ortamında com nesnelerini değiştiriyor ve genişletiyor. Ayrıca, çok farklı teknolojileri tanımlamak için kullanılır, Adobe'nin tüm ürünlerini adlarında ortak bir kelime olacak şekilde yeniden adlandırıp değiştirmediğini hayal edin, bu .NET ile neler oluyor

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.