Apakah Mono mendapat tempat di dunia usaha?

22

Untuk solusi berbasis perusahaan, terkadang .NET adalah pilihan terbaik. Bagaimana Mono melihat perusahaan yang harus menggunakan Linux (atau lebih suka menggunakan Linux)? Dengan asumsi bahwa pengembang tidak masalah dan mereka akrab dengan .NET / Mono dan pesaing lain yang mungkin seperti Java.

Apakah perusahaan menengah / besar menjalankan Mono di server mereka sebagai kebalikan dari teknologi seperti Java? Apakah Anda tahu ada perusahaan semacam itu?

Daniel
sumber

Jawaban:

22

Kami menggunakannya di perusahaan besar tempat saya bekerja. Kami tidak merencanakannya sejak awal proyek tetapi hanya berhasil seperti itu.

Kami memiliki proyek internal yang kami kembangkan di .NET, begitu kami masuk ke UAT, pemilik bisnis ingin membuka aplikasi hingga beberapa pelanggan dan juga staf internal. Sebagian besar server eksternal (DMZ) kami berbasis Linux dan server Windows yang ada di DMZ tidak cocok (terlalu dekat dengan kapasitas). Alih-alih membeli perangkat keras baru, seseorang menyarankan untuk menjalankan aplikasi di Mono. Kami menghabiskan beberapa hari melakukan pengujian kami sendiri dan kemudian merilis aplikasi ke QA, lalu UAT. Kami tidak punya masalah.

Jika kami telah diberikan persyaratan pada awal proyek, kami mungkin tidak memilih untuk menulisnya di .NET, tetapi ini adalah salah satu hasil yang bagus untuk perubahan persyaratan yang sangat, sangat terlambat. Sekarang kami cukup yakin bahwa jika muncul lagi kami dapat berhasil digunakan untuk Mono (walaupun saya pikir pada akhirnya kami harus men-tweak beberapa kode, saya pikir kami beruntung).

Walter
sumber
5
Kisah perang yang bagus.
15

Saya belum pernah menggunakan mono secara komersial, tetapi saya menggunakannya secara pribadi, karena saya bekerja di perusahaan Windows, tetapi secara pribadi adalah pengguna Linux (jadi saya dapat menggunakan kembali apa yang saya lakukan di tempat kerja).

Secara keseluruhan, saya setuju dengan Miguel de Icaza yang mengatakan:

  • 25% dari aplikasi .NET bekerja di luar kotak dengan mono
  • 25% lainnya dapat dibuat untuk bekerja dalam satu hari atau kurang
  • selanjutnya 25% dapat dibuat untuk bekerja dalam seminggu
  • 25% terakhir membutuhkan penulisan ulang lengkap dari aplikasi (WinForms / COM)

Mono bekerja cukup baik, tetapi ada beberapa masalah:

  • Dukungan VB.NET hanya untuk .NET <= 2.0
  • Otentikasi Windows tidak diterapkan
  • WPF tidak diterapkan
  • Dukungan WCF tidak lengkap
  • Kerangka Entitas tidak diterapkan dan tidak ada rencana untuk diterapkan
  • "Komponen Web ASP.NET" tidak diterapkan
  • Tidak ada dukungan COM-interop
  • Koneksi Sybase untuk versi 15.5 (terbaru) tidak berfungsi
  • Bug dan ketidaklengkapan di pustaka kelas C # (mis. XML bermasalah di mono <2.6)
  • Kontrol browser web Linux memerlukan GTK #

Maka masalah kecil:

  • Formulir Windows berfungsi, tetapi tidak selalu disajikan dengan benar
  • MonoDevelop tidak dapat mendesain formulir windows
  • Debugging 'step through' MonoDevelop tidak benar-benar berfungsi
  • Mono-Service mogok setelah 5 jam ...

Bentuk apa yang bisa saya katakan:

  • Fungsi WebServices sangat baik
  • Jika Anda menjalankan Aplikasi Web, itu berfungsi dengan baik (jika tidak menggunakan WebParts).
  • Jika Anda menjalankan WindowsForms, itu tidak akan selalu terlihat sangat bagus (untuk sedikitnya).
  • Tidak ada kerjaan yang setara untuk Layanan Pelaporan Microsoft (Pelaporan FY adalah hal yang paling dekat dengannya, tetapi lambat, bermasalah, dan sangat tidak lengkap, ditambah tidak ada aktivitas sejak lebih dari setahun)
  • Anda akan mengalami masalah jika Anda perlu membuat dokumen Word atau Excel.

