2010-08-24 34 views
6

Tôi đang viết phần mềm cho thiết bị phần cứng mới mà tôi muốn bất kỳ loại ứng dụng nào của bên thứ ba mới có thể truy cập nếu họ muốn.Tôi có nên sử dụng CORBA, MessagePack RPC hoặc Tiết kiệm, hoặc cái gì khác hoàn toàn không?

Phần mềm sẽ là một quá trình gốc (C++) nên được các trò chơi và ứng dụng của bên thứ 3 có thể hỗ trợ thiết bị phần cứng. Các ứng dụng của bên thứ 3 cũng sẽ có thể nhận các sự kiện từ quá trình gốc, trên cơ sở đăng ký. Vì vậy, ngoài quy trình gốc, tôi cũng sẽ cung cấp thư viện "trình kết nối" cho nhà phát triển bên thứ 3, cho tất cả nền tảng/ngôn ngữ mà họ có thể chọn (Java, C++, Python, v.v.) để nhúng vào ứng dụng của họ để họ có thể dễ dàng kết nối cho thiết bị với hầu như không có bất kỳ mã bổ sung cần phải được viết bởi chúng. Tôi muốn nhắm mục tiêu tất cả các nền tảng hệ điều hành máy tính để bàn/máy tính xách tay và có ý tưởng tốt về những chức năng tôi muốn hiển thị, nhưng lý tưởng là tôi không muốn quá khó khăn (nghĩa là tôi muốn nó có thể mở rộng thanh lịch từ cả máy khách và máy chủ) quan điểm).

Tôi đang tìm kiếm độ tin cậy về sau, hiệu suất, tính bảo trì trong tương lai và tính linh hoạt đa nền tảng/ngôn ngữ trong tương lai, và dễ phát triển theo thứ tự đó.

Tôi nên sử dụng thông tin gì?

CORBA, MessagePack-RPC, Tiết kiệm hoặc hoàn toàn khác?

(Tôi đã bỏ qua ICE vì đó là cấp phép)

+4

CORBA là * cổ *. Nó cũng nặng và lỗi thời. Có gần như chắc chắn là một giải pháp tốt hơn. – skaffman

+4

skaffman, tính từ cổ xưa, nặng ký và lỗi thời không làm tôi thất vọng chút nào. Số lượng bộ nhớ trên mỗi ORB chỉ là một vài megabyte, có thể là xấu cho nhúng, nhưng hoàn toàn tốt cho máy tính để bàn, và hiệu suất là nhanh. Tôi lo ngại về tốc độ hiệu suất, tính linh hoạt đa nền tảng, dễ phát triển, bảo trì và độ tin cậy trong tương lai. Miễn là nó là tốt nhất trong các phòng ban tổng thể, nó không quan trọng bất cứ ai khác "nghĩ" về nó, cũng không phải là "mốt nhất thời", nó sẽ giành chiến thắng. Tôi tự hỏi nếu đó là điều tốt nhất cho những gì tôi đang làm. – Navigateur

+1

Chúng tôi chỉ đơn giản là không thể trả lời một câu hỏi mở này mà không biết yêu cầu của bạn, phần mềm của bạn là gì, đối tượng mục tiêu, đường dẫn nâng cấp, nền tảng nó sẽ chạy trên, v.v. –

Trả lời

1

CORBA là thứ "RPC" miễn phí duy nhất có thể hoạt động cho hệ thống của tôi ngay bây giờ, mặc dù nó có quy mô rất nặng. Tiết kiệm không thân thiện với Windows. Cả MessagePack-RPC đều có sẵn ở tất cả các ngôn ngữ và hệ điều hành, mặc dù nó vẫn đang được phát triển. Nếu Corba có khả năng mở rộng thanh lịch, có lẽ nó sẽ không trở nên lạc hậu chút nào.

Giao thức Bộ đệm và nhắn tin sẽ hoạt động, tôi phải phát triển cả ứng dụng khách và dịch vụ cho mọi nền tảng/ngôn ngữ. Nó cũng sẽ rất mở rộng. Tôi đã quyết định về điều này.

+0

Tại sao bạn nghĩ CORBA "quy mô rất nặng"? Có rất nhiều hệ thống âm lượng rất cao sử dụng CORBA trong sự tồn tại ngày nay. –

+2

Thêm thuộc tính mới, điều này có được xử lý một cách thanh lịch trong CORBA khi mọi người đang sử dụng máy khách cũ với máy chủ mới hay khách hàng mới có phiên bản máy chủ cũ (cả hai đều có thể trong trường hợp của tôi)? Ấn tượng của tôi là Corba bị phá vỡ. Điều này là xấu - nó không cần phải theo cách này .. Corba sẽ chinh phục thế giới nếu nó liên tục xử lý việc bổ sung và loại bỏ các đặc tính và chức năng. Mọi người muốn cập nhật kiến ​​trúc của họ mọi lúc: Mọi phiên bản, ràng buộc và xử lý cần thiết phải là công việc của nhà phát triển bên ngoài CORBA. Bản thân RPC phải 100% khả năng mở rộng/không thể xử lý được. – Navigateur

+1

Không nhiều hệ thống RPC xử lý phiên bản một cách liền mạch. Một trong những lý do là nó sẽ phải chịu quá nhiều chi phí cho mỗi cuộc gọi CORBA. –

2

