Plugin (điện toán)

Trong kỹ thuật máy tính, **plugin** (), **trình cắm**, hay **phần bổ trợ** là một bộ phần mềm hỗ trợ mà thêm những tính năng cụ thể cho một phần mềm ứng dụng lớn hơn. Nếu được hỗ trợ, plug-in cho phép tùy biến các chức năng của một ứng dụng. Ví dụ, plug-in thường được sử dụng trong các trình duyệt web để chơi video, quét virus, và hiển thị các loại tập tin mới. Ví dụ hai plug-in được biết đến rộng rãi bao gồm Adobe Flash Player và QuickTime. Plugin không tự hoạt động nếu phần mềm ứng dụng chính không chạy.

## Mục đích và các ví dụ

Các phần mềm ứng dụng hỗ trợ plug-in vì nhiều lý do. Một số lý do chính bao gồm:
 
* Cho phép các nhà phát triển thứ ba tạo ra các tính năng để mở rộng phần mềm đó.
* Để hỗ trợ một cách dễ dàng trong việc bổ sung thêm các tính năng mới
* Để giảm kích thước của một ứng dụng
* Để tách mã nguồn từ một ứng dụng vì giấy phép phần mềm không tương thích.

Các ví dụ cụ thể trong các ứng dụng và lý do sử dụng plug-in:

* Chương trình thư điện tử dùng plug-in để giải mã và mã hóa (*[[Pretty Good Privacy]]*- Riêng tư tốt đẹp)
* Phần mềm đồ họa sử dụng plug-in để hỗ trợ các định dạng tập tin và các quá trình tái hiện hình ảnh (*[[Adobe Photoshop]]*)
* Các chương trình chơi đa phương tiện sử dụng plug-in để hỗ trợ các định dạng file và chấp thuận các định dạng này trong bộ lọc (*[[foobar2000]]*, *[[GStreamer]]*, *[[Quintessential]]*, *[[VST]]*, *[[Winamp]]*, *[[XMMS]]*)
* Microsoft Office sử dụng các plug-in (hay được gọi là add-ins) để mở rộng các khả năng cho các ứng dụng đó bằng cách thêm vào các lệnh tùy chọn và các tính năng đặc biệt. 
* Chương trình phân tích mạng sử dụng các plug-in để giải mã các gói định dạng (*[[OmniPeek]]')
* Các ứng dụng cảm biến điều khiển từ xa sử dụng plug-in để xử lý dữ liệu từ các loại cảm biến khác nhau (*Opticks*)
* *Smaart*, một ứng dụng phân tích phổ âm thanh chấp nhận plug-in cho các bộ xử lý tín hiệu kỹ thuật số của [[Các bên phát triển video game|bên thứ ba]]
* [[Môi trường phát triển tích hợp]] dùng các plug-in để hỗ trợ các [[ngôn ngữ lập trình]] khác nhau (*Eclipse (môi trường phát triển tích hợp) Eclipse*, *jEdit*, *MonoDevelop*)
* *Venue*, một kiến trúc pha trộn giao diện điều khiển kỹ thuật số được phát triển bởi [[Digidesign]] và được [[Avid Technology]] sở hữu, cho phép các plug in của [[Các bên phát triển video game|bên thứ ba]] 
* [[Trình duyệt web|Trình duyệt]] sử dụng plug-in (thường là triển khai các đặc điểm kỹ thuật của [http://en.wikipedia.org/wiki/NPAPI NPAPI]) để chơi các [[video]] và sử dụng các định dạng (*Flash*, *QuickTime*, *Microsoft Silverlight*, *3DMLW*)

== Cơ chế ==
Như được thể hiện trong hình, ứng dụng chính (host application) cung cấp dịch vụ (service) mà các plug-in có thể sử dụng, bao gồm một đường cho plug-in để đăng ký với ứng dụng chính và một giao thức cho việc trao đổi dữ liệu với plug-in. Plug-in phụ thuộc vào các dịch vụ cung cấp bởi các ứng dụng chính và thường không tự hoạt động. Ngược lại, các ứng dụng chính hoạt động độc lập với plug-in, làm cho nó có thể cho người dùng cuối để thêm và cập nhật các plug-in tự động mà không cần phải thay đổi ứng dụng chính.

Giao diện lập trình ứng dụng ([[Giao diện lập trình ứng dụng|API]]) mã nguồn mở cung cấp một giao diện tiêu chuẩn, cho phép các bên thứ ba để tạo ra các plug-in tương tác với các ứng dụng chính. Một API ổn định cho phép plug-in của bên thứ ba tiếp tục hoạt động như các thay đổi đối với phiên bản gốc và để mở rộng vòng đời của các ứng dụng đã lỗi thời. Các [[Giao diện lập trình ứng dụng|API]] plug-in cho [[Adobe Photoshop]] và [[After Effects]] đã trở thành chuẩn mực và các ứng dụng cạnh tranh như [[Corel Paint Shop Pro]] phải chấp nhận chúng.

== So sánh với các bản mở rộng ==

Các [[bản mở rộng]] hơi khác so với plug-in. Plug-in thường có các bộ khả năng hạn hẹp. Ví dụ, động lực thúc đẩy ban đầu khi phát triển *Mozilla Firefox'' là việc theo đuổi một ứng dụng cơ bản nhỏ, để loại ra.

## Tham khảo