Mono'nun girişim dünyasında bir yeri var mı?


22

Kurumsal Windows tabanlı çözümler için, .NET bazen en iyi seçimdir. Mono Linux kullanmak zorunda olan (ya da Linux kullanmayı tercih eden) işletmelere nasıl bakıyor? Geliştiricilerin bir sorun olmadığını ve .NET / Mono ile Java gibi diğer olası rakipleri tanıdıklarını varsayarsak.

Bir orta / büyük şirket Mono'yu sunucularında Java gibi teknolojilerin tersine çalıştırabilir mi? Böyle bir firma biliyor musunuz?

Yanıtlar:


22

Çalıştığım büyük şirkette kullandık. Projenin başlangıcından itibaren planlamadık ama bu şekilde başladı.

.NET'te geliştirdiğimiz bir iç projemiz vardı, UAT'a girdiğimizde, işletme sahibi uygulamayı bazı müşterilere ve dahili personele açmak istedi. Harici (DMZ) sunucularımızın çoğu Linux tabanlıdır ve DMZ’deki Windows sunucuları uygun değildi (kapasiteye çok yakın). Yeni donanım satın almak yerine, biri uygulamayı Mono'da çalıştırmayı önerdi. Kendi testimizi yapmak için birkaç gün harcadık ve ardından QA'ya, sonra da UAT'ye uyguladık. Sorun yaşamadık.

Proje başlangıcında gereksinim bize bildirilmişse, .NET'te yazmayı seçmemiş olabilirdik, ancak bu çok, çok geç bir gereksinim değişikliğinin güzel bir sonucuydu. Şimdi tekrar ortaya çıkarsa Mono’ya başarılı bir şekilde yerleştirebileceğimize eminiz (nihayetinde bazı kodları değiştirmek zorunda kalacağımızı düşünürsem de, şanslı olduğumuzu düşünüyorum).


5
Güzel savaş hikayesi.

15

Mono'yu ticari olarak kullanmamıştım, ancak özel olarak kullanıyorum, çünkü bir Windows şirketinde çalışıyorum, ancak özel olarak bir Linux kullanıcısıyım (bu yüzden işyerinde yaptığım şeyi yeniden kullanabilirim).

Genel olarak, şöyle diyor Miguel de Icaza ile aynı fikirdeyim:

  • .NET uygulamalarının% 25'i mono ile kutunun dışında çalışıyor
  • % 25 oranında bir gün veya daha kısa sürede çalışmak için yapılabilir
  • bir hafta içinde% 25 daha çalışabilir
  • Son% 25, ​​uygulamanın tamamen yeniden yazılmasını gerektirir (WinForms / COM)

Mono oldukça iyi çalışıyor, ancak bazı sorunlar var:

  • VB.NET sadece .NET için destek <= 2.0
  • Windows kimlik doğrulaması uygulanmadı
  • WPF uygulanmadı
  • WCF desteği eksik
  • Entity Framework uygulanmadı ve uygulama planları yok
  • "ASP.NET Web Parts" uygulanmadı
  • COM-birlikte çalışma desteği yok
  • 15.5 sürümü için Sybase bağlantısı (en yeni) çalışmıyor
  • C # sınıfı kütüphanesindeki hatalar ve eksiklikler (örneğin, XML mono <2.6'da buggy idi)
  • Linux web tarayıcı kontrolü GTK # gerektirir

Sonra küçük sorunlar:

  • Windows Forms çalışır, ancak her zaman düzgün şekilde oluşturulmaz
  • MonoDevelop, Windows formları tasarlayamaz
  • MonoDevelop 'adım adım' hata ayıklama gerçekten işe yaramıyor
  • Mono-Service 5 saat sonra çöküyor ...

Söyleyebileceğim formu oluştur:

  • Web Servisleri mükemmel çalışıyor
  • Bir Web Uygulaması çalıştırırsanız, (WebParts kullanmıyorsa) oldukça iyi çalışır.
  • WindowsForms çalıştırıyorsanız, her zaman çok hoş görünmeyecektir (en azını söyleyiniz).
  • Microsoft Reporting Service için çalışma eşdeğeri yok (FYIreporting buna en yakın şey, ancak yavaş, hatalı ve çok eksik, artı bir yıldan beri hiçbir faaliyet yok)
  • Word veya Excel belgeleri oluşturmanız gerekirse sorun yaşayacaksınız.

Linux üzerinde .NET geliştirmek istiyorsanız

  • Orada ASP.NET geliştirebilirsiniz (hata ayıklama ve adım adım çok kötü çalışır)
  • Linux'ta WinForms'i gerçekten geliştiremezsiniz
  • WinForms yerine GTK # kullanmanız gerekir

