.NET Nedir - IV Bölüm


.NET hakkında yanlış anlamalar :
.NET bir devrimdir ve eski teknolojiler ile alakası yoktur.
Yanlış! .NET aslında bir devrimden çok, COM ve ilgili bir çok teknolojinin evriminde atılmış çok büyük bir adımdır. Ancak o kadar fazla yenilik içeriyor ki, ister istemez kendisinden önceki teknolojileri öldürecek bir çözüm gibi görünüyor. Ancak .NET kesinlikle bu amaç için yaratılmış bir kavram değil. .NET’ in temelinde yeni fikirlerin yanı sıra, her zaman kullanılan yöntemlerin daha verimli bir şekilde yeniden şekillendirilmesi de yatıyor.
Bu noktayı ufak bir örnekle açalım:
COM neyi amaçlar ?
En basit yanıt şu olur sanırım, “yazılım bileşenlerinin verimli bir şekilde yeniden kullanılabilmesini...” Bu cümle bir programcı için bir kodu yeniden yazmaktan kurtulmak demektir. Bir IT yöneticisi için ise, bu kodu yeniden yazmanın gerektireceği zaman ve maliyetten kurtulmak demektir. Yani projenizin bir noktasında size gereken bir yazılım bileşenini bir programcınıza baştan yazdırmak yerine gidip denenmiş, performansı kanıtlanmış bir bileşeni elde edip, projenizi çok daha sağlam ve ucuza sürdürebilirsiniz.( elinizin altında Microsoft ‘un verdiği bir XML parser varken oturup kendinizinkini mi yazacaksınız ? )Peki .NET ’in bu açıdan önemi nedir ? .NET şu anda yaygın olarak kullandığımız Microsoft teknolojilerindeki bir çok eksiği kapatıyor, ve programcıların işini çok büyük ölçüde kolaylaştırıyor.
.NET i tanımlayan belki de en temel unsurlardan biri entegrasyon. Sadece yazılım bileşenleri arasında değil, teknolojiler ve hatta programlama dilleri açısından da çok güçlü bir entegrasyon söz konusu. Üstelik bu yeniliklerin çoğu .NET Framework tarafından otomatik olarak gerçekleştirildiği için programcılar zamandan, yöneticiler ise maliyetten kazanıyorlar.
Tabii ki IT alanında önemli kararlar veren birisi için tek önemli avantaj zaman değildir. Projenizde kullanacağınız diller de bir başka önemli konudur . Diyelim ki sunucu taraflı bir mekanizmayı da içeren geniş bir proje üzerinde çalışıyorsunuz. Web sunucunuz üzerinde çalıştıracağınız bir yazılım için de COM+ dll’leri yazmanız gerekiyor. Peki bu dll için hangi dil’i tercih edeceksiniz ? Eğer Visual Basic yönünde tercih kullanırsanız, programcılarınız Visual C++ ve ATL (Acitve Template Library) ‘e göre daha hızlı bir şekilde dll ‘i yazabilirler. Ancak ilerde web sunucunuza binen yük artınca, VB ile hazırlanan dll’in multithreading açısından yetersiz kalması, projenizin ölçeklenebilirliğini düşürecektir.
Bu durumda ya yeniden bir dll hazırlayıp projenizde gerekli değişiklikleri yapacak, ya da en baştan Visual C++ ‘ı kullanacaksınız. Bu durumda da muhtemelen projenin maliyeti ve geliştirme süresi artacaktır. ( VC++ ile ATL kullanarak COM+ dll’leri yazdıracağınız bir programcıyı, bir VB programcısı ile aynı ücrete çalıştıracağınızı ummuyorsunuz değil mi ? )
Eğer ilerde web sunucusun yükü artmazsa, bu kısmın maliyetini gereksiz yere yükseltmiş olursunuz.Gördüğünüz gibi COM’un tanımı her ne kadar belli de olsa, onu kullanırken yapacağınız seçimler sizin açınızdan büyük önem taşır.
İşte bu noktada .NET ‘in sağladığı entegrasyon size çok daha rahat karar verme, ve ölçeklenebilir projeler yaratma olanağı sağlıyor. Nasıl mı ? .NET Framework ile gelen class library’ler ( ki onları winapi yerine geçecek yeni kütüphaneler olarak düşünebiliriz.) tüm dillere eşit seviyede açık. Yani önceden projelerinizde sizi zorlayan, ve kararlarınızı etkileyen bir çok sınırlama tarih oluyor. Bunun ne kadar önemli bir değişiklik olduğunu bir düşünün, artık yüksek performans için C++ veya hızlı ve kolay yazılım geliştirmek için VB gibi seçenekler yok. Artık bir VB programcısı önceden gerçekleştirmesi mümkün olmayan işlere imza atabilir, veya Visual C++ ile çalışan bir geliştirici çok daha hızlı yazılım geliştirebilir.
Bunlar nasıl olacak diyorsanız, http://www.yazgelistir.com/ daki diğer makalelere biraz göz atmanızı tavsiye ederim, bu yazılarda teknik konular ile ilgili bir çok detayı bulabilirsiniz...
COM ve onu izleyen teknolojilere göre .NET in bir başka artısı ise teknik altyapısının tamamen platformdan bağımsız olacak şekilde tasarlanmış olması.
Şimdi gelelim hemen herkesin aklına gelebilecek bir diğer soruya: .NET bunca avantajı yanında getiriyor, ama elimizdeki COM veya DCOM’a dayalı yatırımlar ne olacak ?
.NET bu konuda sanılandan çok daha fazlasını sağlıyor. Oldukça merak edilen bir konu olduğu için bu konuda ayrı bir başlık fena olmaz sanırım J

