Web ile masaüstü geliştirme - web geliştirme daha mı kötü? [kapalı]


29

Uzun zamandır devam eden bir masaüstü geliştirici olarak ilk büyük ölçekli web uygulamamıza bakarken, web geliştirmenin artıları ve eksileri nelerdir?

Bir web uygulaması geliştirmek, masaüstü uygulaması geliştirmekten çok daha mı kötü? Örneğin, daha sıkıcı mı yoksa sinir bozucu mu? Pazara çıkma zamanı çok mu kötü? Web platformu aşırı derecede sınırlı mı? Bunlardan herhangi birinin cevabı evet ise, neden?

(Bir Flash veya Silverlight uygulaması geliştirmek nasıl karşılaştırılır?)


5
Kapatmak için oy kullanmamıştım, ancak bir web geliştirme ile masaüstü geliştirme açısından yeniden amaçlanabilirse daha yapıcı olabileceğini düşünüyorum.
Josh K

K: Tamam, mevcut cevapları geçersiz kılmadan soruyu tekrar yazmaya çalıştım. Teşekkürler.
Josh Kelley

Yanıtlar:


26

Yok hayır

Ne yaptığınızı bilmiyorsanız veya doğru planlamıyorsanız acı vericidir, ancak bu herhangi bir gelişme için de geçerlidir. Uygulamayı bir masaüstü uygulamasında şişelemek daha kolaydır, ancak daha sonra bir web uygulaması için kodlama tarafından sağlanan erişilebilirliği kaybedersiniz.

İstenilen kullanıma göre masaüstü ve web arasında seçim yapabilirim. Web tabanlı yazılması gereken pek çok uygulama görüyorum, çünkü masaüstü uygulamalarını nasıl kodlayacaklarını bilmiyorlar. Yine de web tabanlı olması gereken pek çok masaüstü uygulaması göremiyorum ve bunun dikkate alınması gereken bir şey olduğunu düşünüyorum. Merkezi bir depolamaya, uzaktan erişilebilirliğe ve UI özelliklerine ihtiyacınız varsa emin olun .

Flash veya Silverlight hakkında yorum yapamam çünkü ikisini de kullanmıyorum.


5
O adam :s/loose/lose/
olmaktan

@ Hanribal: Sabit. Bazen tuşlara iki kez dokunurum. ;)
Josh K

4
@ Hanribal: "Hannibal Lecter" den gelen " O adam
olmaktan

25

Başkaları tarafından belirtildiği gibi, bir takas ve doğru bilgiye sahip olma meselesidir.

Göz önünde bulundurmanız gereken tek sorun şudur: Sorunuzda web’in “platformlar arası” bir avantaj olarak gördüğünü söylüyorsunuz. Ama gerçekten mi? Bunu şu şekilde düşünün: masaüstü için bir şey geliştirirseniz, platformların listesini ve desteklenecek gereksinimleri tanımlamanız gerekir.

Hata yapma, web için aynı. Zaten eskisinden çok daha basit olmasına rağmen, geniş bir kamu uygulaması tasarlarsanız, orada her web tarayıcısının her olası sürümü ile uğraşmak zorunda kalacaksınız. Ve eğer bir kurumsal uygulamanın fazlasıysa, o zaman kendinizi destekleyin ve desteklenen tarayıcı platformları gereksinimlerinizi tam olarak hazırlamaya hazırlanın.

Önemli bir şey inşa ederseniz, burada ve orada platforma özgü kesmek zorunda kalacağınızı düşünmeyin.

