2010-05-25 43 views
8

Tôi cần biết cách bắt đầu viết một ứng dụng dựa trên kiến ​​trúc trình cắm thêm. Tôi có nghĩa là làm thế nào để viết một mã cơ sở và cho phép người khác phát triển ứng dụng bằng cách thêm các trình cắm thêm mà họ viết. Tôi biết rằng có một số vấn đề khi làm như vậy trong C++. hầu hết mọi người sử dụng một ngôn ngữ khác như python để thêm các trình cắm thêm vào ứng dụng C++ của họ.ứng dụng c/C++ dựa trên kiến ​​trúc plug-in

+0

Bạn có nghĩa là các trình cắm phải được viết bằng C++ không? – xtofl

+0

Tùy thuộc vào hệ điều hành bạn đang nhắm mục tiêu, ở một mức độ nào đó là –

+0

có. nhưng tôi lo ngại về khả năng tương thích nhị phân giữa ứng dụng chính và trình cắm được viết bằng C++ – sepisoad

Trả lời

4

Tôi nghĩ, đây không phải là câu trả lời của bạn mong đợi, nhưng bạn có thể thử kiểm tra các nguồn Rainmeter. Nó được viết bằng C++ (một số nơi có thể được thực hiện tốt hơn, để tâm trí của tôi, nhưng tổng thể nó là ok) và toàn bộ ứng dụng được thực hiện theo cách để nó chỉ xử lý các plugin.

Ngay cả API đơn giản được thực hiện qua plugin, cũng có một loạt ví dụ về plugin được đóng góp, ý tôi là, được viết bởi người khác (tôi cũng đã làm như vậy, một ngày).

Tôi nghĩ bạn thực sự có thể nghiên cứu nhiều thủ thuật mới trong phát triển dựa trên plugin bằng cách xem các ứng dụng khác.

Ngoài ra, một mẫu tốt khác là Miranda IM.

Edit: Ngoài ra, nếu tôi han cùng một công việc, tôi sẽ thực sự thêm một số python (hoặc một cái gì đó như thế) phụ trợ để ứng dụng của tôi và sử dụng nó như là ngôn ngữ cho SDK (ví dụ, sử dụng boost::python).

+0

như bạn đã nói, tôi cần một số trường hợp để nghiên cứu, thanx cho các liên kết. – sepisoad

+0

mặc dù python là một giải pháp khả thi và được sử dụng rộng rãi như một ngôn ngữ mở rộng, tôi cần phải từ chối các phụ thuộc của ứng dụng cuối cùng, – sepisoad

1

bạn có thể xác định các điểm truy cập trong ứng dụng của mình nơi ứng dụng bên ngoài có thể liên lạc được không?

giả sử bạn xác định một số cơ chế ống được đặt tên hoặc ổ cắm TCP/IP, nơi ứng dụng bên ngoài sẽ gọi API này để thao tác ứng dụng của bạn?

cho rằng bạn cần đăng ký các plugin này trong ứng dụng lõi trước khi cho phép chúng sử dụng ứng dụng của bạn. thậm chí bạn có thể thêm chứng chỉ riêng tư để xác thực nguồn gốc của plugin này (ví dụ: để ký plugin với khóa riêng tư trong đó các ứng dụng của bạn sẽ xác thực khóa công khai)

4

Bạn nên:

  • xác định một giao diện
  • tải plugin của bạn và cung cấp cho nó giao diện này

plugin của bạn sẽ có thể giao tiếp với các ứng dụng máy chủ thông qua giao diện này. Điều đó có nghĩa, bạn phải suy nghĩ cẩn thận về những gì bạn muốn plugin của bạn làm.

Có thể bạn sẽ cần phải hỗ trợ các phiên bản khác nhau của giao diện nếu ứng dụng máy chủ của bạn thay đổi và bạn thêm chức năng.

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