2010-02-18 14 views
8

Uygulamalarımdan biri için minimal bir web arayüzü sağlamak istiyorum. Bu temel uygulaması C++ 'da yazılmıştır ve bir çerçeve olarak Qt4'ü kullanır. Bazı kütüphaneleri de kullandığım için bazı şeyleri hesaplamak ve bazı karmaşık veri yönetimi yapmak için yazdığımdan, bu mevcut kodu web arayüzüne arka uç olarak kullanmak istiyorum.C++/Qt4 uygulamasını web uygulamaları için arka uç olarak kullanıyorum

Fikir 1: gömülü bir web sunucusu (mongoose) kullanıyordum Denedim ilk şey (ve bir dereceye kadar çalıştı) gömülü bir web sunucusunu

kullanma. Tahmin edebileceğiniz gibi, bu sadece çok ince bir kütüphanedir ve kendiniz için bir sürü şey uygulamanız gerekir (oturum yönetimi, çerezler vb. Gibi).

Fikir 2: normal bir web sunucusu kullanma ve örneğin (olgun ama kompakt web sunucusu kullanıyordum kafama geldi

sonraki şey benim uygulamaya bir fcgi/cgi/SCGI arka uç ekleyerek lighttpd) ve basit bir fcgi/scgi/cgi backend sağlar. Web uygulamasını Pylons, PHP veya RoR gibi iyi bir çerçeve kullanarak yazabilirim (...) ve sadece arka uç ile doğrudan konuşmamı sağlayan /a/... gibi bir URL ön ekine sahip olabilirim.

Libfcgi'yi benim uygulamamda uygulamaya çalıştım, ancak ihtiyaç duyulandan daha karmaşık görünüyor (örneğin, uygulamanızla web sunucusu arasında veri aktarmak için kendi TCP/IP soketlerini uygulamak zorundasınız ve fcgi kütüphane, meh)

Fikir 3: Bu üçüncü fikir en temel şeyler yapar ve geri kalan

yapmak normal bir web sunucusu ve çerçeve kullanmak benim uygulamanın bir komut satırı sürümü oluşturma Kafama geldi. Temelde geleneksel bir yol (PHP, RoR, vb.) Kullanarak bir web uygulaması oluşturmak ve verileri işlemek ve gerektiğinde iade etmek için uygulamamın bir komut satırı sürümünü kullanmaktır.


Ben web uygulamaları oluşturma ile biraz tecrübe var, ama böyle bir şey yapmak zorunda asla, bu yüzden bazı fikirler veya öneriler duymak istiyorum. Tarayıcıda JavaScript kullanmak (AJAX, yani) ve kullanıcı deneyimini biraz daha kolaylaştırmak için web tarayıcısı ve sunucu arasında bazı JSON yapılarını kullanmak istiyorum.

Önerileriniz nelerdir, bu konudaki fikirleriniz nelerdir? Direksiyonu yeniden icat etmek istemiyorum.

cevap

4

Apache veya lighthttp gibi sunucular için ön yazılı olarak özel bir yazılı uygulamayı asla açık uçlu olarak göstermem. Kutunun dışında ciddi bir güvenlik sağlıyorlar.

Uygulamanızın bu web sunucusuyla etkileşimi söz konusu olduğunda, PHP'nin, python'da veya web sunucunuz tarafından desteklenen diğer dillerde (elbette tercüman aracılığıyla) yazma yazılımı ile ne tür bir deneyime sahip olduğunuza bağlıdır.

Hafif bir yük ve PHP'den erişilen bir komut satırı aracı mükemmel şekilde iyi yapabilir.

Daha ağır bir yük ve Qt ile basit bir (SOAP?) Sunucu uygulamak ve bir python (veya php) komut dosyasından erişmek isteyebilirsiniz.

Bu şekilde, sizin uygulamanızda düzen yapmanıza gerek yoktur ve ayrıca güvenliği çok fazla uygulamanıza gerek yoktur.

+0

dürüst başvurumu ilgili hiçbir şey düzenini yapmak istemiyorum (bu sayı olarak neyi şablon sınıfları ve bu tür içindir). Web sunucusu ile temel uygulamam arasında önemli bilgi alışverişi yapmak ve geri kalanını yapmak için daha kararlı ve güvenli bir teknoloji kullanmak istiyorum. SOAP'a hiç bakma, biraz daha okuyacaksın. – BastiBen

3

Şu anda benzer bir durum araştırıyorum (Qt kullanarak özel web uygulaması arka ucu) ve en az hatalı seçenek FastCGI'dir. İlgilendiğiniz bir şey bulundu. Bazı ciddi testler olmadan üretime hazır değil, ancak bu, Qt - FastCGI interop için iyi bir başlangıç ​​noktası olabilir: FastCGIQt

+0

FastCGI'ya baktım ama "resmi" C/C++ kütüphanesi gerçek bir karmaşa. Belki bir şey özledim, ancak çoğu web sunucusu TCP/IP kullanarak fastcgi uygulamalarına bağlanır; Resmi fastcgi kütüphanesi herhangi bir TCP/IP desteği sağlamıyor olsa da ...? – BastiBen

2

Benzer bir proje için FastCGI Protocol Driver library'u kullandım (ayrıca bir Qt uygulaması), indirme linki bu sayfanın sonunda [Libfastcgi]. Uygulama ile entegrasyon aslında nispeten kolay çıktı. Web sunucusu olarak Lighttpd + mod_fastcgi kullanıldı. FastCGIQt hakkında bir şey söyleyemem. Qt tabanlı uygulamalara web arabirimi sağlamak için Wt iyi çalışır.

0

Her ikisinde de benzer bir programlama stili var ve Qt ile entegrasyonu gösteren bir örnek var. İşte

İlgili konular