Ve sonra eğlenceli kısımlar. En iyisi nedir? Chrome gibi kendilerini neredeyse saydam bir şekilde çok düzenli olarak güncelleyen tarayıcılar? Veya güvenliği sağlayanlar yalnızca aylık olarak güncellenir ve her taş çağında temel özellikler (IE gibi)? Cevap, düşündüğünüz kadar açık değildir, çünkü bu sık yapılan "şeffaf" güncellemelerin bazıları kodunuzu kırabilir ve bunu izlemeniz ve hemen tepki vermeniz gerekecektir. Veya geliştirirken ve test ederken beta ve geliştirme öncesi sürümlerine göz atın. Tüm tarayıcılar için aptalca destek olmak istediğini söyledin (iyi şanslar).

Ah ve kullanıcı arayüzü ile ilgili düşünceleri unutmayalım. Tutarlı bir UI isteyip istemediğinizi de karar sevincini karşıya ARASINDA tüm hedef platformlarda veya tutarlı UI WITH her bir sunucunun hedef platformunda . Web sayfalarında görüntüleyebileceğiniz tüm o küçük düğmeleri görüyor musunuz? Her yerde tamamen aynı olmalarını mı yoksa kullanıcı tarafından kullanılan çevre ile bütünleşmelerini mi istiyorsunuz? Tabii ki bu problem yeni geliştirme modelleri için yeni değil ve var olmakla birlikte, burada daha önemli gibi görünüyor ve hedeflediğiniz kullanıcıların türüne ve ne beklediğine bağlı. Genel son kullanıcı, platformlarıyla bütünleşmenizi isteme eğiliminde olacaktır - ancak yine de "vay!" Onlarla süslü şeyler - kurumsal kullanıcı bir masaüstü uygulaması gibi görünen bir şey isterken. Ve mobil platformların tüm bunlara yeni bir boyutu vardı.

Son 2 paragraf için, ortak bir fikir bazen önceden yapılandırılmış bir web tarayıcısını kurucunuzla paketlemektir, bu da web uygulamanıza (yerel olarak barındırılan veya web üzerinde) bağlanır. Güncelleme sıklığını kontrol ettiğiniz ve durumu “dondurabileceğiniz” ve ne destekleyeceğinizi ve test edeceğinizi tam olarak bildiğiniz için harika. Ayrıca özel kullanıcı uzantıları gibi harika şeyler ekleyebilirsiniz. Örneğin, farklı türden kullanıcılar için web uygulamanızın kullanımını kolaylaştırmak için geliştirdiğiniz küçük Chrome Uzantılı "dondurulmuş" bir Chromium paketlemek son derece hoş olabilir. Öte yandan, serbest bırakma döngüsünü donduğunuzdan dolayı bir güvenlik ihlali oluşması durumunda artık siz sorumlusunuz ve uygulamanız hız iyileştirmelerinden (varsa) faydalanmayacak.

Birçok şey gibi, iki ucu keskin bir balta.

Not: Ben güçlü bir önyargı var karşı temelde yarı pişmiş teknolojilerin büyük bir kazık olduğu için web (ve burada kibar değilim), OSI katmanları aşağı, hangi biz gerçekten çözmeden altından sorunları gizleme bok katmanları ekleyerek tutmak veya onları tamir etmek.

Olduğu söyleniyor, ben bir platform olarak her yerde olduğu için web lehine . Sanırım şirketinizin hamlesi (muhtemelen) doğru olanıdır. Açıkça hedef pazarınıza ve hedeflediğiniz platformlara bağlı. Bir şeyi hizmet olarak ifşa etmek istiyorsanız, o zaman muhtemelen gitmeniz iyi olur (gerekli olmasa da). Eğer yapmazsan, belki bunun için çok fazla sebep yoktur.

Hmm ve gelecekte mevcut işletim sistemlerinin daha hafif değişkenlerinin, hafif gömülü tarayıcıları kullanmaya daha fazla önem vererek mobil ortamlar (netbook'lar, akıllı telefonlar, PDA'lar, tabletler, e-kitaplar ...) için yumurtlamaya devam etmesiyle gelecekte bazı eğlenceli gelişmeler bekliyoruz. .. ancak UI oluşturma aksaklıklarının tüm yeni paylarıyla.

