CORBA có phải là di sản không?


79

Đố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?


27
Thành thật mà nói, tôi không chắc chúng đã từng là lý do chính đáng nào - đó là một công nghệ khủng khiếp. Tôi đang nói với tư cách là một cựu lập trình viên CORBA ở đây.

2
Lý do chính đáng là khi CORBA lần đầu tiên ra đời, không có giải pháp thay thế khả thi nào (trừ khi bạn có thể DCOM hoặc DCE).
skaffman

@skaffman Có những lựa chọn thay thế - chẳng hạn như TIBCO.

Chắc chắn, nhưng điều đó cũng xấu xí, chưa kể đến việc đắt tiền.
skaffman

3
@Skaffman Bạn đang nói đùa! TIBCO Rendezvous dễ sử dụng hơn CORBA ít nhất 10 lần. Về chi phí, tôi nghĩ các IB sử dụng công cụ này có thể chi trả được. Hoặc ít nhất họ có thể, hồi đó.

Câu trả lời:


46

Vẫn có những tình huống mà CORBA có thể là một câu trả lời tốt:

  • khi bạn đang xây dựng một hệ thống phân tán bao gồm nhiều ngôn ngữ lập trình và nhiều nền tảng,
  • khi hệ thống của bạn yêu cầu gửi các cấu trúc dữ liệu phức tạp ... và SOAP không cắt nó,
  • khi bạn có tỷ lệ nhắn tin cao ... và HTTP không cắt nó, hoặc
  • khi bạn phải tương tác với các khách hàng và / hoặc dịch vụ CORBA hiện có.

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 .

  1. ICE là phần mềm được cấp GPL và có sẵn để tải xuống miễn phí. Bạn chỉ cần thanh toán cho ICE nếu bạn / công ty của bạn không sẵn sàng tuân theo các điều khoản của GPL. (Hoặc nếu bạn cần hỗ trợ.)
  2. Tôi đã sử dụng ICE làm ví dụ về một giải pháp thay thế cho CORBA. TAO là CORBA. Các tác giả ICE đưa ra một trường hợp đáng tin cậy là tại sao họ có thể đạt được hiệu suất tốt hơn bằng cách không tuân thủ CORBA.
  3. TAO không phải là triển khai CORBA mã nguồn mở / miễn phí duy nhất. Tôi có thể nghĩ về 3 người khác, ngoài đầu tôi.

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.)


Liên quan đến điểm 1 - Tôi đã mong đợi CORBA và Dịch vụ Web ít nhiều tương đương từ quan điểm đa nền tảng và đa ngôn ngữ. Mỗi cái sẽ có những điểm yếu mà họ không che đậy, nhưng nhìn chung tôi không thấy nhiều sự khác biệt. Đối với kịch bản không kế thừa này, tôi không thấy rằng đây là một vấn đề.
djna

@djna: nhưng hãy cân nhắc rằng ứng dụng không kế thừa của ngày hôm nay là ứng dụng kế thừa của ngày mai. Việc sử dụng công nghệ phần mềm trung gian đa ngôn ngữ / đa nền tảng ngày nay có thể giúp ích cho bạn sau 5-10 năm nữa khi bạn tích hợp với thế hệ ứng dụng doanh nghiệp tiếp theo.
Stephen C

@Stephen. Vấn đề duy nhất với ICE là giá cả, TAO là miễn phí.
fnieto - Fernando Nieto

3
Nói hay lắm. Quả thực Java là một triển khai CORBA miễn phí dễ thấy nhất. Và thực tế là J2EE ủy nhiệm IIOP làm phương tiện vận chuyển của nó có nghĩa là CORBA có lẽ đang phổ biến và 'hiện tại' hơn bao giờ hết.
user207421

33

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.


20

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).

  • Điện toán đám mây (dịch vụ web, điện toán có khả năng mở rộng, ghép nối lỏng lẻo, xếp hàng).
  • Dịch vụ REST (web-services lite).
  • Dịch vụ SOAP (dịch vụ web nặng).
  • Tính toán lưới / cụm (xếp hàng, thu nhỏ bản đồ và tương tự)

Nhưng tất nhiên Milage May Vary của bạn.


15

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:

  • Nó phức tạp và chỉ có một số ít người trong tổ chức của tôi biết rất rõ về nó và kết quả là tất cả các vấn đề khó khăn đều rơi vào tay họ để giải quyết.
  • Tuyển dụng nhân viên có thể là một vấn đề. CORBA không còn mát mẻ nữa và không còn trở nên mát mẻ hơn nữa. Mặc dù ở Ireland, các nhà phát triển C ++ cũng hơi mỏng.
  • Hầu hết các công ty tư vấn đều muốn sử dụng dịch vụ web cho công việc tích hợp, vì vậy nếu bạn muốn bên thứ 3 thực hiện tích hợp, bạn có thể sẽ yêu cầu api dịch vụ web.

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:

  • bộ đệm giao thức cho rất nhiều thông báo nhỏ (tôi biết rằng tôi sẽ phải cung cấp phương tiện truyền tải)
  • dịch vụ web cho ít tin nhắn lớn hơn

Đ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à.


@iain: điểm tốt. CORBA không đơn giản để sử dụng ngay cả từ Java, nơi tôi đã thực hiện hầu hết quá trình phát triển CORBA của mình. Nội dung POA / BOA rất khó để bạn hiểu rõ.
Stephen C

3
Có những thứ POA đặc biệt là khó khăn hơn so với nó nên
Iain

2
Với việc chuẩn hóa ánh xạ ngôn ngữ IDL sang C ++ 11, việc học và sử dụng CORBA trở nên dễ dàng hơn. Ánh xạ ngôn ngữ được chuyển tiếp và sử dụng lại nhiều nhất có thể từ STL. Bạn vẫn cần học POA nhưng điều đó thực sự không khó.
Johnny Willemsen

13

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.


12
Và điểm cuối cùng, đó là lý do tại sao mọi người nghĩ ra xà phòng / ws- *. Mà bây giờ cũng xấu xí và phức tạp.
leeeroy

Xà phòng không quá xấu xí khi bạn đang làm việc với các khuôn khổ thực hiện hầu hết các công việc hậu trường cho bạn.
arg20

Bạn đề xuất những lựa chọn thay thế nào?
schoetbi

5
@ arg20 - Đó là một chút giống như nói rằng SOAP không phải là quá xấu xí nếu bạn không thể nhìn thấy nó :-)
Stephen C

12

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ữ!


2
Ermm ... trước đây, tôi đã tham gia vào việc phát triển các tiêu chuẩn OMG, và tôi có thể nói với bạn rằng các quy trình không phải lúc nào cũng công khai và minh bạch như người ta có thể hy vọng. Và OMG trong lịch sử đã tránh xa vấn đề tuân thủ ... không phải IETF hoặc W3C làm tốt hơn nhiều về điều đó.
Stephen C

1+ @Selvyn tôi đang tìm kiếm thông tin này
Tony Shih

@Selvyn, Michi Henning đưa ra một lập luận khá thuyết phục ngược lại, rằng sự cởi mở của OMG là nguyên nhân hệ thống gây ra các vấn đề - queue.acm.org/detail.cfm?id=1142044 . Đọc tốt.
semisecure vào

9

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.