Apakah c # sebenarnya bahasa multi platform?


20

C # (dan platform .net secara umum) sepertinya menjadi opsi yang baik dari aplikasi multi-penargetan:

  • Kerangka kerja MS .net resmi: pengembangan windows blow penuh, dev asp.net, Dev ponsel Windows, dll.
  • mono dan semua turunannya: monotouch, monodroid: seluruh dunia. Alat ini sekarang RTM.

  • Apakah ini berarti bahwa C # menjadi bahasa yang baik untuk menargetkan platform yang paling populer: desktop, web, dan seluler?

  • Apakah masih lebih baik menggunakan bahasa "asli" platform target (tujuan C, Java, dll.)
  • Apakah ini hanya layar asap dan hanya bahasa pemasaran?

Harap dicatat bahwa saya benar-benar sadar bahwa saya tidak akan dapat menyalin / menempelkan kode antar platform. Tapi saya yakin lapisan bawah aplikasi (model, bisnis, dll) dapat digunakan kembali, tapi saya tahu saya harus menyesuaikan lapisan yang lebih tinggi (Gui, dll.) Ke platform. Tujuan saya lebih fokus pada keterampilan yang dibutuhkan daripada berbagi kode teknis.

[sunting] Saya adalah pengembang # ac di sebuah perusahaan yang menggunakan c # secara masif. Itu sebabnya saya berbicara tentang c # dalam rencana untuk memperluas jangkauan platform target di perusahaan saya.

Jawaban:


12

Ya, secara umum, .NET Framework sangat bagus untuk aplikasi yang menargetkan berbagai perangkat. Tapi ini tidak unik untuk .NET; Jawa sudah melakukan itu jauh sebelumnya. Hal yang perlu diingat adalah bahwa tidak ada alternatif nyata untuk alat asli untuk platform tertentu.

Aplikasi Mac yang Anda buat dengan .NET tidak akan pernah terlihat seperti aplikasi Mac OS X asli, dan itu dianggap masalah oleh sebagian besar pengguna OS X. Itu mungkin tidak penting bagi Anda secara strategis, tergantung pada apakah model bisnis Anda menghargai memaksimalkan saturasi daripada memaksimalkan kepuasan pengguna, tetapi itu tentu sesuatu yang perlu diingat ketika membuat pilihan.

Sistem GUI di Linux dan Windows agak lebih fleksibel dalam hal aplikasi yang terlihat "asli" dan cocok dengan platform. Tapi saya menyalahkan itu terutama karena kurangnya pedoman antarmuka yang jelas dan fakta bahwa pengembang aplikasi secara historis bersedia mengabaikan yang ada. Banyak pengguna Mac lebih memilih Mac karena antarmuka pengguna yang konsisten.

Menimbang bahwa Anda harus mengadaptasi lapisan GUI ke platform spesifik (dan mungkin menulis ulang sepenuhnya dalam bahasa yang berbeda, seperti Objective-C), yang membuat Anda memanfaatkan platform .NET hanya untuk kode perpustakaan. Dan kemudian tidak ada kemenangan yang sangat jelas untuk C # atas C ++, menurut saya.

Untuk pengembangan aplikasi yang cepat, ada beberapa alternatif yang lebih baik daripada C # dan .NET. Dan mendorong aplikasi keluar dengan cepat dan segera tersedia di berbagai platform tentu merupakan keuntungan bisnis. Tetapi untuk aplikasi multi-platform sejati yang bertujuan untuk benar-benar memuaskan pengguna, itu belum tentu solusi terbaik.


9
"Aplikasi Mac yang Anda buat dengan .NET tidak akan pernah terlihat seperti aplikasi Mac OS X asli, ...". Biarkan saya memperkenalkan Anda ke MonoMac: mono-project.com/MonoMac

3
@ Dimitris: Anggap saja saya skeptis, paling banter. Orang-orang Qt mencoba ini, dan orang-orang masih melompat-lompat tentang pencapaian mereka. Mereka salah: mereka tidak. Aplikasi Qt tidak terlihat seperti aplikasi OS X asli. Mereka hanya ... salah. Saya tidak melihat tangkapan layar di tautan yang Anda sarankan, tetapi meskipun mereka mendapatkan UI yang sempurna, mereka masih akan kehilangan semua perilaku dan detail implementasi. Terima kasih untuk rujukannya. Ini sesuatu yang harus optimis.
Cody Grey

7
@Cody Grey: MonoMac terlihat dan bertindak asli karena itu bukan platform lintas API, tetapi malah membungkus Cocoa API yang mendasarinya. Itu terlihat dan bertindak asli karena itu asli.

1
@Cody Grey: MonoMac adalah untuk Mac apa MonoTouch adalah untuk iOS. Anda dapat menulis aplikasi asli, Anda hanya menggunakan C # daripada Obj-C. Itu bukan "membuat WinForms atau Gtk terlihat bagus di Mac".

2
Hanya ingin ikut campur dalam percakapan di atas karena saya tepat di tengah membangun sistem yang mencakup iPad & Windows Phone, ASP.NET MVC3, dan Layanan NT yang berinteraksi dengan sistem kontrol robotika. Mono, MonoDroid, MonoTouch, dll., Seperti yang ditunjukkan Cody di atas, adalah cara untuk menulis kode dalam C # yang memungkinkan Anda mengambil keuntungan dari kekuatan C # dan Framework .NET (termasuk Linq) sambil juga menikmati akses tanpa batas ke API "asli" platform yang dipilih ... sementara juga menghindari banyak masalah manajemen memori yang melekat pada sebagian besar kode C / C ++ / ObjC asli.
Richard Turner

6

Microsoft .NET adalah implementasi CLR, DLR, BCL, CLI, dan CLS resmi. Perusahaan, grup, komunitas, atau kelompok kerja lain tidak terkait dengan Microsoft dengan cara yang dapat menerapkan 1: 1 kerangka kerja terbaru dan versi bahasa.

Pada dasarnya, Anda perlu meninjau bahasa dan fitur kerangka mana yang ingin Anda manfaatkan dalam proyek konkret dan periksa apakah ini ada dalam implementasi .NET tidak resmi.

Jika Anda mengharapkan solusi kompilasi dan mendistribusikan di mana-mana, Anda salah: Anda perlu membuat studi kasus.


Itu banyak TLA !
Tamlyn

@tamlyn yeah hahahaha
Matías Fidemraizer

Sekarang begitu banyak .NET adalah open source, segalanya telah berubah ....
Ian

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

2

Saya menggunakan C # pada game yang berjalan di mesin XBOX dan Windows, saya menggunakannya di aplikasi Compact Framework untuk solusi robotika, saya menggunakan MonoTouch untuk pengembangan iPad, saya memiliki beberapa aplikasi web yang berjalan di Linux dan beberapa solusi lainnya. Biasanya ada cara bagaimana melakukan hal Anda pada platform yang diberikan. Lapisan inti hampir sama untuk sebagian besar dari mereka (studi kasus memang diperlukan). Masalahnya - dan saya menganggapnya sebagai satu seri - adalah lingkungan pengembangan. Saya sudah terbiasa dengan Visual Studio dan fitur-fiturnya. Tapi MonoDevelop misalnya membuat saya gila.


1
Novell baru-baru ini merilis ekstensi VS 2010 sehingga Anda dapat mengembangkan kode Mono dalam VS.
Morgan Herlocker
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.