Eklenti tabanlı teknolojilerle ilgili olarak ... Onlardan uzak durun derim. Uygulamanızın gücünü artıracak, ancak pazarın nüfuzunu sınırlayacak. Bazı durumlarda, yeni bir platform bir anda onları desteklemeyi reddedinceye kadar çapraz platform desteği açısından bir artı olarak göreceksiniz. Web Standartları bir sebepten dolayı buradadır (HTMl5'teki her şey için fazla heyecanlanmamaya dikkat edin, aksi halde yüzünüze patlayabilir).


EDIT: dikkate alınması gereken diğer şeyler ...

İşe Alım

Bu var son derece sert bilgili web geliştiricileri bulmak için. Bunların bir sürüsü olduğunu düşünürsünüz, ancak formlarında bazı onaylamalar uygulamak için 700 satır JavaScript / ECMAScript yazmayı başarabilmiş çok iyi, oldukça beceriksiz bir insan havuzunda kayboldular. ve üst düzey beceriler açısından elde edilebileceklerin hepsi olmak.

Şaka yapmıyorum, son zamanlarda tüm web geliştirme röportajları için ilk sorum, bir değişkeni nasıl açıklayacağımız ve daha sonra var(nasıl cevap verdiğine bağlı olarak) kullanarak ya da kullanmama arasında farklı olup olmadığı . İç karartıcı. Ortalama veya gelişmiş bir web geliştiricisi bulmak, ortalama veya gelişmiş bir masaüstü geliştiricisi bulmaktan çok daha zor.

Algı

"Web geliştiricisi olduğumu" söylediğinde hiç kimse seni ciddiye almaz. Programcılar, geliştiriciler için alt sınıflar için değil mi? Görmezden geldiğiniz ve uzaktan alay ettiğiniz şeyler, kahve yediklerinde katılmayın. :)

Bu açık bir şekilde doğru değil, ancak çoğunlukla sizin için yönetilen bir ortam için geliştirdiğiniz gerçeği ortaya çıkıyor. Tarayıcılar berbat işaretlemenizi, berbat stillerinizi düzeltiyor ve hatta bazıları için berbat betiklerinizi düzeltiyor ve eğer istersen sizin için optimize ediyor. Ve eğer bir web geliştiricisiyseniz, insanlar düşük seviyeli programlama hakkında bir ipucunuz olduğunu varsaymazlar, yani tam bir aptal olmalısınız, değil mi?

Ve sonra ECMAScript'in ne kadar çılgınca karmaşık olabileceğini anladılar, ancak fikirlerini gözden geçirmeyi reddedecekler. Çünkü bu web. Biz bunu özsel olarak sevmiyoruz, sadece yapmamızı sağlayan şeyleri seviyoruz.


-2, +10 ... Görüyorum ki tartışmalara yol
açtım

Tarayıcılar arasındaki farklılıklar bir sorundan daha az ve daha az bir hal aldı. Kuşkusuz, CSS ile başa çıkma biçiminde küçük tutarsızlıklar var, ama bunun dışında, çoğu zaman, modern bir tarayıcıyla hiçbir zaman büyük bir sorun yaşamadım. HTML5 ile sağ kanamanın tam ortasında olmadıkça, <canvas>ve bunun gibi şeyler ...
Dean Harding

6
“Not: Temelde büyük bir yarı pişmiş teknolojiler yığını (ve burada kibarım) olmak için web'e karşı güçlü bir önyargıya sahibim, OSI katmanlarına kadar, altta yatan sorunları gerçekten gizlemeden gizlemeye devam ediyoruz. "onları çözmek ya da düzeltmek." - SEN BEN MİSİN?????
Bobby Masalar

