Đối với một dự án máy tính phân tán bắt đầu từ hôm nay, với 0 thành phần kế thừa, có bất kỳ lý do chính đáng nào để xem xét CORBA không?
Đối với một dự án máy tính phân tán bắt đầu từ hôm nay, với 0 thành phần kế thừa, có bất kỳ lý do chính đáng nào để xem xét CORBA không?
Câu trả lời:
Vẫn có những tình huống mà CORBA có thể là một câu trả lời tốt:
Nhưng phải nói rằng, có những lựa chọn thay thế làm được những gì CORBA làm, chỉ tốt hơn ... hoặc lâu hơn mà họ tuyên bố. Ví dụ ICE của ZeroC
CHỈNH SỬA @fnieto chuông để nói (hoặc ngụ ý) rằng ICE không miễn phí, nhưng TAO thì có.
Điều này là không chính xác và gây hiểu lầm .
Mặt trái của ICE là thiếu khả năng tương tác với các ngăn xếp phần mềm trung gian CORBA, nhưng theo kinh nghiệm của tôi, khả năng tương tác của các triển khai CORBA khác nhau cũng có thể có vấn đề. (Mọi thứ có thể đã được cải thiện trong lĩnh vực đó ... nhưng tôi đã không làm bất kỳ công việc CORBA nào kể từ ~ 2002, vì vậy tôi hơi mất liên lạc.)
Từ những câu trả lời hiện có, điều này gần như trở thành một chủ đề tôn giáo. Người ta có thể nhìn CORBA giống như cái ly nửa rỗng / nửa đầy: một mặt, CORBA có niên đại cũ, mặt khác nó tương đối ổn định với một số triển khai có sẵn và "bạn biết đấy".
Trong công việc của mình, tôi thấy CORBA được triển khai trong các hệ thống nhúng, hệ thống thời gian thực (CORBA có phần mở rộng RT), và những thứ tương tự. Không có nhiều lựa chọn thay thế AFAIK.
Một "lợi thế" khác của CORBA là sự sẵn có của một số triển khai mã nguồn mở chất lượng cao, chẳng hạn như TAO, MICO, JacORB, v.v., với các mô hình cấp phép và hỗ trợ khác nhau. Ngoài ra còn có các phiên bản thương mại có sẵn.
Đối với "hầu hết" các ứng dụng CORBA đang được triển khai trong Java - theo kinh nghiệm của tôi thì đó không phải là trường hợp. Mặc dù ánh xạ ngôn ngữ cho CORBA sang Java là một trong những ngôn ngữ đẹp nhất (có thể không phải nói nhiều), Java đã có một mô hình tính toán phân tán rất đẹp cung cấp sự phong phú ngoài CORBA và tất cả các ứng dụng Java sử dụng nhiều hơn CORBA. Phần lớn sự phát triển CORBA mà tôi đã thấy là trong C ++ (cũng là ngôn ngữ ánh xạ tồi tệ nhất).
Cuối cùng, CORBA cung cấp các lệnh gọi không đồng bộ phía máy khách được tiêu chuẩn hóa dưới dạng AMI, nhưng không bao giờ cung cấp xử lý không đồng bộ ở phía máy chủ. TAO cung cấp triển khai phía máy chủ phi tiêu chuẩn được gọi là AMH.
Tôi tin rằng Corba đã được hồi sinh bởi thông số kỹ thuật EJB ban đầu, vì EJB có thể dễ dàng biến thành hạt CORBA bằng một chút cấu hình. Tôi nghi ngờ rằng hầu hết các triển khai Corba đã thực sự được triển khai trong Java.
Về mức độ phổ biến, tôi nghĩ rằng có thể có một số triển khai cấp cao còn lại trong một số thập kỷ nhưng đối với phần lớn mọi người, Corba đã chết.
Có rất nhiều cách rất gợi cảm để làm điều tương tự (ngoại trừ loại cao cấp được đề cập ở trên).
Nhưng tất nhiên Milage May Vary của bạn.
Rõ ràng là nó phụ thuộc vào loại máy chủ và giao tiếp giữa các quy trình mà bạn đang xem xét. Và tôi nghĩ Stephen C và Chris Cleeland đã che đậy rất tốt những mặt tích cực của Corba.
Ứng dụng của chúng tôi đã sử dụng CORBA (Orbix) trong hơn 10 năm, hiện tại cũng vậy. Và đối với cách nó được viết, CORBA là một công nghệ tốt. Tuy nhiên, nếu tôi bắt đầu lại, tôi có thể sẽ không sử dụng CORBA:
Bây giờ, tùy thuộc vào loại giao tiếp mà tôi muốn, tôi có thể sẽ xem xét:
Điều này dựa nhiều hơn vào việc tìm kiếm nhân viên và chuyên môn, sự hỗ trợ của bên thứ 3 và tận dụng các thư viện mã nguồn mở, sau đó là chất lượng kỹ thuật của CORBA, mà tôi sử dụng hàng ngày và rất mạnh nếu hơi rườm rà.
CORBA chắc chắn đã lỗi thời, nhưng nó cũng cung cấp một số chức năng cấp cao nhất định (xem tại đây ). Tất cả chức năng này đều có thể được thực hiện bằng cách sử dụng các dịch vụ web hiện đại, nhưng có lẽ không phải theo kiểu tiêu chuẩn, và không phải là không có nhiều công việc bổ sung.
Tuy nhiên, đối với 99% các dịch vụ phân tán, CORBA là không mong muốn. Nó xấu xí, phức tạp và khó sử dụng.
Có một điều mà chưa ai nói đến ở đây là TIÊU CHUẨN MỞ, MỞ. Trong số tất cả các công nghệ tồn tại (ngoại trừ SOAP), nó là tiêu chuẩn giấy trắng mở thực sự duy nhất. Tiêu chuẩn không phụ thuộc vào bất kỳ công nghệ của một tổ chức nào. RMI (Sun / Oracle), DCOM (hiện đã bị loại bỏ - Microsoft). Nó hoàn toàn trung lập với Nhà cung cấp và Ngôn ngữ. Ngoại trừ SOAP, không có công nghệ DOS nào khác (Công nghệ đối tượng phân tán)
Tôi là một kiến trúc sư phần mềm và thường xuyên phải đưa ra lựa chọn DOS nào nên được sử dụng trong thiết kế hệ thống. Nếu không phải vì cuộc chiến tôn giáo mà tôi phải đối mặt mỗi lần, đó sẽ là MOM hoặc CORBA.
Hãy nhìn nó theo cách này, nếu nó đã chết, không có mạng 3 / 4G nào hoạt động. 3GPP hoàn toàn là CORBA được chỉ định. Hệ thống vệ tinh Châu Âu là tất cả các CORBA được chỉ định. Hãy tự hỏi tại sao? Đó là bởi vì chúng phải dựa trên kiến trúc trung lập của Nhà cung cấp và Ngôn ngữ!
Tôi muốn nói rằng mức độ hoàn thiện hiện tại của Dịch vụ Web (bao gồm REST) và trong thế giới Java EJB (thậm chí có thể sử dụng CORBA dưới vỏ bọc) bao hàm những gì cần thiết cho các hệ thống doanh nghiệp phân tán.
Tôi khuyên rằng một khía cạnh mà bạn nên xem xét cẩn thận là mức độ tương tác không đồng bộ mà bạn cần trong hệ thống phân tán của mình. Tôi giả định rằng bất kỳ hệ thống phân tán nào có quy mô không tầm thường đều cần thông tin liên lạc không đồng bộ và cơ sở hạ tầng được chọn phải hỗ trợ xử lý không đồng bộ, thường có nghĩa là hàng đợi.
Điều đó không mâu thuẫn với việc sử dụng WebServices (hoặc thực sự là CORBA) nhưng nó chỉ ra một khía cạnh trong việc lựa chọn sản phẩm của bạn có thể bị bỏ qua trong sự phấn khích ban đầu khi bắt đầu một số xử lý phân tán