Jika Anda ingin mengembangkan .NET di Linux

  • Anda dapat mengembangkan ASP.NET di sana (debugging & langkah demi langkah bekerja sangat buruk)
  • Anda tidak dapat benar-benar mengembangkan WinForms di Linux
  • Anda perlu menggunakan GTK # alih-alih WinForms

Dengan kata lain:

  • Mono memiliki tempatnya dalam menjalankan aplikasi web dan WebServices dan MailServers.
  • Tapi itu tidak layak untuk menjalankan aplikasi WindowsForms, Anda perlu menulis aplikasi dengan GTK #
  • Itu tidak memiliki solusi pelaporan dan dukungan format file MS (atau perpustakaan kerja karena itu)



Sunting (pembaruan 2015):
Saya ingin menambahkan bahwa sekarang, proses debug 'step through' bekerja dengan sangat baik, dan Anda dapat menggunakan MonoDevelop untuk mengembangkan aplikasi web di Linux, bahkan dengan dependensi nuGet. Masalah dengan pustaka Excel dan Word juga hilang, dan kerangka kerja entitas sekarang open-source. Sisanya cukup "sebagaimana adanya" (tidak tahu apakah layanan tunggal sudah diperbaiki, tapi saya harap begitu).
Apa yang telah ditingkatkan juga adalah bahwa Anda sekarang dapat memiliki paket saat ini untuk distro Anda, artinya Anda tidak perlu menunggu sampai rilis berikutnya, katakanlah Debian / Ubuntu, sampai Anda mendapatkan versi mono terbaru (tanpa harus mengkompilasi sendiri ). Ini adalah waktu yang lebih aman.

Juga, dengan rilis Roslyn, dukungan VB.NET akan menjadi jauh lebih baik dalam waktu dekat.

Kebingungan
sumber
Saya tidak mengalami kesulitan dengan dukungan WinForms di Mono. Memang, hasilnya bukan karya seni, tapi itu karena itu tidak berjalan di Windows.
Robert Harvey
3
Catatan: framework entitas sekarang open source. tim mono mulai memasukkannya dalam versi pengembangan saat ini
linquize
@Robert Harvey: Grantet, banyak dari pekerjaan dasar (mis. Tombol, treeview, teks-filed, label, bahkan datagrid), tetapi segera setelah Anda menambahkan splitter, itu "Tidak diterapkan pengecualian".
Quandary
14

Perusahaan saya mengembangkan aplikasi desktop sebagian besar-.NET dan merilis versi Linux yang berjalan di Mono, jadi saya akan mengatakan ya, pasti ada tempat bagi Mono dalam solusi berbasis perusahaan untuk Windows.

Kami mengemas Mono dengan pemasangan aplikasi kami, tidak mengharuskan pengguna untuk menginstalnya secara terpisah (dan kami juga mengontrol versi ini).

Adam Lear
sumber
Ya, Anda harus mengontrol versi mono mana yang akan digunakan. Yang datang dengan distro linux biasanya cukup lama sehingga memiliki lebih banyak bug. Kami mengirimkannya dari cabang git mono-2-10 dari waktu ke waktu untuk mengurangi bug dan kami tahu bug mana yang mungkin diderita program kami.
linquize
3

Saya pikir perhatian utama banyak perusahaan akan miliki adalah masalah lisensi antara Mono dan Microsoft. Pemahaman saya adalah bahwa sementara Microsoft secara resmi setuju bahwa Mono dapat menggunakan teknologi inti .NET, tetapi di luar itu, termasuk tentang hal-hal yang sangat umum digunakan, lebih merupakan wilayah abu-abu secara hukum dengan Microsoft menyatakan tidak ada posisi yang kuat di satu sisi atau lain.

Itu jelas membuka kemungkinan bahwa di telepon mereka akan menuntut biaya lisensi atau hanya menuntut pelanggaran paten. Tidak mungkin keduanya akan terjadi dari cara mereka berperilaku sekarang, tetapi sebagian besar perusahaan tidak menyukai ketidakpastian semacam itu, terutama tidak ketika datang dengan potensi kewajiban dan biaya yang melekat.

Jon Hopkins
sumber
3
Pemahaman saya adalah bahwa spesifikasi CLR / C # tidak berpemilik dan Mono mengimplementasikan spesifikasi tersebut tanpa banyak (jika ada) bergantung pada sumber .NET yang asli.
Adam Lear
5
@ Anna: Saya mungkin tidak ahli dalam hal-hal ini, tetapi saya cukup yakin bahwa Mono masih berisiko, terlepas dari seberapa sedikit ketergantungannya pada sumber .NET yang asli. Ini karena paten Microsoft (yang dapat diberlakukan dengan atau tanpa Mono menyalin kode Microsoft). Saya pikir FSF dengan ringkas merangkum masalah di sini: fsf.org/news/2009-07-mscp-mono
Adam Paynter
3