2
Gerçek web geliştirme gurusu olan, harika şeyler yapan ve ciddi bir yazılım geliştirme platformu olarak kullanan birkaç adamla çalıştım. Benim derin saygım var. Ama bu son 15 yılda sadece iki. Gerisi ... peki, bir keresinde bir Perl "uzmanı" olarak işim vardı; çünkü örnek kodum, görüşmecinin alıştığı spagetti yerine yapılandırılmış; O zaman, benim gerçek Perl uzmanlığım yüksükte olabilir.
Bob Murphy,

2
ECMAScript için +1 iyi, kötü ve ECMAScript olarak adlandırıldı.
Alan Pearce,

14

Her ikisiyle de ilgilenen biri olarak (web’den çok masaüstü olsa da): şimdiye kadarki en büyük sıkıntım web geliştirmedeki "genel sıkıntı" duygusudur. En iyi araçlar ve çerçevelerle bile, soyutlamalar hala çok sızdırıyor ve vatansız bir protokol üzerinden koşuyorsun.

İlgili bir başka sıkıntı, web uygulamalarını uygulamak için kullanılan teknolojilerin karışımıdır. Her şeyin yapılabileceği hoş, yekpare, modüler bir ortam ve dil yoktur. Göreceli olarak basit web uygulamaları bile, bir avuç ayrı programlama, komut dosyası ve işaretleme dilinde bir şeyler kodlamanızı gerektirir.

Genel bir cevap olarak: EVET , bu gerçekten kötü. En azından, her şeyi oldukça doğrusal ve iyi tanımlanmış bir teknoloji ve platform kullanarak, temiz, kesintisiz bir ortamda kodlamaya alışkın olduğunuz geleneksel bir masaüstü ortamından geliyorsanız. En iyi yol, aynı alan olarak düşünmeye çalışmak değil. Bilinçsizce web geliştirmenin “masaüstü geliştirme gibi” olmasını beklerseniz, her zaman çok iğrenç ve sinir bozucu görünür.


4
"Genelde tıknaz" hissinin sebebi belki de "soyut" bırakmaya çalışan çerçeveler kullanıyor olmanızdı ... web ne? Web vatansız. ASP.NET'te ne kadar "webformes" olursa olsun, başka türlü düşünmenizi istemez, bunun vatansız olmadığını asla unutmayın. Bir geliştirici ne kadar hızlı olursa, değiştirilemez bir gerçek olarak, kaliteli web uygulamaları yazmaya o kadar çabuk kavuşurlar.
Jason Whitehorn

1
+1, iyi dedi. Her şeyi tek bir teknoloji yığınında yazmanın çözümü olduğu düşünülen Rails gibi çerçevelerle bile, önerilen uygulamaları RJS'den "Unobtrusive JS" ye değiştirerek batırmayı başarırlar.
Jas

11

masaüstünden web'e geçmenin en büyük yolu şu: web uygulaması doğal olarak vatansız

o kısmı çöz, ve sen iyisin.


tarayıcı önemli mi?
JeffO,

@Jeff çapraz tarayıcı tutarsızlıkları can sıkıcı, ama gerçekten önemli değil
Steven A. Lowe

4
Gerçek tarayıcılar (bazı tutarsızlıklar), Internet Explorer (daha fazla tutarsızlıklar) ve belki de şeytanın çocuğu (IE6) için yazmalısınız.
TRiG

2
@Malfist: Bu yaklaşımın (vatansız + oturumları = durum bilgisi) Eğer başlangıçta bir kartal diledi zaman, cıvatalı bir uçak jet motoru ile bir DAÜ tasarım olabilir ile, dikkatli değilseniz;)
Piskvor

1
@Jim G: elbette öyle. Ancak, tarayıcılar ve diğerleri arasındaki farklar, durumlu uygulamalardan durumsuz uygulama tasarımına geçmeye kıyasla daha küçüktür.
Steven A. Lowe

5