.NET ve COM ilişkisi

Getirdiği yenilikler sebebi ile COM’un ölüm meleği olarak anılması, herhalde .NET ile ilgili en büyük yanlış anlamalardan birisidir. İlk görüşte .NET in sahip olduğu avantajları gören hemen herkesin yorumu, COM bitti, artık .NET varken kim Com kullanır ki oluyor. Eğer sıfırdan başladığınız projenizin önceden yazılmış kodlarla ve mevcut yatırımlarınız ile hiçbir ilişkisi olmayacaksa bu yorum dikkate alınabilir, ama gerçek hayatta bu durumla karşılaşma şansınız ne kadar ? Sizin de tahmin edeceğiniz gibi oldukça düşük.
Peki size .NET ‘in COM ile yazılım geliştirmek için son derece güçlü olanaklar sağladığını söylesem ? Şaşırtıcı gibi görünse bile aslında çok mantıklı, nasıl bugünlerde çalışır durumda milyonlarca satır COBOL kodu varsa, aynı şekilde bu güne kadar yazılmış COM tabanlı bir çok yazılım da kullanılmaya devam edecek. Bu yazılımları geliştirmek veya bu yatırımlarınızla birlikte çalışacak yeni projeler hazırlamak isterseniz .NET sizlere gerçekten çok sağlam olanaklar veriyor. Biraz daha detaya girelim isterseniz.
Diyelim ki, COM temelli bir projenize yeni bir katman eklemeniz gerekiyor. .NET ‘in yazılım geliştiricilere sağladığı kolaylıklar da programcılarınızın rüyalarına giriyor. Bir yanda kazan kaldırmaya hazırlanan programcılarınız, öte yanda baştan aşağı COM ile kurulmuş yatırımınız. Eğer tüm yapıyı sıfırdan .NET ile kurarsanız, kaybedeceğiniz zaman ve mevcut işlerdeki aksama kabul edilemez.
Mevcut geliştirme araçları ve COM ‘u seçmek tek yol gibi görünüyor, ama değil: programcılarınız .NET ile çok daha hızlı ve verimli çalışıp, elde ettikleri yazılım bileşenlerini hiçbir çaba harcamadan COM’ a aktarabilirler! Veya .NET ile yazılacak yeni bir projenin içinden COM bileşenlerine kolayca erişip onları kullanabilirler. Bu bahsettiğim olanaklar .NET ile birlikte size sağlanmış durumda ve sizin uğraşmanız gereken detaylar inanılmaz seviyede az.

İsterseniz yazdığınız kodu bir COM server olarak kullanabilir, veya bir COM server’i için tamamen .NET ile bir client yazabilirsiniz. Her iki durumda da .NET size gerekli wrappler’ları sağlamaktır.
Karşımıza çıkabilecek örnek durumları kısaca inceleyelim.
.NET ile COM objelerini kullanmak:

Yeni yazılımlarınız COM bileşenleri ile haberleşmek veya onları kullanmak istediği zaman bunu bir RUNTIME-CALLABLE-WRAPPER (RCW) ile yapacaklar.
Visual studio.NET ile çalışırken tek yapmanız gereken projenizin referanslar kısmında COM objelerini seçmek. İnanmadınız mı ? O zaman bir screenshot deneyin:
Eğer visual Studio.NET ile tanışma şansınız olmadı ise, TlbImp.exe isimli tool sayesinde aynı işi .NET Framework sdk ile de yapmak mümkün. Bu basit işlem sayesinde COM objeniz bir .NET class olarak emrinize amade sizi bekliyor oluyor. Daha önce COM objeleri ile alt seviyede (C++)çalışan herkesin de bileceği gibi onlarla konuşmak pek de eğlenceli değildir, RCW sayesinde bu objelere birer .NET class olarak erişmek pek çok programcıyı oldukça mutlu edecektir. Bu sayede .NET in arka planda sizler için harcadığı çaba sayesinde COM için geliştirme yaparken daha hızlı çalışmanız da mümkün.

