2016-06-01 81 views
10

Tôi đang sử dụng ứng dụng bảng điều khiển C++ trong cửa sổ. Tôi muốn sử dụng ứng dụng này trong trang web của tôi để đầu vào được lấy từ phía khách hàng mà sau đó gọi ứng dụng này để xử lý nó và đầu ra sẽ được chuyển tiếp đến máy chủ web. Tôi đã nghe nói về COM DLL nhưng không biết cách tạo nó cho ứng dụng của tôi.Cách sử dụng ứng dụng C++ trong máy chủ web?

+4

http://www.tutorialspoint.com/cplusplus/cpp_web_programming.htm – macroland

+1

Máy chủ web nào bạn sẽ sử dụng? Apache? IIS? Bạn có kế hoạch để viết của riêng bạn? Nền tảng nào (Windows/Linux/BSD/BeOS)? – Neil

+0

@Neil Tôi đang sử dụng Apache Tomcat trên cửa sổ. – Mavie

Trả lời

16

Bạn nên thử tạo tập lệnh cgi, tùy thuộc vào nhu cầu của ứng dụng của bạn, bạn nên sử dụng FastCGI (không tạo toàn bộ ngữ cảnh quy trình mỗi khi bạn gọi nó).

  • CGI

Bạn nên cài đặt một Apache Server và kích hoạt module cgi (kích hoạt nó bằng cách mặc định thường). Sau đó, bạn có thể phát triển một chương trình C++, đặt tệp thực thi bên trong thư mục CGI được định cấu hình, cấp quyền chính xác. Kịch bản CGI này nên làm cho một số loại thông tin liên lạc quá trình (nó có thể được thông qua ổ cắm hoặc bộ nhớ chia sẻ, đầu tiên là dễ dàng hơn). Tôi hy vọng bạn biết làm thế nào một script CGI hoạt động trong C/C++ + Apache, nhưng nó khá thẳng về phía trước, trong tóm tắt bạn nhận được môi trường bên trong stdin và đặt câu trả lời của bạn để stdout.

  • FastCGI

Bạn có thể sử dụng apache, cài đặt các module fastcgi và tạo ra một chủ đề (nó có thể là bên trong vòng lặp chính của bạn cũng vậy, nhưng tôi không khuyên) bên trong chương trình của bạn và đính kèm các apache mô-đun FastCGI của máy chủ vào daemon của bạn.

Cuối cùng nhưng không kém phần quan trọng, bạn nên chạy daemon làm dịch vụ.

PS: Có một số tùy chọn khung (như cppcms và wt), nhưng kể từ khi bạn đã có daemon viết tôi nghĩ rằng nó sẽ là một nỗi đau trong ass để thay đổi mọi thứ (tất nhiên, nó phụ thuộc vào rất nhiều thứ , như độ phức tạp và kích thước của ứng dụng của bạn).

6

Sử dụng CGI: http://cgi.sourceforge.net/

Làm thế nào để lấy đầu vào từ phía khách hàng?

getenv("QUERY_STRING") 

Cách chuyển tiếp đầu ra tới máy chủ web?

cout << "<html>\n"; 

Hello world CGI:

#include <iostream> 
#include <cstdlib> 

using namespace std; 

int main() 
{ 

    cout << "Content-type:text/html\r\n\r\n"; 
    cout << "<html>\n"; 
    cout << "<head>\n"; 
    cout << "<title>Hello World - First CGI Program</title>\n"; 
    cout << "</head>\n"; 
    cout << "<body>\n"; 
    cout << "<h2>Hello World! This is my first CGI program</h2>\n"; 
    cout << "<p>REQUEST_METHOD = " << getenv("REQUEST_METHOD") << "</p>\n"; 
    cout << "<p>QUERY_STRING = " << getenv("QUERY_STRING") << "</p>\n"; 
    cout << "</body>\n"; 
    cout << "</html>\n"; 

    return 0; 
} 
+1

Trong khi đề xuất mã có thể đưa ra câu trả lời cho câu hỏi, doea mã không chỉ cung cấp giải thích về lý do tại sao và làm thế nào nó được giải quyết các câu hỏi ban đầu. Vì vậy, hãy thêm một số giải thích để cung cấp thông tin chi tiết hơn về những gì cần thiết để giải quyết vấn đề ban đầu. – rpy

4

Thậm chí còn có nhiều khuôn khổ cho phát triển chúng, bao gồm Wt, cppcms, CSP, và những người khác. Việc thực hiện đường chính của FastCGI là trong C và trực tiếp hỗ trợ một số ngôn ngữ, bao gồm C++.

Tôi khuyên bạn nên sử dụng W + webtoolkit Wt (phát âm là Witty), tại http://www.webtoolkit.eu/.

Khuôn khổ này (với máy chủ ứng dụng tích hợp) cho phép bạn thiết kế các ứng dụng web về tiện ích và kết nối tín hiệu/khe cắm và để lại nhiều phần mềm trên web trong tay thư viện. Các ứng dụng kết quả là hướng đối tượng, được đánh máy đúng và hoàn toàn có thể bảo trì. Thư viện tự động phát hiện khả năng của trình duyệt và sử dụng cách thích hợp để hiển thị trang web, tránh lỗi trình duyệt. Đây là an example of aplication using wt

Đồng thời xem this thread.

+0

Tôi đã có một ứng dụng giao diện điều khiển C++ mà tôi muốn kết nối với máy chủ web của mình. Nó sẽ chạy trên máy chủ nhưng lấy tài nguyên cục bộ của máy chủ. – Mavie

4

nhóm của tôi chỉ làm điều đó như một dự án lớp học, chúng tôi chủ yếu sử dụng cpp-netlib như một thư viện mạng, nhưng chúng tôi cũng sử dụng curlpp cho một số công cụ nhỏ. Chúng tôi đã lưu trữ nó trên thiết lập cá thể Amazon EC2 làm máy chủ cửa sổ và bạn hoàn toàn có thể tự do thực hiện giao diện người dùng mà bạn thực sự muốn. Đó là một dự án khá đơn giản nhưng việc đi theo con đường đó không hạn chế như tôi nghĩ. Hy vọng rằng sẽ giúp

4

Để có hiệu suất cao trên Windows và IIS 6, bạn muốn tạo một dĩa ISAPI; trong IIS 7 bạn sẽ muốn tạo một module. Không phải là đặc biệt tầm thường và bạn sẽ phải làm rất nhiều việc đọc.

Các vấn đề liên quan