Nếu cổ và nặng không đưa bạn đi, lỗi thời chắc chắn nên. Bất kể, tôi có thể cho bạn biết những gì chúng tôi đã sử dụng Bộ đệm giao thức của Google tại nơi làm việc gần đây và chúng khá dễ sử dụng.

Từ quan điểm của nhà phát triển, tất cả những gì bạn cần làm là xây dựng GPB (thực sự không khó), và sau đó nó sẽ tạo ra các tệp nguồn cho bạn. Kết quả cuối cùng là một giao diện truyền thông điệp truyền tin nhị phân đa nền tảng (nghĩ XML và RMI giới hạn, không phải chức năng giống như MPI).

Chúng tôi sử dụng nó trên Windows để nói chuyện với một hệ thống Linux dựa trên cánh tay (TS-7200 từ cánh tay nhúng) chạy cùng một phần mềm. với kiến ​​thức của tôi, nó tương thích với nhiều ngôn ngữ.

+0

Đây có phải là tin nhắn không? Rất thú vị! Với sự linh hoạt, bạn khuyên tôi nên sử dụng protobuf trong tình huống của mình như thế nào? Tôi biết đó là "tuy nhiên bạn thích" nhưng tôi muốn mọi phần mới của hệ thống của tôi tương thích ngược với mọi phần cũ. (điều này đang nhìn về phía trước - tôi chưa bắt đầu). Cách tốt nhất để đạt được điều này là gì? – Navigateur

+0

Nếu bạn thực hiện tìm kiếm trên google, bạn có thể tìm thấy một số tài liệu trong repo của họ, bao gồm một số phương pháp hay nhất. Nó thực sự phụ thuộc vào tình hình chính xác của bạn. Đây không phải là thông điệp nghiêm chỉnh; nó là một phương thức tuần tự nhị phân chéo/đa hệ thống. Nếu bạn muốn nó chỉ để truyền dữ liệu, bạn có thể làm điều đó. Nếu bạn muốn xây dựng một khung RMI, bạn có thể làm điều đó. –

4

Tiết kiệm hoặc Gói tin nhắn là tùy chọn tốt nhất trong tương lai. Cả hai đều có kiểu dáng đẹp, trọng lượng nhẹ và không thêm nhiều thời gian trễ cho quy trình của bạn. Họ có hỗ trợ cho hầu hết các ngôn ngữ phổ biến và đang trong Phát triển tích cực. Ở giai đoạn hiện tại, tôi thích cá nhân tiết kiệm hơn nhưng gói tin dường như hứa hẹn rất nhiều tính năng.

Tiết kiệm có thể không thân thiện với cửa sổ như chúng tôi muốn nhưng mọi người đang sử dụng nó trên cửa sổ. Đây là hướng dẫn bắt đầu để tiết kiệm trên cửa sổ. http://wiki.apache.org/thrift/ThriftInstallationWin32 Chỉ cài đặt và nhận trình biên dịch tiết kiệm có thể phiền hà trên cửa sổ. Sử dụng các tệp được tạo ra phụ thuộc vào ngôn ngữ bạn chọn và nhiều ngôn ngữ có hỗ trợ tốt để chạy các tệp bằng cách nhập thư viện tiết kiệm.(Java nó là rất dễ dàng, MAVEN artifact)

Có một cuộc thảo luận về khuôn khổ RPC có sẵn tại RPC frameworks available?

CORBA theo tôi là cũ cồng kềnh và rất nặng.

0

Tôi hiện đang sử dụng Apache Thrift cho một dự án Quản lý bệnh viện. Nó tốt hơn CORBA trong nhiều lĩnh vực, chưa kể nó nhẹ và dễ thực hiện và dễ hiểu hơn nhiều. Các đường cong học tập cho tiết kiệm chắc chắn là tinh tế so với CORBA, nhưng tài liệu cho tiết kiệm là điều tồi tệ nhất.

Tôi đang sử dụng máy chủ Ruby Thrift mà khách hàng của Obj-C và Java kết nối. Trình phân tích cú pháp tiết kiệm hoặc "trình biên dịch" thực hiện một công việc khá tốt khi tạo ra các tệp nguồn cho các ngôn ngữ bạn muốn, mặc dù nó quá dài dòng. Tôi chắc chắn sẽ xem xét việc thực hiện tiết kiệm, hoặc Google ProtoBuffs nếu tôi bắt đầu một dự án mới, vì CORBA thực sự lỗi thời và có thể không triển khai các công nghệ mới trong tương lai, chưa kể rằng có nhiều lỗ hổng và khai thác nhắm mục tiêu CORBA được vá vì nó không được phát triển nữa, trình bày một số lỗ hổng bảo mật nghiêm trọng trong dự án mới của bạn.

Tiết kiệm hỗ trợ nhiều ngôn ngữ lập trình: C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Mục tiêu-C, JavaScript, Node.js, Smalltalk, OCaml và Delphi như bài viết này. Hỗ trợ nhiều ngôn ngữ là chìa khóa, tôi nghĩ, cho mục đích của dự án của bạn.

+1

Tôi đã đi với ZeroMQ cuối cùng. Bạn có thể muốn kiểm tra xem nó ra. Nó thực sự mát mẻ bởi vì bạn có thể làm cho nó như là mở rộng như bạn muốn (về việc thêm/loại bỏ tài sản vv). – Navigateur