2011-08-25 36 views
6

Trước hết những gì tôi muốn là khá phức tạp, ít nhất là đối với tôi, nhưng mặt khác nó có vẻ thú vị.Ứng dụng khách dựa trên web trong thời gian thực cho ứng dụng delphi. LÀM THẾ NÀO ĐỂ?

Tôi có một phần mềm được viết bằng delphi và tôi muốn có một ứng dụng web dựa trên thời gian thực cho nó.

Các yêu cầu:

  • Về phía khách hàng tinh khiết Javascript
  • giao diện Shiny (GWT, SmartGWT)
  • kết nối đồng bộ giữa máy chủ và máy khách. Ajax push, Long Polling, Comet, WebSocket?

Về phía server

  • quy mô-khả năng

Về phía delphi Tôi nghĩ rằng tôi có thể sử dụng ICS từ Overbyte, để xử lý các yêu cầu. Tôi biết rằng THttpAppSrv từ gói ICS có thể dễ dàng phục vụ nội dung đơn giản, nhưng về Websocket, hoặc làm cách nào để tôi có thể bỏ phiếu dài với nó?

Bạn nghĩ gì, nó là một kết hợp tốt (GWT, SmartGWT ở phía máy khách và ICS ở phía bên delphi), có dự án mẫu nào ở đó không, hoặc có giải pháp nào khác không?

Cập nhật Cảm ơn các nhận xét hữu ích, tôi nghĩ tôi sẽ tiến gần hơn đến giải pháp. Thật tốt khi biết rằng GWT có thể sử dụng một máy chủ tùy chỉnh, tuy nhiên tôi nghĩ Arnaud là đúng, GWT với máy chủ Jetty của chính nó là một giải pháp hoàn chỉnh, nhưng tiếc là không phải cho tôi. :) Tôi nghĩ rằng tôi cần một máy chủ được viết bằng delphi, có thể giao tiếp với GWT RPC.

Cập nhật 2 tôi chấp nhận câu trả lời Arnaud Bouchez của trông tôi tốt nhất cho câu hỏi ban đầu, tuy nhiên tôi nghĩ rằng có một giải pháp tốt hơn (nếu bạn thay đổi các yêu cầu một chút) để tạo một client chạy trong trình duyệt cho một ứng dụng delphi. Tôi chỉ đưa ra một bình luận nhỏ ở đây, để chia sẻ ý tưởng. Cuối cùng tôi đã sử dụng máy chủ node.js và kết nối nó với ứng dụng delphi của tôi với sự trợ giúp của ZMQ.

+0