Diğer bir deyişle:

  • Mono, web uygulamalarını ve WebServisleri ve MailServisleri çalıştıran bir yere sahiptir.
  • Ancak, WindowsForms uygulamalarını çalıştırmak uygun değildir, GTK # ile uygulama yazmanız gerekir.
  • Bir raporlama çözümü ve MS dosya formatı desteği (veya bu nedenle çalışan kütüphanelerden) yoksundur



Düzenleme (2015 güncelleme):
Şimdiye kadar 'adım adım' hata ayıklamanın mükemmel şekilde çalıştığını ve Linux'ta web uygulamalarını geliştirmek için nuGet bağımlılıklarıyla bile MonoDevelop'u kullanabileceğini eklemek istedim. Excel ve Word kitaplıklarıyla ilgili problem de ortadan kalktı ve varlık çerçevesi şimdi açık kaynaklı. Gerisi "olduğu gibi" dır (mono-servisin sabit olup olmadığını bilmiyorum, ama umarım).
Bunun da artması, şimdi dağıtımınız için mevcut paketler alabilmenizdir, yani bir sonraki sürümüne kadar beklemenize gerek kalmaz, diyor Debian / Ubuntu, en son mono sürümünü alana kadar (kendiniz derlemek zorunda kalmadan) ). Bu önemli bir zaman tasarrufu.

Ayrıca, Roslyn'in piyasaya sürülmesi ile birlikte, VB.NET desteğinin yakın gelecekte daha iyi olması gerekir.


Mono'daki Winforms desteği ile hiç zorluk yaşamadım. Verilmiş, sonuç tam olarak sanat eseri değil, bunun nedeni Windows'ta çalışmamasıdır.
Robert Harvey

3
Not: varlık çerçevesi şimdi açık kaynaktır. Mono ekibi mevcut geliştirme sürümüne dahil etmeye başladı
Ağustos'ta

@Robert Harvey: Grantet, temel işlerin çoğu (örneğin, düğme, treeview, metin dosyaları, etiketler, hatta datagrids), ancak bir ayırıcı eklediğiniz anda, "Uygulanmayan istisna" dır.
Quandary

14

Şirketim, çoğunlukla - net bir masaüstü uygulaması geliştiriyor ve Mono'da çalışan Linux versiyonlarını yayınlıyor, bu yüzden evet diyeceğim, Mono'nun kurumsal Windows tabanlı çözümlerinde kesinlikle bir yer var.

Mono'yu uygulamamızın kurulumuyla paketliyoruz, kullanıcıların ayrı ayrı yüklemelerini istemiyoruz (ve böylece sürümü de kontrol ediyoruz).


Evet, hangi mono versiyonu kullanacağınızı kontrol etmeniz gerekiyor. Biri Linux dağıtımları ile birlikte gelir, genellikle oldukça eskidir, bu yüzden daha fazla böcek vardır. Böcekleri azaltmak için zaman zaman git mono-2-10 şubesinden bu programı gönderiyoruz ve programımızın hangi olası hataları yaşayabileceğini biliyoruz.
linquize

3

Bence çoğu şirketin sahip olacağı asıl mesele Mono ve Microsoft arasındaki lisans sorunları. Anladığım kadarıyla, Microsoft Mono'nun çekirdek .NET teknolojilerini kullanabileceğini resmen kabul etmiş olsa da, bunun dışında, yaygın olarak kullanılan şeyler de dahil olmak üzere, yasal olarak Microsoft'un bir şekilde ya da hiç kesin bir konumu olmadığını belirten gri bir alan olduğu belirtiliyor. diğer.

Bu açık bir şekilde, lisans ücretlerini talep etme ya da sadece patent ihlali için dava açmaları olasılığını açık bırakmaktadır. Her ikisinin de şu anki davranış biçimlerinden kaynaklanması muhtemel değildir, ancak çoğu şirket bu tür belirsizlikten hoşlanmaz, özellikle de potansiyel yükümlülükler ve maliyetler söz konusu olduğunda değil.


3
Anladığım kadarıyla CLR / C # spec tescilli değildir ve Mono bu spesifikasyonu orijinal .NET kaynağına (eğer varsa) güvenmeden uygular.
Adam Lear

5
@Anna: Bu konularda uzman olmayabilirim, ancak Mono'nun orijinal .NET kaynağına ne kadar güvendiğine bakılmaksızın hala risk altında olduğundan eminim. Bunun nedeni Microsoft'un patentleridir (Mono'nun Microsoft'un kodunu kopyalaması veya kopyalaması olmadan uygulanabilir). Bence FSF, sorunu burada kısaca özetledi: fsf.org/news/2009-07-mscp-mono
Adam Paynter

