C # aslında çok platformlu bir dil midir?


20

C # (ve genel olarak .net platformu), çoklu hedefleme uygulamalarında iyi bir seçenek haline geliyor gibi görünüyor:

  • resmi MS .net çerçevesi: tam darbe pencere geliştirme, asp.net dev, Windows phone Dev, vb.
  • mono ve tüm türevleri: monotouch, monodroid: dünyanın geri kalanı. Bu araçlar bugün RTM.

  • Bu C # en popüler platformları hedeflemek için iyi bir dil haline geliyor demektir: masaüstü, web ve mobil?

  • Hedef platformların "yerel" dilini (objektif C, Java vb.) Kullanmak hala daha mı iyi?
  • Sadece bir duman ekranı ve sadece pazarlama dili midir?

Kodun platformlar arasında kopyalanamayacağını / yapıştırılamayacağının bilincinde olduğumu lütfen unutmayın. Ama eminim alt uygulama katmanları (modeller, iş, vb.) Tekrar kullanılabilir, ancak daha yüksek katmanları (Gui, vb.) Platforma uyarlamak zorunda kalacağımı biliyorum. Amacım teknik kod paylaşımından çok gerekli becerilere odaklanmak.

[değiştir] Ben değilim kitlesel c # kullandığı bir şirkette AC # geliştiricisi. Bu yüzden şirketimdeki hedef platformları genişletme planında c # hakkında konuştum.

Yanıtlar:


12

Evet, genel olarak .NET Framework, çok çeşitli aygıtları hedefleyen uygulamalar için mükemmeldir. Ancak bu .NET'e özgü değildir; Java bunu uzun zaman önce yapıyordu. Akılda tutulması gereken şey, belirli bir platform için yerel araçlara gerçek bir alternatif olmadığıdır.

.NET ile oluşturduğunuz Mac uygulamaları hiçbir zaman yerel Mac OS X uygulamalarına benzemez ve bu , OS X kullanıcılarının büyük çoğunluğu tarafından bir sorun olarak kabul edilir . Bu, iş modelinizin kullanıcı memnuniyetini en üst düzeye çıkarmak için doygunluğu en üst düzeye çıkaran değerlere bağlı olarak stratejik olarak sizin için önemli olmayabilir, ancak seçim yaparken kesinlikle akılda tutulması gereken bir şeydir.

Linux ve Windows'daki GUI sistemleri, uygulamaların "doğal" görünmesi ve platforma iyi uyması açısından biraz daha esnektir. Ancak, esasen açık arayüz kılavuzlarının bulunmaması ve uygulama geliştiricilerin tarihsel olarak mevcut olanları görmezden gelmeye istekli olduklarından sorumluyum. Birçok Mac kullanıcısı , tutarlı kullanıcı arayüzü nedeniyle Mac'i tercih eder .

GUI katmanını belirli bir platforma uyarlamanız (ve muhtemelen tamamen Objective-C gibi farklı bir dilde yeniden yazmanız) gerektiğini göz önünde bulundurarak, .NET platformunu yalnızca kütüphane kodu için kullanmanıza izin verir. Ve sonra bence C ++ üzerinden C # için çok net bir kazanç yok.

Hızlı uygulama geliştirme için, C # ve .NET'ten daha iyi birkaç alternatif vardır. Bir uygulamayı hızlı bir şekilde göndermek ve hemen çeşitli platformlarda kullanılabilir hale getirmek kesinlikle bir iş avantajıdır. Ancak kullanıcıyı gerçekten tatmin etmeyi amaçlayan gerçek çok platformlu uygulamalar için, mutlaka gümüş kurşun çözümü değildir.


9
".NET ile oluşturduğunuz Mac uygulamaları hiçbir zaman yerel Mac OS X uygulamalarına benzemez, ...". Sizi MonoMac ile tanıştırayım: mono-project.com/MonoMac

3
@Dimitris: Diyelim ki en iyi ihtimalle şüpheciyim. Qt halkı bunu denedi ve insanlar hala başardıkları konusunda yukarı ve aşağı atlıyorlar. Yanlışlar: Yapmadılar. Qt uygulamaları do not doğal OS X uygulamaları gibi görünüyor. Onlar sadece ... yanlış. Önerdiğiniz bağlantıda ekran görüntüsü görmüyorum, ancak kullanıcı arayüzünü mükemmel hale getirseler bile, yine de tüm davranış ve uygulama ayrıntılarını kaçırıyor olacaklar. Yine de referans için teşekkürler. Bu iyimser olmak için bir şey.
Cody Gray

7
@Cody Gray: Bir çapraz platform API'sı olmadığı için MonoMac yerel görünüyor ve davranıyor, ancak bunun yerine temeldeki Cocoa API'sını doğal olarak sarar. Yerel görünüyor çünkü yerel.

1
@Cody Gray: MonoMac, Mac için MonoTouch'ın iOS'a ne olduğunu. Yerel uygulamalar yazabilirsiniz, Obj-C yerine C # kullanırsınız. "WinForms veya Gtk'nin Mac'te iyi görünmesini sağlayın" değildir.

2
Sadece bir robotik kontrol sistemi ile arayüz oluşturan iPad ve Windows Phone, ASP.NET MVC3 ve NT Services'i kapsayan bir sistem oluşturmanın tam ortasındayken yukarıdaki konuşmada chip-in yapmak istedim. Cody'nin yukarıda belirttiği gibi Mono, MonoDroid, MonoTouch vb. C # 'da kod yazmanın bir yoludur; seçilen platformun "yerel" API'lerini ... ve aynı zamanda çoğu yerel C / C ++ / ObjC kodunun doğasında bulunan birçok bellek yönetimi sorununu önler.
Richard Turner

6

Microsoft .NET resmi CLR, DLR, BCL, CLI ve CLS uygulamasıdır. Diğer şirketler, gruplar, topluluklar veya çalışma grupları, Microsoft'un en yeni çerçeve ve dil sürümünün 1: 1 uygulamasına sahip olacak şekilde ilişkili değildir.

Temel olarak, somut bir projede hangi dil ve çerçeve özelliklerinden yararlanmak istediğinizi gözden geçirmeniz ve bunların resmi olmayan .NET uygulamalarında mevcut olup olmadığını kontrol etmeniz gerekir.

Bir kez derleme çözümü bekliyorsanız ve her yere dağıtıyorsanız yanılıyorsunuz: bir örnek olay incelemesi yapmanız gerekir.


Bu bir sürü TLA !
Tamlyn

@tamlyn yeah hahahaha
Matías Fidemraizer

Artık .NET'in çok fazla açık kaynak olduğu, işler değişti ....
Ian

@Ian Sure .......
Matías Fidemraizer

2

XBOX ve Windows makinelerinde çalışan oyunlarda C # kullanıyorum, robotik çözümler için Compact Framework uygulamalarında kullanıyorum, iPad geliştirme için MonoTouch kullanıyorum, Linux üzerinde çalışan bazı web uygulamaları ve diğer birkaç çözüm var. Genellikle işinizi belirli bir platformda yapmanın bir yolu vardır. Çekirdek katman çoğu için aynıdır (gerçekten vaka çalışması gereklidir). Sorun - ve ben bunu bir seri olarak görüyorum - geliştirme ortamıdır. Visual Studio ve özelliklerine alışkınım. Ancak MonoDevelop, örneğin beni deli ediyor.


1
Novell kısa süre önce VS'de Mono kodu geliştirebilmeniz için A VS 2010 uzantısını yayınladı.
Morgan Herlocker
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.