Ben iyi çalışır benim C # kodunda belirli bir komut kullanıyorum. Bununla birlikte, "yönetilmeyen" kodunda yanlış davranış yaptığı söylenir.
Yönetilen veya yönetilmeyen kod nedir?
Ben iyi çalışır benim C # kodunda belirli bir komut kullanıyorum. Bununla birlikte, "yönetilmeyen" kodunda yanlış davranış yaptığı söylenir.
Yönetilen veya yönetilmeyen kod nedir?
Yanıtlar:
İşte MSDN'den yönetilmeyen kodla ilgili bazı metinler .
Bazı kütüphane kodlarının yönetilmeyen koda çağrı yapması gerekir (örneğin, Win32 gibi yerel kod API'leri). Bu, yönetilen kod için güvenlik çevresinin dışına çıkmak anlamına geldiğinden, gereken dikkat gösterilmelidir.
Yönetilen kodla ilgili diğer bazı ücretsiz açıklamalar:
Sorununuz için:
Bunun nedeni, NUnit'in UnitTesting için kodunuzu yürütmesi ve yönetilmeyen bir kısmı olabileceğidir. Ama bundan emin değilim, bu yüzden bunu altın için almayın. Eminim birisi size bu konuda daha fazla bilgi verebilir. Umarım yardımcı olur!
Bu konu hakkında iyi bir makale.
Özetlemek,
Aynı makineye kurulmuş bir çalışma zamanı motoru içinde yürütülen bir uygulama programı. Uygulama onsuz çalışamaz. Çalışma zamanı ortamı, programın kullandığı genel yazılım rutinleri kitaplığını sağlar ve genellikle bellek yönetimi gerçekleştirir. Ayrıca kaynak koddan yürütülebilir koda veya ara dilden yürütülebilir koda tam zamanında (JIT) dönüşüm sağlayabilir. Java, Visual Basic ve .NET'in Ortak Dil Çalışma Zamanı (CLR) çalışma zamanı motorlarına örnektir. ( Daha fazla bilgi edinin )
Kendi kendine çalışan yürütülebilir bir program. İşletim sisteminden başlatılan program, işletim sistemindeki yazılım rutinlerini çağırır ve kullanır, ancak başka bir yazılım sisteminin kullanılmasını gerektirmez. Belirli bir platform için makine diline monte ve C / C ++ programları makine diline derlenmiştir Assembly dili programları yönetilmeyen kod örnekleridir. ( Devamı )
Eğer dendiğinde yönetilmeyen , makine özgü, makine düzeyinde kodunu düşünüyorum. X86 montaj dili gibi. Yönetilmeyen (yerel) kod derlenir ve o an için tüm işletim sistemi öğeleri hariç olmak üzere doğrudan tasarlandığı işlemcide çalışacak şekilde bağlanır. Taşınabilir değil, ama hızlı. Çok basit, soyulmuş kod.
Yönetilen kod, Java'dan eski Yorumlayıcı BASIC'e veya .NET altında çalışan her şeye kadar her şeydir. Yönetilen kod tipik olarak orta düzey bir P-Code veya bayt kodu talimat setine derlenir. Montaj diline benzemelerine rağmen, bunlar makineye özgü talimatlar değildir. Yönetilen kod, programı üzerinde çalıştığı makineden yalıtır ve tüm belleğin dolaylı olarak tahsis edildiği güvenli bir sınır oluşturur ve genel olarak konuşursak, bağlantı noktaları, bellek adres alanı, yığın vb. Gibi makine kaynaklarına doğrudan erişiminiz yoktur. Fikir daha güvenli bir ortamda çalışmaktır.
Yönetilen bir değişkenden, örneğin, yönetilmeyen bir değişkene dönüştürmek için, gerçek nesnenin kendisine ulaşmanız gerekir. Muhtemelen bazı ek ambalajlara sarılmış veya kutulanmış. Yönetilmeyen değişkenler ('int' gibi) - 32 bitlik bir makinede - tam olarak 4 bayt alır. Havai veya ek paketleme yoktur. Yönetilen koddan yönetilmeyen koda geçme ve tekrar tekrar " marshaling " denir . Programlarınızın sınırı geçmesine izin verir.
Mümkün olduğunca az kelime ile:
Yönetilen kod C # .Net, VB.Net, F # .Net vb derleyicilerin oluşturduğu şeydir. Çöp toplama, referans kontrolü ve çok daha fazlası gibi hizmetler sunan CLR'de çalışır. Bunu düşünün, kodum CLR tarafından yönetiliyor.
Öte yandan, yönetilmeyen kod doğrudan makine kodunu derler. CLR tarafından yönetilmez.
Yönetilen Kod:
Ortak dil çalışma zamanı ile "işbirliği sözleşmesi" altında çalışan kod. Yönetilen kod, çalışma zamanı için bellek yönetimi, diller arası entegrasyon, kod erişim güvenliği ve nesnelerin otomatik ömür boyu kontrolü gibi hizmetler sağlamak için gereken meta verileri sağlamalıdır. Microsoft ara diline (MSIL) dayalı tüm kodlar yönetilen kod olarak yürütülür.Yönetilmeyen Kod:
Ortak dil çalışma zamanının kurallarına ve gereksinimlerine bakılmaksızın oluşturulan kod. Yönetilmeyen kod, ortak dil çalışma zamanı ortamında minimum hizmetle yürütülür (örneğin, çöp toplama, sınırlı hata ayıklama vb.).
Referans: http://www.dotnetspider.com/forum/11612-difference-between-managed-and-unmanaged-code.aspx
Yönetilen kod CLR yani .NET çalışma zamanı ortamında çalışır. Kısacası tüm IL yönetilen koddur.Ama üçüncü taraf yazılım örneği VB6 veya VC ++ bileşeni kullanıyorsanız, .NET çalışma zamanı (CLR) kontrolü olmadığından yönetilmeyen kodlardır dilin kaynak kodunun yürütülmesi.
Yönetilen Kod: - Dil derleyici derlemesinden sonra MSIL (ara dil) formunun geliştirildiği ve doğrudan CLR
yönetilen kodla yürütülen kod. ör.: - .net framework tarafından desteklenen tüm 61 dil kodu
Yönetilmeyen Kod: - Daha önce .net
MSIL formunun kullanılamadığı ve CLR
doğrudan çalıştırıldığı CLR
kod, işletim sistemine yeniden yönlendirilecek kod, yönetilmeyen kod olarak bilinir.
ör .: -COM, Win32 API'leri
Her şeyden önce .NET framework
, Microsoft
daha önce , benzer ürünler gibi bağımsız ürünler sağlıyordu MFC (Visual C++), VB, FoxPro
.
2002 yılında Microsoft ürünlerini birleştirdi ve .NET çerçevesi yaptı. Şimdi kodun daha önce nasıl yürütüldüğü ile kodun .NET framework'te nasıl yönetildiği ve yürütüldüğü arasında bir fark var. Microsoft CLR
, .NET framework'ün desteklenen herhangi bir dilinden gelen kodu derleyen ve memory mangement, garbage collection
vb. Gibi ek işlevler sağlayan .NET framework konseptini tanıttı . Ancak, bu tür CLR özellikleri daha önce doğrudan mevcut değildi.
Dolayısıyla, .NET çatısında (CLR ile derlenmiş) kütüphane / kod oluşturuyorsanız, buna denir
Managed code
. Bu kütüphaneyi diğer .NET uygulamalarında / projelerinde daha fazla kullanabilirsiniz ve orada da CLR daha önce nasıl derlendiğini anlayacaktır ve bu yüzden yönetim kodunuz olarak kalır.
OTOH, .NET framework'ten önce yazılmış kütüphaneleri kullanmak istiyorsanız, belirli sınırlamalarla yapabilirsiniz, ancak unutmayın, CLR o sırada orada olmadığından, şimdi CLR bu kodu tekrar anlamayacak ve derlemeyecektir. . Ve buna çağrılacak unmanaged code
. Bazı özellikler / araç sağlamak için bazı üçüncü taraflarca oluşturulan kütüphanelerin / meclislerin de CLR uyumlu değilse yönetim kodu olarak kabul edilebileceğini lütfen unutmayın.
Laymen terimleriyle, Kodu yönet , CLR'nizin anladığı ve daha fazla yürütme için kendi başına derleyebileceği bir şeydir. .NET çerçevesinde, (.NET framework üzerinde çalışan herhangi bir dilden) Kod CLR'ye gittiğinde, kod bazı meta veri bilgilerini sağlar, böylece CLR size burada belirtilen özellikleri sağlayabilir . Bunlardan birkaçı Garbage collection, Performance improvements, cross-language integration, memory management
vb.
OTOH, yönetilmeyen kod makineye özgü ve kullanıma hazır bir şeydir, daha fazla işlemeye gerek yoktur.
Pro C # 5 ve .NET 4.5 Framework'ten:
Yönetilen ve Yönetilmeyen Kod: Belki de C # dili hakkında anlaşılması gereken en önemli nokta, yalnızca .NET çalışma zamanı içinde yürütülebilen kod üretebilmesidir (yerel bir COM sunucusu veya yönetilmeyen bir C / C ++ oluşturmak için asla C # kullanamazsınız. uygulama). Resmi olarak konuşursak, .NET çalışma zamanını hedefleyen kodu tanımlamak için kullanılan terim yönetilen koddur. Yönetilen kodu içeren ikili birim derleme olarak adlandırılır (derlemeler hakkında biraz daha ayrıntılı bilgi). Tersine, doğrudan .NET çalışma zamanı tarafından barındırılamayan koda yönetilmeyen kod adı verilir.