GWT + GWT + RPC + Cầu cảng (hoặc Tomcat, JBoss, GlassFish, WebSphere ...) có thể dễ dàng được tích hợp với Delphi. Nếu bạn có Java Developer xung quanh ai có thể tạo lớp web của ứng dụng của bạn bằng cách sử dụng những công cụ này, và sau đó tích hợp lớp kinh doanh Delphi qua giao diện đồng bộ hoặc không đồng bộ, có thể kết hợp tốt nhất của cả hai thế giới. Để tăng hiệu suất bổ sung rất lớn, hãy xem xét các giải pháp lưu trữ bộ nhớ đệm như [memcached] (http://memcached.org/) có [Delphi] (http://code.google.com/p/delphimemcache/) và các máy khách Java có sẵn. – mjn

+0

Cập nhật: nếu bạn quan tâm tôi có thể xây dựng một ví dụ tích hợp GWT/Delphi hoàn chỉnh như một phần của tài liệu tôi đã viết cho thư viện truyền thông Delphi/Java và xuất bản nó bằng mã nguồn Java đầy đủ. – mjn

+0

@mjn Thx. Vâng, tôi quan tâm. Một ví dụ đơn giản với một widget SmartGWT ở phía máy khách, và cùng ở phía Delphi, kết nối async sẽ được đánh giá cao. – balazs

Trả lời

3

Giới thiệu về máy chủ HTTP ở phía Delphi, hãy xem xét sử dụng kernel mode http.sys server do Microsoft cung cấp kể từ XP. Nên nhanh hơn ICS.

Đối với phần AJAX, hãy xem Op4JS hoặc tối đa ElevateDBBuilder.

Điều tuyệt vời với các giải pháp đó là bạn có thể viết mã pascal đối tượng và mã này sẽ được dịch sang JavaScript. Chưa hoàn thành, nhưng đáng để chờ đợi một chút cho thời gian phát hành của họ.

Tất nhiên, các giải pháp AJAX cổ điển hơn tồn tại, như IntraWeb hoặc ExtPascal. Cả hai đều triển khai máy chủ web của riêng họ.

Giới thiệu về GWT, AFAIK chúng là các thư viện java, được liên kết sâu sắc với thế giới Java. Bạn sẽ không thể làm cho nó hoạt động với Delphi.

Sửa về GWT:

GWT là một khuôn khổ toàn Client-Server.

Nếu bạn đi với GWT, tôi nghi ngờ bạn sẽ kết thúc bằng một lần viết lại Java đầy đủ của ứng dụng tại một số điểm. Hoặc bạn sẽ bỏ lỡ hầu hết sự quan tâm của GWT như một khuôn khổ. Đó là lựa chọn của bạn.

Tôi thà dựa vào một số cách tiếp cận tiêu chuẩn hơn, sử dụng JSON để giao tiếp ví dụ như chúng tôi làm với khung của chúng tôi.

+0

Cảm ơn bạn đã liên kết, đây là những công cụ tuyệt vời, nhưng tôi không cần phải viết mã pascal đối tượng, bằng cách nào đó dịch nó thành javascript, thay vì giao tiếp thông qua websocket hoặc longpolling giữa máy khách và phía máy chủ. Trên thực tế GWT sẽ chuyển đổi mã java thành javascript. – balazs

+0

@balazs Vì vậy, bạn muốn viết phần khách hàng trong toàn bộ Java? Nhưng GWT sử dụng cơ chế RPC dựa trên Java Servlets để cung cấp quyền truy cập vào tài nguyên phía máy chủ. Vì vậy, bạn sẽ phải viết cũng là một phần máy chủ trong Java (hoặc mô phỏng nó với Delphi - nhưng âm thanh khó khăn). Tôi đã chỉnh sửa câu trả lời của mình để nhận xét sâu hơn với GWT. –

+0

Một số giải thích về GWT: * GWT không cung cấp "máy chủ HTTP riêng" hoặc yêu cầu máy chủ HTTP dựa trên Java * GWT có thể sử dụng JSON làm giao thức của nó, vì vậy nó không phụ thuộc vào Java Servlets ở phía máy chủ – mjn

0

Bạn đã xem Intraweb chưa? Tôi đã không sử dụng nó rộng rãi bản thân mình - nhưng nó có vẻ là khá phổ biến cho các ứng dụng web Delphi.

Tôi đã thực hiện một số Ứng dụng web bằng TWebBroker với IIS hoặc Apache. Nó là không đồng bộ, và cho phép bạn dễ dàng chuyển/chia sẻ mã Delphi với ứng dụng khác của bạn. Và nó sẽ hỗ trợ các cuộc gọi Ajax.

1

Delphi, javascript tinh khiết ở phía máy khách và giao diện sáng bóng? Bạn đang nói về Unigui!

+0

không thực sự, tôi không muốn revwrite toàn bộ ứng dụng, đó là hơn nửa triệu dòng. Tôi chỉ muốn thêm một phía khách hàng. Nhưng bạn nói đúng, Unigui rất hứa hẹn, có lẽ tôi sẽ sử dụng nó trong một dự án khác. – balazs

1

Tôi đã làm việc trên PHP, ASP và Cold Fusion trước đây, và muốn làm (gần như) giống với Delphi. Tôi đã bắt đầu xxm. Nó có mã Delphi và HTML trong cùng một tệp và (lại) biên dịch một thư viện khi bạn nhấn làm mới trong trình duyệt. Tôi đã thực hiện các trình xử lý cho các thư viện này để bạn có thể chạy chúng trong IIS, Apache, InternetExplorer, Firefox hoặc trực tiếp từ một triển khai HTTP dựa trên Delphi. (Tôi bắt đầu làm việc trên trình xử lý http.sys cũng vậy, nhưng điều đó sẽ tốn nhiều công sức hơn.)

Ngoài ra, liên quan đến câu hỏi của bạn, tôi muốn phát trực tuyến, tôi muốn rằng sản lượng của tôi sẽ được chuyển Càng sớm càng tốt cho khách hàng nghe, vì vậy bạn có thể làm các trang chạy dài, bỏ phiếu dài và tương tự. Đối với GWT và kịch bản phía máy khách khác, tôi đã sử dụng thành công prototype và jquery.

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