Làm thế nào để một giao diện C ++ với web (ví dụ tại Google)?


12

Google nổi tiếng với số lượng C ++ lố bịch mà họ đã mã hóa trong nhiều năm qua. Chỉnh sửa cho tôi nếu tôi sai, nhưng một phần lớn công cụ tìm kiếm cốt lõi của Google được viết bằng C ++, phải không? Làm thế nào để một chương trình được viết bằng C ++ và giao diện với một trang web?

Lưu ý: Tôi không tìm kiếm cách Google nói riêng thực hiện việc này, chỉ là cách nó có thể được thực hiện nói chung.


Chà, Google đã xây dựng hầu hết ứng dụng của họ bằng python và bây giờ Java cũng được sử dụng rất nhiều. Google sẽ không hạn chế sử dụng ngôn ngữ. Đối với giao diện web, ổ cắm được sử dụng. Không có gì của C ++, nhưng của C apis. C ++ không có cái riêng của nó !!
user1708086

Câu trả lời:


16

Bất kỳ phần mềm web nào cũng sẽ chỉ gửi và nhận tin nhắn qua ổ cắm, chỉ vậy thôi. Bạn có thể sử dụng bất kỳ ngôn ngữ nào để làm điều này, nó không dành riêng cho ngôn ngữ.

Tuy nhiên, tốt hơn hết là bạn không nên phát minh lại bánh xe cho loại công việc này vì vậy hầu hết các ngôn ngữ được sử dụng để làm ứng dụng web đều có bộ khung giao tiếp cơ bản cho bạn, để cho phép bạn tập trung vào các đặc thù của dự án. Ruby có ROR, Python có Django và những người khác, Java là ... vv.

C ++ trong lịch sử không có bất kỳ khuôn khổ tương tự nào cho đến gần đây:

  • một cách làm hiện đại của C ++ là sử dụng một cái gì đó như CPPCMS ;
  • đó cũng là một nỗ lực để thiết lập một thư viện chuẩn cho nhà phát triển web. trong C ++, một trong số họ là cpp-netlib ;
  • Gần đây, đã có một bản phát hành thư viện API REST đa nền tảng cho C ++ 11 từ Microsoft có tên Casablanca , điều này cũng có ích;

Bây giờ, "số lượng C ++ lố bịch" mà Google xây dựng là cần thiết bởi vì bạn cần phải có các mô-đun hiệu suất rất cao để giải quyết loại vấn đề mà Google giải quyết. Chúc may mắn cố gắng làm điều tương tự mà không có bất kỳ mô-đun viết bằng ngôn ngữ tập trung vào hiệu suất. Tôi khuyên bạn nên đọc wiki CPPCMS về chủ đề này để hiểu rõ hơn. Đối với sự thật lịch sử, Amazon, Google, Facebook (xem Hip Hop và các cuộc phỏng vấn gần đây của Alexandrescu) và một số dịch vụ web thực sự lớn khác có lõi trong C ++, vì những lý do tính toán rõ ràng quan trọng hơn thời gian mất năng suất của lập trình viên.

CPPCMS và cpp-netlib là nguồn mở, bạn có thể nghiên cứu chúng nếu bạn muốn biết cách làm cho ứng dụng hoạt động như một dịch vụ web bằng C ++. Điều đó nói rằng, bất kỳ ứng dụng nào có thể nghe cổng và gửi dữ liệu tới cổng đều có khả năng thực hiện điều này, tất cả là về các protocoles (TCP / IP, HTTP, v.v.) , không phải mã.


Không thể upvote yên lặng, nhưng tôi đã chấp nhận câu trả lời của bạn. Tôi không biết bất cứ điều gì như CPPCMS tồn tại, nhưng thật tốt khi biết điều đó. Cảm ơn!
Khoa học điên cuồng

1
Tôi hiểu, nó khá mới so với những cái khác. Các giải pháp kém khác (theo lời khuyên của riêng tôi) đã tồn tại trước đây nhưng tôi nghĩ rằng giải pháp này phù hợp hơn với ngôn ngữ và vấn đề.
Klaim

1
C ++ đã có các khung như vậy - web đã từng được chạy hoàn toàn với các ứng dụng cgi hoặc các dll ISAPI của MS hoặc thậm chí ATLServer của Microsoft. Ngày nay, chúng tôi có một số khung web c ++ và Microsoft đang làm việc trên Casablanca, nơi cung cấp cho bạn c ++ dưới dạng dịch vụ đám mây.
gbjbaanb

