2012-11-22 13 views
7

Theo hiểu biết của tôi, IOLibusocket có mức độ trừu tượng gần như giống nhau. IOLib sử dụng các ổ cắm phụ trợ hệ điều hành, mặt khác, usocket sử dụng ổ cắm Lisp-runtime-backend.IOLib vs usocket

Tôi tự hỏi đó là lựa chọn tốt hơn cho các trường hợp sử dụng cụ thể.

Ví dụ, một máy chủ mà cần đồng thời lớn, hoặc một khách hàng mà tập trung vào tính di động vv

+1

Tôi nghĩ bạn vừa trả lời câu hỏi của mình với đoạn cuối cùng. Bạn cũng có thể loại bỏ nó khỏi câu hỏi, đăng nó như là một câu trả lời và chấp nhận nó (có, bạn có thể chấp nhận câu trả lời của riêng bạn). – acelent

Trả lời

4

Tôi nghĩ, this blogpost trả lời câu hỏi của bạn.

Tóm lại, nếu bạn đang viết thư viện, thư viện này sẽ hoạt động trên tất cả các nền tảng và triển khai (với định nghĩa hợp lý là "tất cả"), hãy sử dụng usocket. Đối với các trường hợp sử dụng khác trên nền tảng Unix, IOLib có lẽ linh hoạt hơn. Ví dụ, nó hỗ trợ các ổ cắm miền Unix, cũng như không chặn IO.

Nhân tiện, tôi đã chuyển cl-redis từ usocket sang IOLib và ngược lại - API rất giống nhau, mặc dù hơi khác.

1

Nếu mục tiêu chính của bạn là tính di động, rõ ràng usockets là sự lựa chọn tốt hơn, kể từ khi nó được ghi trên this page:

USOCKET là mạng tính di động lớp cho ổ cắm kiểu BSD.

2

Mã cho USOCKET nhỏ hơn nhiều và đơn giản hơn IOLib bao gồm cả phụ thuộc. IOLib sử dụng các ràng buộc CFFI cho các tính năng Linux không có trong một số * BSD chẳng hạn.

Tất cả những thứ khác bằng nhau, mã nguồn tối thiểu luôn thích hợp hơn vì nó có nghĩa là ít lỗi hơn, vì dễ hiểu và dễ hack hơn. Mã đơn giản nhanh hơn để gỡ lỗi và triển khai dễ dàng hơn.

Ngoài ra, cả hai đều có vẻ hoạt động gần giống nhau: cả hai đều cung cấp kqueue/select để xử lý nhiều kết nối trong một chuỗi. Tôi không chắc chắn về các chức năng nâng cao hơn, như chuyển qua một bộ mô tả tập tin unix trong một ổ cắm.

Tôi muốn nói nếu bạn chỉ thích Linux, hãy dùng IOLib hoặc USOCKET, nếu bạn nhắm mục tiêu Linux và/hoặc * BSD hoặc các hệ điều hành thương mại khác hoặc muốn giữ nó đơn giản & Ngu ngốc, hãy đi với USOCKET.