ActiveX

**ActiveX** là một thư viện khung dùng cho việc định nghĩa các thành phần phần mềm tái sử dụng trong một ngôn ngữ lập trình theo cách độc lập. Chương trình ứng dụng có thể được sáng tạo từ một hoặc nhiều thành phần này để cung cấp các hàm chức năng.

**ActiveX** được giới thiệu lần đầu năm 1996 bởi Microsoft như là một sự phát triển công nghệ Component Object Model (COM) và Object Linking and Embedding (OLE) của chính nó và được sử dụng phổ biến trong hệ điều hành Windows, mặc dù về tính chất công nghệ **ActiveX** không gắn liền với hệ điều hành này.

## Các điều khiển ActiveX

Các điều khiển ActiveX, các khối lệnh chương trình nhỏ, có thể dùng tạo ra các ứng dụng phân phối làm việc trên Internet thông qua trình duyệt web. Ví dụ bao gồm các ứng dụng tùy biến cho việc thu thập dữ liệu, đồng thời xem nội dung các loại tập tin và hiển thị hiệu ứng hoạt hình.

Các điều khiển ActiveX so sánh với các Java applet: lập trình viên có thể thiết kế cả hai loại của các cơ chế cho phép trình duyệt web tải về và thực thi. Nhưng các Java applet có thể chạy trên hầu hết tất cả nền tảng, trong khi các thành phần ActiveX chỉ hoat động ở trình duyệt Internet Explorer của Microsoft và hệ điều hành Windows.

Malware, ví dụ các virus máy tính và spyware, có thể vô tình cài đặt từ các web bị nhiễm dùng các điều khiển ActiveX (khi tải về ổ đĩa).

Lập trình viên có thể viết các điều khiển ActiveX trong bất cứ ngôn ngữ nào hỗ trợ thành phần phát triển COM, bao gồm các ngôn ngữ lập trình và môi trường sau:

* C++ trực tiếp hoặc có sự hỗ trợ của thư viện như ATL hoặc MFC
* Borland Delphi
* Visual Basic
* .NET Framework (C# / VB.NET)

## Lịch sử

Đối mặt với sự phức tạp của OLE 2.0 và sự hỗ trợ nghèo nàn dành cho COM trong MFC, Microsoft đã xử lý các chi tiết kỹ thuật làm những điều trên đơn giản hơn, và đổi tên cho các công nghệ như ActiveX vào năm 1996.

Ngay cả sau khi đơn giản hóa, người dùng vẫn cần các điều khiển để thực thi 6 giao diện cốt lõi. Để giải quyết các phức tạp này, Microsoft sản xuất các hướng dẫn, các lớp mã nguồn cơ sở ATL, các macro và phần mở rộng ngôn ngữ C++ để làm đơn giản hơn trong việc thiết kế các điều khiển.

Bắt đầu với phiên bản Internet Explorer 3.0 (1996), Microsoft đã thêm hỗ trợ cho các điều khiển ActiveX bên trong nội dung HTML. Nếu trình duyệt bắt gặp một trang đặc tả một điều khiển ActiveX thông qua thẻ `<OBJECT>` (thẻ HTML), nó sẽ tự động tải và cài đặt điều khiển mà không cần (hoặc rất ít) sự can thiệp của người dùng. Điều này làm trang web "phong phú" hơn nhưng lại mang đến sự khó chịu khi dùng các đối tượng (các điều khiển chỉ chạy ở Windows) và tăng nguy cơ bảo mật (nếu có sự can thiệp của người dùng). Microsoft sau đó đưa ra các giải pháp làm trình duyệt dùng ActiveX an toàn hơn.

Ví dụ:
* Tín hiệu kỹ thuật số của các gói cài đặt (tập tin và các phần thực thi  Cabinet)
* Các điều khiển phải rõ ràng để xác nhận chính chúng cho các đoạn mã kịch bản
* Thiết lập bảo mật ngày càng chặt chẽ
* Internet Explorer duy trì *danh sách đen* các điều khiển hoạt động không tốt

## ActiveX sử dụng trong các ứng dụng không phải là IE
Không phải lúc nào cũng luôn dùng IE để thực thi nội dung **ActiveX** (ví dụ cài đặt phần mềm Wine) cũng người dùng mong muốn như vậy.
* FF ActiveX Host có thể thực thi các điều khiển ActiveX trong Mozilla Firefox dành cho Windows.
* Mozilla ActiveX Control  cập nhất mới nhất năm 2005, chạy ở Firefox 1.5.
* MediaWrap for Firefox  cập nhật mới nhất vào ngày 12/06/2008, và sẽ chạy trên Firefox phiên bản từ 1.5 đến 3.5.*.

## Các công nghệ ActiveX khác
Microsoft phát triển nhiều sản phẩm và nền tảng phần mềm dùng đối tượng ActiveX. Một số còn được dùng cho tới năm 2009 như sau:
* ActiveX Data Objects (ADO)
* Active Server Pages (ASP)
* ActiveMovie, đổi tên thành  DirectShow
* Active Messaging, đổi tên thành  Collaboration Data Objects
* Active Scripting, công nghệ cho các đối tượng kịch bản ActiveX
* ActiveX Streaming Format (ASF), đổi tên thành Advanced Streaming Format, sau đó thành Advanced Systems Format

## Xem thêm
* Flash
* Silverlight
* Flex
* Java applet

## Ghi chú

## Liên kết ngoài
* Activating ActiveX Controls