Cần phải đề cập rằng hầu hết các ứng dụng web sống phía sau máy chủ ngoại vi và nói chuyện với CGI, truyền dữ liệu trong môi trường, stdin và stdout hoặc FCGI, sử dụng ổ cắm và giao thức có phần đơn giản hơn HTTP.
Jan Hudec ngày 1 tháng

3

Giống như bất kỳ ngôn ngữ khác ....

Mở một ổ cắm TCP, gửi và nhận tin nhắn http. Phân tích chúng và làm công cụ dựa trên nội dung.

Hãy xem Qt để biết ví dụ về khung c ++ hỗ trợ một số chức năng http cơ bản.

Ngoài ra còn có các khung web dành riêng cho C ++. Không nhiều cũng không được sử dụng rộng rãi, AFAIK. Có lẽ bởi vì nếu bạn làm web thông qua C ++, dù sao bạn cũng đang làm một thứ gì đó rất chuyên biệt và muốn toàn quyền kiểm soát mọi thứ.


Tôi có lẽ đã có thể tự mình tìm ra điều này. Chương trình web duy nhất tôi đã thực hiện là thông qua Django, vì vậy tất cả đã được trừu tượng hóa.
Khoa học điên cuồng

Tôi nhận ra rằng. Django rất hay, nhưng nếu bạn tìm hiểu sâu về nó, bạn sẽ thấy phần cốt lõi không khó lắm. Bây giờ, viết một Django tương đương trong C ++, có một thử thách thú vị. ;)
Macke

@Macke Vâng, tôi đoán CPPCMS là một thử thách thú vị, mặc dù không chắc chắn. Việc thiếu kết nối mạng tiêu chuẩn trong C ++ không giúp ích được gì, nhưng có rất nhiều giải pháp để làm việc với nó. Vấn đề chính với C ++ tôi đoán là thực tế là khó thực hiện cập nhật mà không khởi động lại tệp thực thi và đôi khi cũng quá lâu để biên dịch. CPPCMS giúp với điều đó mặc dù.
Klaim

Btw, đối với thư viện c ++ kết nối mạng async hiện đại, tốt, tôi khuyên dùng thư viện ASIO, có sẵn như là một phần của gói Boost tuyệt vời. Tôi đã viết một số ứng dụng máy khách / máy chủ TCP / UDP đơn giản trong đó và nó khá đẹp.
Macke

2

Từ góc độ khách hàng, nếu bạn có chương trình C / C ++ và bạn muốn sử dụng nó để nói chuyện với internet, bạn sẽ sử dụng libcurl. Đó là khá nhiều thư viện chuẩn (và toàn diện) để kết nối với các url http để gửi và nhận dữ liệu. Có một số thư viện khác - Microsoft có một vài, có một vài thư viện nguồn mở.

Bây giờ, đó là các URL cũ đơn giản qua http (hoặc SMTP, hoặc FTP hoặc Gopher hoặc .. libcurl rất toàn diện!) Nếu bạn đang cố gắng sử dụng các dịch vụ web qua SOAP, thì bạn có thể sử dụng một trong nhiều thư viện khác như gsoap.

Đối với phía máy chủ, bạn cần một máy chủ web hoặc khung hiển thị mã C ++ của bạn. Một lần nữa, có nhiều cách để làm điều này - các chương trình web sớm nhất là tất cả C / C ++, được viết dưới dạng chương trình CGI trong đó máy chủ web gọi ứng dụng của bạn bằng hình thức IPC. Kể từ đó, chúng tôi có Wt, Qt, cppCMS, ffead và tất cả những người từ Microsoft (ISAPI, ATLServer, và giờ là Casablanca).

Tôi nghĩ lý do no-onne thực sự sử dụng C ++ cho chương trình web của họ là vì các ngôn ngữ khác được đóng gói sẵn với các thư viện này. C ++ (như mọi khi) bạn phải đi tìm một thư viện để sử dụng, trong khi PHP chỉ sẵn sàng để đi vào web.


-4

Kiến trúc máy khách-máy chủ cho phép điều này xảy ra.

C ++ có thể được sử dụng để phát triển máy chủ.

Về phía khách hàng, các công nghệ web có thể được sử dụng để liên lạc với máy chủ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.