2010-02-04 30 views
10

Từ một người muốn biết thêm về Windows Internals, đọc cuốn sách "Windows Internals", và muốn tham gia vào phát triển trình điều khiển, có phải học lập trình COM hay không?Học COM vẫn còn sử dụng bất kỳ?

Tôi nên thâm nhập sâu vào nó như thế nào? Chỉ cần hiểu những điều cơ bản hoặc nên hiểu được nâng cao, có tính đến ở trên.

Trả lời

4

COM không được sử dụng nhiều trong phát triển hiện tại, nhưng có một số lượng lớn phần mềm vẫn còn sử dụng nó. Chỉ cần hiểu những điều cơ bản là đủ.

+4

"COM không được sử dụng nhiều trong phát triển hiện tại" .. thực sự? Tôi làm việc chủ yếu trong .net, nhưng dành nhiều * thời gian để giao tiếp với các thành phần dựa trên COM! – Rob

+0

Giao diện với phần mềm cũ, vâng - đó là lý do tại sao tôi nói rằng anh ấy nên tìm hiểu những điều cơ bản. Tạo thành phần COM mới, không quá nhiều. – Joel

+2

Nếu bạn nhận được lời mời làm việc, nơi bạn sẽ phát triển COM, hãy chạy nhanh nhất có thể theo hướng ngược lại. –

4

Trình điều khiển thiết bị Windows không liên quan gì đến COM. Bạn có thể không biết gì về nó một cách an toàn.

+2

lưu ý hoàn toàn đúng sự thật. có một dạng COM được sử dụng bởi ngăn xếp trình điều khiển đa phương tiện. –

+2

+1 là sự thật, nhưng có một số lượng đáng ngạc nhiên các API cấp thấp hơn mà áp phích có thể bắt gặp, sử dụng giao diện "giống như COM". Tôi chạy vào này với API VSS, trong đó có một thực hiện riêng biệt của IUnknown. Việc biết COM cho phép tôi hiểu API nhanh hơn. – codekaizen

7

COM cũng không có nhiều giá trị để phát triển trình điều khiển chế độ hạt nhân, nhưng nó có khả năng hữu ích cho trình điều khiển chế độ người dùng. DirectShow là COM, ví dụ, và thậm chí có một analog COM trọng lượng nhẹ được sử dụng trong các bộ lọc chế độ hạt nhân DShow.

Có rất nhiều mã ở đó là COM và mã kế thừa mất nhiều năm hoặc nhiều thập kỷ để biến mất. Nhưng quan trọng hơn là IMO thực tế là một assembly .NET trông giống như các đối tượng COM khi được sử dụng từ C/C++, vì vậy tôi nghĩ vẫn còn một số giá trị khi biết COM nếu bạn định viết mã C/C++.

Nếu bạn dự định chuyển sang C#, Java hoặc một trong hàng chục ngôn ngữ khác mà không có con trỏ (đánh giá từ các câu hỏi ở đây SO) phần lớn các lập trình viên đã chấp nhận, thì không, không có cơ hội Giá cả.

+4

Khi bạn xúc phạm người dân ở đây, họ có xu hướng phản ứng bằng cách downvoting câu trả lời của bạn, vì vậy tôi sẽ vượt qua. : D –

1

Một mặt, COM có vẻ là phương pháp ưa thích của Microsoft trong việc tương tác giữa mã gốc và được quản lý (.Net). Và thành thật mà nói,. Net không xử lý COM tốt.

Mặt khác, theo lời bất hủ của Lino Tadros:

COM cũng giống như hút thuốc: Nếu bạn chưa bắt đầu, bạn không nên bắt đầu bây giờ, nếu bạn đã làm việc đó, đó là thời gian để dừng lại.

Cá nhân, tôi sử dụng nó khi tôi cần nói chuyện với các đối tượng COM hiện có (như MSXML), hoặc nếu tôi hoàn toàn cần nói chuyện với hội .Net. nhưng đừng coi nó hữu ích cho sự phát triển mới.

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