Sıkıcılığın büyük kısmı, her şeyin tüm tarayıcılarda çalışmasını sağlamak için gereken işten geliyor. Büyük olasılıkla kanama kenarında olmanız gerekmediğinden, kendi işinizi yapmak yerine uygun bir web çerçevesi seçerek başkaları tarafından yapılan çalışmaları kaldırabilirsiniz.

Hangisini kullanacağınız, şu anda hangi dil ortamına alıştığınıza bağlıdır. Bu bilgiyi sağlamak için soruyu düzenlemek isteyebilirsiniz.


2
Tarayıcı uyumluluğu sorunları dev bir acıdır, bu doğru, ancak bunu dengelemek için farklı işletim sistemleri, kütüphaneler vb sürümleriyle uğraşmak zorunda kaldığınız masaüstü geliştirmeyle karşılaştırdığınızı unutmayın
Carson63000

@Carson, eğer Java masaüstü geliştirmeyi yaparlarsa bu ağrı çok azdır. Belki .NET veya Win32 API için çok daha kötü.

2

Hayır, web uygulamalarının masaüstü uygulamalarından farklı avantajları vardır. Her birinin aklıma güçlü yönleri var. Tek bir dağıtım gibi güçlü yönler varken, hangi tarayıcıları desteklediğinizi ve müşteriden hangi ekran çözünürlüğünü beklediğinizi bilmenin sakıncası var. Sunucu donanımı üzerinde kontrol sahibi olsanız da, ne kadar trafik beklediğiniz ve ne kadar ölçekleneceği sorusu var. Yıllardır web geliştirme yapanlar için bunlar ağrılı noktalar olabilir, sanırım büyük bir acı olarak gördüğünüz bazı geliştirme görevleriniz olduğunu hayal ediyorum, değil mi?

Bir Flash uygulaması aklıma bir web uygulaması olabilir veya olmayabilir. AIR gibi bir şey bazı Flash öğelerini masaüstünde çalıştırır ve bazı uygulamalar bunun üzerine kurulur, örneğin Twhirl, bu yüzden hemen kesilmez ve kurur.


2

Web geliştirme mutlaka daha da kötü değil , sadece çok farklı.

Web geliştirmeyi masaüstü geliştirmeden ayıran şeylerden biri, terbiyeli bir şekilde karmaşık bir uygulama geliştirmek için ustalaşmanız gereken çok farklı teknolojilerin bolluğudur. Demek istediğim, temel olarak şu konularda güçlü bir bilgiye sahip olmanız gerekir:

  • HTML
  • JavaScript
  • CSS
  • Bazı sunucu tarafı dilleri (Java / PHP / her neyse ...)
  • Bir RDBMS (veya bazı kalıcı mağaza teknolojisi)
  • ... ve muhtemelen Flash, Silverlight, vb. gibi pek çok şey

Oysaki masaüstü gelişiminde genellikle çok daha monolitik bir teknolojiyle çalışıyorsunuz. Örneğin, bir Java uygulaması geliştirmek temelde Java'yı bilmenizi gerektirir ve hepsi bu. (Elbette, bu biraz basitleştiricidir, ancak amaç web geliştirme, işleyen bir uygulama oluşturmak için birlikte çalışması gereken çok daha farklı ve farklı teknolojilere maruz kalmanızı sağlar.)


1

Yok hayır

Doğru araçları seçtiğiniz sürece web geliştirme, masaüstü geliştirme kadar temiz ve kolaydır.

Web API'leri (html, CSS, Javascript ve DOM) win32 api'ye eşdeğerdir. Sonunda her şey söz konusu API seviyesine değinir, ancak sizden uzaktaki dağınıklığı, zaafı ve tutarsızlığı soyutlamak için doğrudan bir kütüphane olmadan programlarsanız delisiniz.

Bu nedenle, seçtiğiniz çerçeve konusunda dikkatli olun. Bazı sorunlar, kötü araçlar seçilerek kendiliğinden ortaya çıkar (ör. Tarayıcı uyumluluğu sorunları).