COM ile .NET objelerini kullanmak

Bu senaryoda ise COM-CALLABLE-WRAPPER (ccw) sayesinde .NET ile çalışarak COM objeleri oluşturabiliyorsunuz.
Bu sayede COM ile iletişim kurmanız gereken durumlarda hiçbir aksaklık olmadan .NET ile çalışmanızı sürdürebilirsiniz. Burada anlattığım konuların teknik detay gerektirdiğinin farkındayım, ama bu yazıyı fazla karıştırmamak için bunları başka bir yazıya bırakalım. COM ve .NET objeleri arasında o kadar sağlam bir iletişim var ki, yukarıda bahsettiğim wrapper’lar tamamen farklı iki hata yönetimi sistemi arasında bile gerekli uyumu sağlıyor.

COM hataları belirlemek için fonksiyonlardan dönen kodları kullanırken, .NET exception handling üzerine kurulu bir error handling mekanizması kullanıyor. Bu wrapper’lar sayesinde bir hata kodu bir exception’a veya bir exception bir hata koduna otomatik olarak çevriliyor.

ActiveX ve .NET
    .NET ile birlikte tanıştığımız windows forms sayesinde activeX kontrollerinin karşılığı olarak görebileceğimiz windows forms control kavramı da karşımıza çıkıyor, ve tahmin edeceğiniz gib .NET ile gelen wrapper’lar bu kontrolleri birer activeX kontrolüne çevirebiliyor. Aynı şekilde şu anda yazılmış sayısız activeX kontrolü de .NET altında kolayca kullanılabiliyor.
İsterseniz şu ana kadar incelediğimiz noktaları bir parça derleyip toplayalım.
Ø      .NET yazılım geliştirme sürecinde verimi ve esnekliği artıracak bir çok olanak sağlıyor.
Ø      .NET ile yazılım geliştirmek için COM ile gerçekleştirdiğiniz yatırımlarınızdan vazgeçmek zorunda değilsiniz. Aksine .NET sayesinde mevcut altyapınızı değiştirmeden yeni projelerinizi tasarlayabilir, ve COM temelli yazılımlarınızı uzun süre kullanabilirsiniz.
Ø      COM ve .NET arasında gerekli iletişim .NET tarafından otomatik olarak sağlanıyor ve size gerçekten fazla bir iş düşmüyor.