3

Orada Mono için fazla yer olduğunu sanmıyorum:

Java, hem ticari hem de açık kaynak kodlu büyük bir topluluk ve çok sayıda kurumsal kalite kütüphanesi ve aracıyla Linux üzerine kurulmuş bir platformdur. Belirli bir durum söz konusu olmadıkça, Linux (veya Mac) hedefli yeni bir projeye başlarken Java üzerinden Mono'yu seçmem için hiçbir sebep göremiyorum (bakınız Walter'ın cevabı).


7
Bunun bir nedeni, C # 'nın Java'dan daha olgun, daha iyi tasarlanmış bir dil olması ve çalışması daha kolay ve zahmetsiz olmasıdır. Bu bana çok zorlayıcı bir sebep gibi geliyor .
Konrad Rudolph

3
@Konrad: Bu son C # sürümleri için de geçerlidir (aynı şekilde başladılar, ancak Java'dan çok daha hızlı gelişiyorlar). Maalesef, deneyimim bana işletmelerin nadiren kendi dillerinden bir dil seçtiklerini söylüyor. Öte yandan, hem .NET hem de JVM, hem C # hem de Java'dan daha iyi tasarlanmış, muhtemelen daha iyi tasarlanmış alternatif diller sunuyor.
Mladen Jablanović

Mono daha önce mevcut olsaydı, çevremiz için Net / Mono olarak değerlendirirdik. Ancak, değildi, bu yüzden şimdi Java yolundayız. Net / Mono'da bazı işler yapabiliriz, ancak birincil ortam Java'dır ve uzun süre bu şekilde kalması beklenir. Her ikisinde de çalışan biri olarak, Java'yı C # ’lardan dağıtamıyorum. Çok benzerler. C # dili biraz daha iyi, ancak Java kütüphaneleri ve ekstra JVM dilleri daha iyi. Genel olarak platformlar olarak neredeyse eşitler. Kütüphane işleri benim için daha önemli, bu yüzden başını Java'ya bile verebilirim.
Brian Knoblauch,

1
Mono Linux'ta C # kullanmanıza izin veriyor. C # gelişimi kolaylaştırmak için çok fazla sözdizimsel şekere sahiptir.
14

2015: Java, OS X'te (Mac) ikinci sınıf bir vatandaş. Mono OS X'de çok iyi çalışıyor (WinForms hala yavaş ve çirkin olsa da). OmniSharp ile IDE olmayan editörlerde (Sublime, Atom, Vim, Emacs) her türlü IDE kalitesinde düzenleme aracını alabilirsiniz.
Kent A.

1

Mono kullanmadan önce, programda seri port için yol dizgisi ('Path.Combine ()) veya "COM" öneki (tamsayı yerine sadece dizgiyi kabul et)) sabit kodlanmış' \ 'olmamamız gerekir.

Ne işe yarar:

  • Konsol Uygulaması
  • internet uygulaması

Karşılaşılan sorunlar:

  • WinForms kararlı değil: rastgele çöküyor.
  • Dil desteği: Topluluk, özellikle bazı ülkelerin / şehirlerin lehçelerinin dilini iyi bilmiyor olabilir. İlgili yerel ayarlar / harmanlamalar kaçırılabilir.
  • Nadiren kullanılan yöntemlerin .NET ile uyumsuz davranışları olabilir.
  • xsp yalnızca HTTP 1.0'ı destekler. Şu anda HTTP 1.1 desteği yoktur.
  • Tarayıcı kontrolü iyi çalışmıyor.

Monoyu dahili olarak (ERP sistemi gibi) kontrollü bir ortam olarak kullanmak daha iyidir.


0

Mono, platformlar arası bir ortamda çalıştırılması gereken .NET kodunuz varsa, harika bir alternatiftir. Mono özellikle bu sorunu çözmek için iş dünyasında oldukça yaygın bir şekilde kullanılıyor.

Mono'nun varlığını, .NET ile platformlar arası olması gerektiğini bildiğiniz bir projeye başlamak için bir bahane olarak kullanmaya karşı çıkacağım. Bunun nedeni, en son teknoloji ile .NET ile Mono'nun geliştirme hızları arasındaki gecikmedir.

Öte yandan, Mono'yu gelecekteki bir projede kullanmayı düşünürseniz , Mono çerçevesini hedeflemeniz ve .NET'te ikincil bir alternatif olarak çalıştırmanız konusunda sizi uyarırım çünkü Mono büyük ölçüde tam olarak işlevselliğin bir alt kümesidir.

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.