C ++ ve MySQL ile bir web uygulaması oluşturmanın herhangi bir kavramsal dezavantajı var mı?


10

Mevcut bir yazılım parçasını alıp SaaS web uygulamasına dönüştürmek için iyi bir fırsatın olduğu oldukça ilginç bir projeyi miras aldım. Proje devralındığından, kod tabanı / çerçevesi zaten C ++ ve MySQL olarak tanımlanmıştır. Uygulamanın kendisi derlenir ve Windows Server'da EXE olarak çalıştırılır. UI web tabanlıdır ve uygulama bir tür sunucu olarak çalışır. Modern web uygulamalarından bildiğim kadarıyla, bu belki de alışılmadık bir seçimdir. Bu günlerde, çoğu insan bir PHP çerçevesi veya Ruby on Rails'i tercih ediyor gibi görünüyor. Kesinlikle bu konu hakkındaki blogları okumaktan aldığım izlenim. Bu yüzden, MySQL tarafından desteklenen bir C ++ EXE bir web uygulaması için sağlam bir temel olup olmadığını veya başka bir şekilde inşa etmek isteyen olup olmadığını bilmek isterim?


Açıkladığınız şey bir web uygulaması değil, bir sunucu işlemi gibi geliyor . Ve sunucu işlemleri için PHP veya RoR kesinlikle olağandışı seçimlerdir. Aslında ne tür bir sorunun var?
Benjamin Bannier

Exe yeni Hostable Web Core'u ( awesomeideas.net/page/IIS7-Hostable-WebCore.aspx ) kullanıyor mu yoksa kendi HTTP sunucusunu sıfırdan mı uyguluyor? Eğer eski, o zaman belki de gerçekten C ++ kullanarak çok hızlı bir uygulama yapmaya çalışıyorlardı ve istemci makineleri için taşınabilirlik için kendini barındıran ..
Jimmy Hoffa

Tabii ki aklı başında herhangi bir HTTP sunucusu yazmak yerine POCO Net :: HTTPServer gibi bir şey kullanırdı. Ancak RoR gibi değildir veya Python çerçeveleri bazı web sunucularını paketlemez.
Benjamin Bannier

4
Bir web uygulamasının arka ucu olarak c ++ kullanmak olağandışı değil. Google arama c ++ ile yazılmıştır. Yahoo'nun uygulamalarının çoğu c ++. Milyonlarca insan tarafından kullanılan hemen hemen her AAA web uygulaması c ++ ile yazılmıştır.
Lord Tydus

Evet, uygulama özel bir web sunucusu olarak tasarlanmıştır. Bu yüzden web uygulaması tarafı HTML yönetici kullanıcı arayüzünden ve özellik kümesinden geliyor.
jnthnclrk

Yanıtlar:


20

Tamam C ++ kullanarak bir web uygulaması yapmaktır EĞER açıkçası, faydaları maliyetini ağır basar. Google, Amazon, Facebook'un tümü hız, bellek ve enerji verimliliği, yani sunucu maliyetleri için C ++ ile üretilmiştir.

Ancak tahmin ettiğiniz gibi, bunun için C ++ kullanmanın dezavantajları vardır. Ancak araçlarınıza bağlıdır.

Öncelikle bu konuda cppcms web sitesini göstereyim :

CppCMS Ne Zaman Kullanılmalı.

C ++ dili, birçok nedenden dolayı Web geliştirme için popüler olmaktan uzaktır: uygun araçların eksikliği, geliştiricilerin becerileri ve daha fazlası.

Bununla birlikte, CppCMS ile C ++ web programlamanın çok yararlı ve verimli hale geldiği alanlar ve bazıları sadece zaman kaybıdır.

CppCMS ne zaman kullanılmalı veya kullanılmalıdır?

1.Yüksek performans, verimlilik ve ölçeklenebilirlik gereken saniyede yüzlerce ve binlerce vuruş içeren yüksek yük web siteleri ve uygulama.

Ölçeklenebilir Comet / Server Push teknolojileri gerektiren uygulama --- CppCMS, minimum kaynak kullanımı ile yüzlerce ve binlerce eşzamanlı HTTP bağlantısını verimli bir şekilde işleyebilir.

3. Ek bir kütüphanenin küçük bir maliyeti ile mevcut C ++ uygulamalarına / hizmetlerine web arayüzü eklemek.

4. Gömülü düşük güçlü cihazlar - CppCMS, oldukça hızlı performans gösterecek nispeten düşük donanım maliyeti ile zengin uygulamaların oluşturulmasına izin verir.

Ne Zaman Kullanılmamalıdır?

Yüksek yükler gerektirmeyen ve çok kısa piyasaya çıkış süresi gerektiren küçük web uygulamaları oluşturursanız - muhtemelen Django veya RoR gibi araçlar bu tür görevler için daha uygun olacaktır.