Tek bir dille temiz ve tutarlı bir web geliştirme platformuna sahip olmak mümkündür. Örneğin, "her zaman java" olmasını istiyorsanız, GWT'yi kullanabilir ve hem istemci tarafı kodunuzu hem de sunucu tarafı kodunuzu Java'ya yazabilirsiniz. Veya, hepsinin javascript olmasını istiyorsanız, müşteri tarafı için Ext JS ve sunucu tarafı için node.js gibi bir şey seçebilirsiniz.


0

"... varlığımın özü" olarak tanımlandığını duydum ve katılıyorum. HTML web geliştirmesi için bir saat boyunca $$$ önerildi ve kapattım. Bu çok acı verici. HTML’de çok fazla zaman geçirdim ve son zamanlarda "Flash platform" ile çalışmaya başladım. Bu şimdiye kadar gördüğüm en karmaşık çerçevelerden biri ve kimse bilmiyor. İnsanlar Flash'ı açtığında, 10 yıl önce Flash'ı düşünüyorlar. Çok büyüdü. Yine yazılım yazmayı seviyorum.

Hala dezavantajları var. Hatalar bazen sonsuza dek dinlense de daha iyi bir hal aldı (teşekkürler Steve J.).

BTW Flex geliştiricileri için büyük bir sıkıntı var. Çok hasta tarafından hastalandım. CS’nı tanıyorsan, önümüzdeki 6+ ayını Flex hardcore’ı öğrenerek harca. Geri çevirmem gereken bütün iş tekliflerini ileteceğim.

Güncelleme: Çapraz tarayıcı desteği ana ağrı noktasıdır. Bir tarayıcıda çalışan başka bir bilgisayarda çalışmaz veya önceki sürümde çalışmaz.

Süreç şöyle devam eder: - sitenin tasarımını al - tek bir hedef tarayıcıda yeniden yaratmaya çalış (bu zor olabilir) - müşteriyi göster - müşterinin tasarımını değiştir - başlangıçta yaptığın tüm yerleşim planlarını sıyır - işlevsel hale getir - müşteri onayları - diğer tarayıcılarda çalışmasını sağlayın. Bu en zor kısımdır. Tüm yol boyunca belirsiz böcekler var. Ardından, önceki tarayıcıların yuvarlak köşeler gibi desteklemediği özelliklerle karşılaşırsınız. Kodunuzu ve css’inizi yeniden kullanmaya çalışacaksınız ancak bu hızla parçalanıyor. Basitçe çok hızlı bir şekilde yüksek bakım olabilir. Animasyonları ekleyin ve eski tarayıcıları boğun.

İstemci olacak değişiklikleri yapın. Tüm zamanınızı “basit şeyler ne olmalı” yaparak geçirir ve hayatınızdan nefret edersiniz. Bir guru olacak ve bilmek istemediğiniz şeyleri bileceksiniz. Kulağa dramatik geldiğini biliyorum ama karşılaşacağınız sorunları süslemiyorum. Altyapıları kolaylaştıracak. HTML'de çalışmaya devam ediyorsanız, kendinizi hazırlamak için HTML'deki en sevdiğiniz sitelerden birini yeniden tasarlayın ve desteklediği tüm tarayıcılardaki tasarım ve işlevsellikle eşleştirin. Bir işe girmeden önce karşılaştığınız sorunları önleyin. En iyi tasarım araçları, en iyi javascript çerçeveleri, en iyi hata ayıklama araçları, en iyi IDE'ler vb. Gibi konular.


Neden varlığınızın acısı olduğunu düşündüğünüzü açıklamak için cevabınızı düzenler misiniz ?
Josh Kelley

Yukarıdaki cevabımı güncelledi

1
Saatte üç dolar mı? Geri çevirmene şaşmamalı, bugünlerde asgari ücret olsa bile mi? ;)
Piskvor
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.