Bu temel noktalar etrafında bir parça düşünürseniz, .NET i mevcut yatırımlarınızı çöpe atmanızı gerektiren bir yenilik yerine, onları daha verimli değerlendirmenizi sağlayan bir fırsat olarak görebilirsiniz.
Bir yöneticinin stratejik kararları doğru olarak verebilmesi için önemli bir gereksinim de değerlendirdiği faktörler hakkında mümkün olduğunca fazla bilgiye sahip olabilmesidir. Bu kısa giriş yazısı ile .NET hakkında genelde oluşan bazı yanlış yargıları bir parça da olsa ortadan kaldırabildiğimi umuyorum.
Bu yazıyı temellerinden uzaklaştırmamak amacıyla yer vermediğim kod örnekleri ve daha somut çalışmaları ayrı bir yazıda ele almak istiyorum. O zamana kadar, ( ki fazla uzun süreceğini sanmam :)) .NET üzerinde biraz daha çalışmanızı tavsiye ederim. Detaylarına indikçe çözüm üretmek için size sunulan bir çok yeni olanağı bulacağınıza eminim.
Şeref Arıkan
Bill Gates, Teknolojinin Geleceği Açısından Akademik
Dünyayla Birlikte Çalışmanın Önemini Vurguladı.
İki Günlük Akademik Zirvede Microsoft’un Akademik
Dünyaya ve Araştırmaya Verdiği Önem Vurgulandı...
REDMOND, Wash. — 24 Temmuz, 2001 —
Bugün dünyanın seçkin araştırma kuruluşlarından 300 akademisyenin davetli olduğu, iki günlük bir etkinliğe katılarak konuşma yapan Microsoft Corp. Başkanı ve Baş Yazılım Mimarı Bill Gates, Microsoft’un akademik dünyayla sıkı ilişkiler geliştirmesinin önemini vurguladı. Akademisyenlerle Microsoft yetkilileri ve temsilcileri, fikir alışverişinde bulunmak ve hem mühendislik hem de bilgisayar alanında yeni gelişmelere yol açmak amacıyla, birlikte çalışmak üzere bir araya geldi. Gates, Microsoft’un karmaşık bilgi-işlem sorunlarını çözmek için yaptığı araştırma yatırımlarını hatırlatarak, şirketin geliştirdiği yeni programlarda akademik dünyayla ilişkilerine önem verdiğini, Microsoft® Visual Studio® .Net Academic gibi yeni ürünlerinde ve akademik dünyayı hedef alan yeni lisans programlarında profesörlere ve öğrencilere ulaşmaya çalıştıklarını belirtti.
“Endüstri ile akademik dünya arasındaki işbirliği, teknolojinin geleceği konusundaki ortak vizyonumuzu gerçekleştirirken en önemli bileşen olmaya devam edecek” diyen Gates “Microsoft akademik dünyayla kurduğu ortaklıkları sürekli olarak geliştirmekte, akademisyenlerle birlikte yeni fikirler geliştirmeyi ve zorlu bilgi-işlem sorunlarını çözmeyi amaçlamaktadır” yorumunda bulundu.
Bilgi ve fikir alışverişi zemini sunmayı amaçlayan etkinliğin sponsorluğunu Microsoft Research University Relations üstleniyor. Etkinliğe katılan profesörler özel oturumlarda bir yandan kendi araştırma projelerini ve bulgularını sunarken diğer yandan Microsoft’un sunularını, şirketin mevcut araştırma faaliyetlerini ve gelişim aşamasındaki ürünlerini içeren gösterileri izleyecek.
“Akademik dünya ile endüstri arasındaki güçlü ortaklık, iş ve akademi dünyaları için olduğu kadar ekonomi için de yararlıdır” şeklinde görüş belirten New York Üniversitesi Gelişmiş Teknoloji Merkezi Yöneticisi Mike Uretsky sözlerini şöyle sürdürdü: “Microsoft’un akademik zirvesi gibi etkinlikler sayesinde herkes, ortak araştırma projelerinden yararlanabiliyor ve fikir alışverişinde bulunabiliyor; böylece iş gücünün yeni gelişmelere her zaman ivme kazandırması sağlanıyor.”
Microsoft Akademik Dünya için Yazılım Geliştirme Araçları Sunuyor
Gates önemli konulara değindiği konuşmasında, Visual Studio .NET geliştirme araçları ailesinin yeni üyesi Visual Studio .NET Academic’i tanıttı. Visual Studio .NET Academic, Microsoft’un yüksekokulların ve üniversitelerin, araştırma ve öğrenim ortamındaki gereksinimlerini daha iyi anlamak için, yüksek öğrenim kurumlarıyla ve profesörlerle yaptığı kapsamlı çalışmanın sonucudur. Bir dizi müşterek tasarım çalışmasından elde edilen sonuçlar, profesörlerin ve öğrencilerin kendi araştırmalarını, çalışmalarını ve ödevlerini destekleyecek güçlü bir altyapı platformuna gerek duyduğunu göstermekteydi. Bu gereksinimleri karşılamak için, Visual Studio .NET Academic ürününe Visual Studio .NET Professional’ın tüm gelişmiş özellikleri dahil edildi; bu gelişmiş özellikler arasında XML Web servisi standartları ve teknolojileri için destek ve Microsoft .NET Framework ile sıkı entegrasyon bulunmaktadır.
.NET platformunun tüm olanaklarına ulaşabilen akademisyenler ve öğrenciler, üçüncü parti üretimi olan 20’yi aşkın popüler akademik ve ticari dili kullanarak çizim yapabilecek ve .NET ile benzersiz öğrenim ve araştırma gereksinimlerini karşılayacaktır. Böylece hem bugün, hem de gelecekte bilgi-işlem sorunlarını çözmek için farklı bakış açıları elde edilmiş olacaktır.
Karşılıklı incelemeler sonucunda Microsoft, profesörlerin ve öğrencilerin ortak öğrenim faaliyetlerini kolaylaştıran araçlara gerek duyduğunu belirledi. Sonuç olarak, Microsoft aşağıdaki araçları Visual Studio .NET Academic entegre geliştirme ortamına (IDE – Integrated Development Environment) dahil edecektir:
Ø       Ders projelerinin ve ödevlerin yönetimini basitleştiren ders yönetimi araçları
Ø       Öğrencilerin Visual Studio .NET Academic’i birkaç dakikada yükleyerek çalıştırabilmesini sağlayan kapsamlı dokümanlar
Ø       Öğrencilerin taşınabilir C veya C++ uygulamalarını kolayca oluşturmasını sağlayan uygulama sihirbazları
Ø       Öğrencilere ortamı ve teknolojiyi nasıl kullanacaklarını öğreten, geniş bir kod örneği yelpazesi
Visual Studio .NET Academic 2001 yılının sonundan itibaren Visual Studio .NET ailesiyle birlikte pazara sunulacak; akademik zirveye katılan herkese Visual Studio .NET Academic Beta 2 sürümünün bir kopyası verilecek.

Yorum Gönder

xxxxxx