C ++ 'a özgü dezavantajlar şunlardır:

  • Derleme süreleri diğer dillerle karşılaştırıldığında çok çok çok yavaş olabilir. Bu, yinelemeleri, yayın aralığını değil, aynı zamanda geliştiricinin ahlaki değerlerini de etkileyebilir. Buna değer olduğundan emin olun.
  • Çoğu zaman, değişiklikleri derlemeniz gerekir. Önlenebilir ama her zamanki gibi.
  • Modern C ++ yazmak kolaylaşır (öğrenmek, okumak, yazmak, hata ayıklamak vb.), Ancak birçok C ++ geliştiricisi Modern C ++ 'ın ne olduğunu bilmez. Takım halinde çalışıyorsanız, tüm ekipten Modern C ++ hakkında iyi bilgiye sahip olmanız gerekir. Değilse, kolayca çok karmaşık hatalara gireceksiniz. Bununla birlikte, bu bir dil probleminden çok bir insan sorunu. Sadece C ++ geçmişi kavramayı kolaylaştırmadı. İyi öğretim, daha modern (tarihsel) dillerde olduğu kadar yaygın değildir.
  • Unicode, çekirdek C ++ dili tarafından hala zayıf bir şekilde destekleniyor ve bu da onu büyük bir acı kaynağı haline getiriyor. UTF-8'i her yerde kullanın ve yönetmek için bazı kütüphaneler (güçlendirmeye bakın).
  • C ++ standardı bir kütüphanenin ne olduğunu bilmiyor. Bu yüzden onları farklı derleyici / bağlayıcı / işletim sistemlerinde yönetmek için geleneksel yollar kullanıyoruz. Bazı modülleri "anında" yüklemesi / boşaltması gereken platformlar arası koda girmeye başlarsanız bu bir sorun olabilir.

Belki CPPCMS'ye bir göz atın? Ya da belki bir GUI tarzı web sitesi yapmak istiyorsanız wt?

Ayrıca şu soruları kontrol edin:


3
Anladığım kadarıyla Facebook, PHP'de programlanmış, ancak Linux için C ++ 'da PHP için kendi yerel derleyicilerini oluşturdular. Facebook'un derleyiciyi geliştirmesinin ana nedenleri, işletim sunucuları için elektrik maliyetlerini azaltmaktı. Gerçekten hız değildi (daha hızlı), ancak istek başına daha az CPU kullanımı gerektiriyor. Burada bulunabilecek açık kaynaklı bir proje. developers.facebook.com/blog/post/2010/02/02/…
Reactgular

1
Evet, nedenleri değişiyor, bu yüzden enerji ve sunucu maliyetlerinden bahsettim. Bununla birlikte, Alexandrescu son zamanlarda bir röportajda, inanıyorum ki, Facebook kodunun gittikçe daha fazla doğrudan C ++ ile yazıldığını söyledi, ancak hafızam doğru ise nedenini söylemedi. Ayrıca C ++ yardımcı programı / algoritmalarıyla dolu bir açık kaynak kitaplığı sağlarlar: Folly facebook.com/notes/facebook-engineering/…
Klaim

Ayrıca, kod ilk olarak PHP'de yazılmış ve daha sonra C ++ 'a dönüştürülmüş olsa bile, işaret ettiğim dezavantajların 3ünün hala doğru olduğunu unutmayın.
Klaim

2
Başka bir C ++ web çerçevesi: wt (esprili). Bu, kaputun altında masaüstü uygulamaları gibi çalışan web uygulamaları oluşturmak isteyen kişiler içindir. Taşıma için iyi bir seçimdir.
K.Steff

Tüm bu sitelerin birden çok dilde yazılmış bileşenleri olduğunu düşünüyorum. C ++ büyük olasılıkla ince ayarlı bellek yönetimi gerektiren kod bölümleri için bir optimizasyon olarak kullanılır.
jiggy

3

PHP'de birkaç eklenti yüklü olarak çalışan Wordpress, Winders sunucumu dizlerinin üstüne getiriyor. Bu yüzden C ++ 'da bir web uygulaması uygulama fikri ile hiçbir sorunum yok. Hız, web deneyiminin kritik bir parçasıdır.

Web tasarımlarının çoğunu yönlendirmek için grafik tasarım çadırları. PHP, HTML içinde çalışan belirsiz bir betik dilidir. PHP yazarlarının HTML içine girip çıkmasına izin verme. Sonuç olarak HTML ile çalışmanın birçok faydası vardır.

Yine de, C ++ 'da istediğiniz sayıda HTML şablonu çözümü uygulayabilirsiniz.

Bir hızlı geliştirme için uzun bir Python ve PHP çerçeveleri listesi sağlayabilir, ancak çok zamanınız varsa C ++ kesinlikle mümkündür.