Saya tidak berpikir ada banyak ruang untuk Mono di sana:

Java sudah menjadi platform di Linux, dengan komunitas besar dan berlimpahnya perpustakaan dan alat berkualitas perusahaan, baik komersial maupun open-source. Saya tidak melihat alasan untuk memilih Mono dari Jawa ketika memulai proyek baru yang menargetkan Linux (atau Mac), kecuali ada keadaan tertentu (lihat jawaban Walter).

Mladen Jablanović
sumber
7
Salah satu alasannya adalah bahwa C # hanyalah bahasa yang lebih matang, lebih dirancang daripada Java dan lebih mudah dan lebih bebas untuk bekerja dengan. Itu terdengar seperti alasan yang sangat meyakinkan bagi saya.
Konrad Rudolph
3
@ Konrad: Itu berlaku untuk versi C # baru-baru ini (mereka memulai hampir sama, tetapi berevolusi jauh lebih cepat daripada Java). Sayangnya, pengalaman saya memberi tahu saya bahwa perusahaan jarang memilih bahasa berdasarkan kemampuannya. Di sisi lain, keduanya .NET dan JVM menawarkan bahasa alternatif, bisa dibilang dirancang lebih baik daripada C # dan Java, jadi saya tidak akan benar-benar menyukai satu sama lain berdasarkan itu.
Mladen Jablanović
Seandainya Mono tersedia sebelumnya, kami akan mempertimbangkan .Net / Mono untuk lingkungan kami. Namun, ternyata tidak, jadi sekarang kita berada di jalur Java. Kami mungkin melakukan beberapa pekerjaan di .Net / Mono, tetapi lingkungan utama adalah Java dan diharapkan tetap seperti itu untuk beberapa waktu. Menjadi seseorang yang bekerja di keduanya, saya tidak mendapatkan bashing Java dari C # ers. Mereka sangat mirip. Bahasa C # sedikit lebih baik, tetapi perpustakaan Java dan bahasa JVM tambahan lebih baik. Secara keseluruhan platform, mereka hampir sama. Hal-hal perpustakaan lebih penting bagi saya, jadi saya bahkan mungkin memberi anggukan kepada Jawa.
Brian Knoblauch
1
Mono memungkinkan untuk menggunakan C # di Linux. C # memiliki begitu banyak gula sintaksis untuk memfasilitasi pengembangan.
linquize
2015: Java adalah warga negara kelas dua di OS X (Mac). Mono bekerja dengan indah di OS X (meskipun WinForms masih lambat dan jelek). Dan dengan OmniSharp, Anda bisa mendapatkan semua jenis alat pengeditan berkualitas IDE di editor non-IDE (Sublime, Atom, Vim, Emacs).
Kent A.
1

Sebelum menggunakan mono, kita harus memastikan tidak ada hardcoded '\' untuk string path (gunakan Path.Combine ()) atau awalan "COM" (cukup terima string daripada integer) karena port serial ada dalam program.

Apa yang bekerja dengan baik:

  • Aplikasi Konsol
  • aplikasi website

Masalah yang ditemui:

  • WinForms tidak stabil: crash secara acak.
  • Dukungan bahasa: Komunitas mungkin tidak tahu setiap bahasa dengan baik, terutama dialek untuk beberapa negara / kota. Lokal / koleksi yang sesuai mungkin terlewatkan.
  • Metode yang jarang digunakan mungkin memiliki perilaku yang tidak kompatibel dengan .NET.
  • xsp hanya mendukung HTTP 1.0. Saat ini tidak memiliki dukungan HTTP 1.1.
  • Kontrol browser tidak berfungsi dengan baik.

Lebih baik menggunakan mono secara internal (seperti sistem ERP) sebagai lingkungan yang terkontrol.

linquize
sumber
0

Mono adalah alternatif yang bagus jika Anda sudah memiliki kode .NET yang perlu dijalankan di lingkungan lintas platform. Mono digunakan cukup luas di dunia bisnis khusus untuk menyelesaikan masalah ini.

Saya akan membantah menggunakan keberadaan Mono sebagai alasan untuk memulai proyek dengan .NET yang Anda tahu harus cross-platform. Alasan untuk ini adalah jurang antara state-of-the-art dengan .NET versus kecepatan pengembangan Mono.

Di sisi lain, jika Anda tidak berniat untuk menggunakan Mono dalam proyek masa depan, saya akan memperingatkan Anda untuk menargetkan kerangka Mono dan berjalan di NET sebagai alternatif sekunder karena Mono sebagian besar merupakan bagian dari fungsionalitas NET penuh.

tylerl
sumber