2016-05-18 15 views
5

Tôi đang lên kế hoạch phát hành và triển khai một ứng dụng, được viết bằng C++ và wxWidgets. Thư viện wxWidgets có sẵn dưới dạng dll và cũng như thư viện tĩnh. Do đó, tôi có tùy chọn để triển khai ứng dụng dưới dạng ứng dụng được tạo động hoặc xây dựng tĩnh.Cách thực hành tốt nhất để triển khai một ứng dụng tĩnh hoặc động là gì?

Hiện nay, tôi thích lựa chọn tĩnh-xây dựng, bởi vì:

  • thực thi không phải là quá lớn (< 20 megabyte).
  • không có phụ thuộc để xem xét.
  • không cần cài đặt.

Câu hỏi

tôi đã bỏ lỡ một cái gì đó rất quan trọng?

Trả lời

3

Đề xuất của tôi sẽ là dành cho liên kết tĩnh. hai của tôi cent vào lợi thế:

  • Bạn đang không phụ thuộc vào WX công cụ đang được cài đặt trên trang web của khách hàng, không phải bạn cần phải cung cấp cho nó đi kèm với cài đặt của bạn, không phải là cài đặt độc lập như một điều kiện tiên quyết .
  • Bạn không mong đợi hoặc yêu cầu khách hàng thực hiện cài đặt WX (hoặc thậm chí triển khai XCOPY). Khách hàng sẽ không bận tâm!
  • 20MB là khá nhỏ trong số TB của thế giới và MBs tốt về tốc độ Internet.
  • Bạn không nhận được lỗi hành vi không mong muốn từ khách hàng, nếu chúng xảy ra để sử dụng phiên bản cao hơn/thấp hơn của thư viện.
  • Bạn có thể tự tin rằng ứng dụng sẽ hoạt động giống như cách bạn đã thử nghiệm trong môi trường của mình (chủ yếu)
  • Bạn có thể tiếp tục sử dụng phiên bản X của WX, ngay cả khi phiên bản X + 1 bị lỗi. Bạn không muốn cho phép khách hàng có phiên bản thư viện "mới hơn và tinh tế", phá vỡ ứng dụng của bạn!
1

Mặc dù trong trường hợp của bạn tệp thực thi không phải là rất lớn, nó có thể cực kỳ lớn nếu bạn liên kết mọi thứ tĩnh. Nó cũng sử dụng nhiều bộ nhớ hơn vì tệp thực thi lớn hơn phải được tải vào bộ nhớ.

Nếu bạn sử dụng thư viện động, hệ điều hành có thể "chia sẻ" bộ nhớ chỉ đọc từ mỗi bộ xử lý, làm giảm yêu cầu bộ nhớ của bạn.

Cập nhật ứng dụng của bạn cũng dễ dàng hơn với thư viện động, thay vì phải cập nhật toàn bộ tệp thực thi, bạn có thể trao đổi thư viện động (giả sử giao diện của nó giống nhau) và thì đấy! Điều tương tự cũng áp dụng nếu người dùng muốn cập nhật thư viện động của họ (ví dụ, thông qua trình quản lý gói).

4

Bạn nên sử dụng liên kết động khi có lý do chính đáng để sử dụng và liên kết tĩnh khác. Một số lý do tốt để sử dụng liên kết động là:

  1. Bạn đang phân phối nhị phân cho một hệ thống mà đã có hay, có thể có, wxWidgets thư viện như một số bản phân phối Linux, OS X (với Homebrew) vv Trong trường hợp này, bạn nên sử dụng lại các thư viện hệ thống hiện có hơn là sử dụng các thư viện của chính bạn.
  2. Bạn có một số mô-đun bằng cách sử dụng wxWidgets: tiết kiệm không gian từ việc sử dụng liên kết động có thể khá đáng kể ở đây.
  3. Bạn sử dụng wxWidgets từ tệp DLL trong MSW: trong trường hợp này, chính wxWidgets cũng nên được liên kết dưới dạng DLL, nếu không bạn có nguy cơ gặp sự cố nếu nhiều hơn một tệp wxWidgets được tải vào không gian địa chỉ quy trình.
  4. Bạn có kế hoạch cập nhật cài đặt ứng dụng của mình qua mạng: trong trường hợp này có thể tốt hơn nếu chỉ cập nhật một DLL duy nhất thay vì toàn bộ ứng dụng nguyên khối.

Nếu không có lý do nào trong số những lý do này áp dụng, ví dụ: bạn chỉ muốn phân phối một chương trình duy nhất dưới MSW, liên kết tĩnh đơn giản và tốt hơn. Một lưu ý liên quan: nếu bạn kết thúc phân phối wxWidgets DLLs, hãy xem xét sử dụng một hậu tố duy nhất cho chúng thay vì "custom" được sử dụng theo mặc định, điều này sẽ làm giảm cơ hội nhầm lẫn giữa DLL của bạn và một số phiên bản khác của wx.

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