Anlamadığım şey, Windows'ta C ++ yapma kararınızdır. lol


1
Klasik hasır adam argümanı, wordpress / php'ye C ++ olmayan çok daha iyi hızlı alternatifler var. C ++ 'ın ilgili bir seçim olmadığını söylemiyorum, sadece argümanınız gerçekten çok iyi çerçevelenmemiş.
Jimmy Hoffa

Size katılıyorum. Wordpress'i alternatif yapmaya çalıştığımı sanmıyorum. Sadece deneyimlerimin son zamanlarda gösterildiği gibi popüler çerçevelerden iyi performans elde etmek zor oldu.
Reactgular

1
StackExchange, ASP.NET MVC çerçevesinde çalışır. Düğüm.Js düşük ağırlık yüksek performans ve gerçekten gülünç bir performans isteyen bir şey istiyorsanız Snap veya Yesod Haskell çerçeveleri yesodweb.com/blog/2011/03/… , Haskell, JavaScript ve C # hepsi yüksek düzeyde çöp toplanan dillerdir.
Jimmy Hoffa

1
Çoğu durumda sunucuda Kod yürütme hızının bir web uygulamasında sınırlayıcı faktör olmadığını unutmayın. Zamanın büyük bölümleri bir şey (veritabanı) ya da hatta ön uçta (CSS getiriliyor, resimler, JavaScript işleri yapıyor, HTML oluşturma) bekliyor
johannes

1

Kesinlikle alışılmadık bir seçim. C ++ web uygulamaları göz önünde bulundurularak tasarlanmamıştır ve C ++ ile FastCGI uygulamaları yazmak için kütüphaneler mevcut olsa da, temel uygulamanızı almak için çok daha fazla iş yapmanız gerekir. "Web dilleri" genellikle sizin için HTTP protokolünün uygulanması, HTML oluşturma vb. Gibi C ++ 'ın başka bir yerinden almanız gereken birçok şey yapar.

Ayrıca, web uygulamaları çoğunlukla C ++ 'ın en güçlü tarafı olmayan dizelerle ilgilidir - dilin kendisinde yerleşik bir dize türü yoktur ve bu birkaç tuhaflığa yol açar ve dize işlemeyi daha yüksek olandan daha beceriksiz yapar. düzey diller. Kara büyü üzerine C ++ kenarlıklarında karakter kodlamaları doğru şekilde işlenir. Ve C ++, daha yüksek seviyeli bir dille çok daha az muhtemel olan oldukça masum görünümlü kodda gerçekten zor çökebilir (onlar da çökebilir, ancak çoğu durumda web sunucusu, özellikle bir - PHP gibi talep edilen yaşam döngüsü modeli).

Bununla birlikte, kod tabanının çoğunu zaten yazdıysanız, C ++ hala uygun bir seçim olabilir. Her türlü web öğesini kapsayacak bazı kütüphaneler bulmanız gerekecektir (en önemlisi, bağımsız bir HTTP web sunucusunu programınıza entegre edebilmeniz veya örneğin Apache'ye FastCGI aracılığıyla veya derleyerek bir modül; HTML belgelerini ağrısız hale getirmek için bir çeşit şablon kitaplığı da isteyeceksiniz).

Son olarak, geliştirici pazar sorunu var. Çok sayıda C ++ geliştiricisi ve hatta daha fazla web geliştiricisi var, ancak çakışma muhtemelen o kadar büyük değil, bu yüzden bu konuda çalışmak için insanları işe almanız gerekiyorsa, biraz daha zor zaman geçireceksiniz. PHP.


1

Diğerlerinin söylediği gibi, kavramsal olarak, C ++ bir web sunucusu geliştirme için iyi bir ortamdır. Ancak, bu kararı verirken dikkat etmeniz gereken birkaç nokta vardır.

Komut dosyası dillerinin web sunucusu tasarımı için popülaritesi zamanla değişmektedir. Sonuçların hemen gösterilmesi ile basit değişiklikler kolayca yapılabilir. Herhangi bir iyi web sunucusu tasarımının benzer yetenekler sunacağını göreceksiniz. Gerçekten de, C ++ bu hedefe ulaşmak için mükemmel bir ortamdır.

İyi bir web sunucusu uygulama sistemi oluşturmanın anahtarı, kullanıcı arayüzünün koddan ayrılmasıdır. Bir web uygulama ortamı oluşturmanın amacı "Kullanıcı arayüzünüz kodumda ve kodunuz kullanıcı arayüzümde" olmaktan kaçınmaktır.

Cppcms gibi sistemlerde dikkatle istiyorum. Ben benzer bir şey teklif beklenir.

Esneklik ve performans sunmak için komut dosyası diline ihtiyacınız yoktur.

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.