2011-08-30 26 views
20

Tôi muốn tạo một dịch vụ nhắn tin di động, nhưng tôi không biết sử dụng chương trình socket hoặc dịch vụ web nào tốt hơn?Lập trình socket so với dịch vụ web?

Tôi cần cân nhắc những vấn đề gì khi tạo dịch vụ như vậy? chẳng hạn như chi phí kết nối .. v.v.

Nếu bạn cần thêm chi tiết, hãy cho tôi biết trước khi bỏ phiếu cho câu hỏi hoặc đóng cửa!

+1

cho ai bình chọn nó xuống! cho tôi biết tại sao ?? – Adham

+0

Rất khó hiểu bạn đang hỏi gì. Các dịch vụ Web hoạt động thông qua các ổ cắm - nó không phải là một trong hai hoặc. Ngoài ra "những gì là những mối quan tâm ..." dường như về cơ bản yêu cầu người trả lời để viết một cuốn sách. –

+0

Như tôi biết, dịch vụ web sử dụng giao thức HTTP, trong đó các gói HTTP có nhiều dữ liệu bổ sung (tiêu đề) có nghĩa là tiêu thụ lưu lượng truy cập càng nhiều, có hiệu quả không khi thiết kế giao thức của chúng tôi để giảm vấn đề đó bằng cách sử dụng lập trình socket. Về việc cân nhắc, tôi cần các tiêu đề quan trọng nếu bạn không muốn quảng cáo .. – Adham

Trả lời

17

Webservices nói chung là "dễ dàng hơn" để làm, nhờ vào sự quan tâm to lớn trong họ và sự hỗ trợ cho họ trong các công cụ phát triển và thông qua các thư viện và khung công tác. Tuy nhiên, đặc biệt nếu tải trọng của bạn nhỏ (tin nhắn kích thước của một SMS hoặc tweet thông thường), chi phí bạn tạo ra với dịch vụ web là nghiêm trọng: các byte được gửi qua mạng không dây như GPRS hoặc UMTS vẫn rất đắt, so với để chuyển byte qua cáp hoặc ADSL. Và các dịch vụ web mang theo nhiều lớp thông tin vô hình xung quanh mà khách hàng cuối cùng cũng sẽ phải trả. Vì vậy, nếu trường hợp sử dụng của bạn dựa trên các thông điệp ngắn, tôi khuyên bạn nên thực hiện một số tính toán mô phỏng băng thông và quyết định tiết kiệm băng thông của bạn và tăng độ phức tạp của ứng dụng.

Khi nhìn vào ổ cắm, hãy xem UDP: nếu bạn có thể sống với thực tế là về cơ bản bạn ném một gói nào đó và không thiết kế một số cơ chế ack vào giao thức của mình, bạn sẽ không bao giờ chắc chắn nó rất hiệu quả vì không có lưu lượng để tạo và duy trì kết nối, và thậm chí các tin nhắn khá dài cũng có thể được vận chuyển bên trong 1 gói UDP.

EDIT dựa trên nhận xét:

  • ổ cắm dòng: không chắc chắn làm thế nào bạn xác định suối, nhưng con suối và tin nhắn là hai khái niệm rất khác biệt đối với tôi, một dòng là một chuỗi thường còn dữ liệu đang được gửi đi, trong khi một thông điệp là một thực thể được gửi đi, và được người nhận thừa nhận hoặc trả lời tùy chọn.
  • mô phỏng băng thông: cách dễ nhất để hiểu những gì tôi đang nói là lấy Wireshark và thêm tất cả mọi thứ được chuyển qua mạng để thực hiện một yêu cầu đơn giản của một chuỗi rất ngắn - bạn sẽ thấy một số lớp quản trị thông tin (tức là vô hình, chỉ ở đó để làm cho các lớp giao thức khác nhau hoạt động) là tất cả lưu lượng truy cập được trả bởi người dùng cuối. Sau đó, viết một dịch vụ giả lập nhỏ sử dụng UDP để truyền tải cùng một thông báo hoặc sử dụng một công cụ như netcat, hướng dẫn tốt here và thêm các byte được vận chuyển. Bạn sẽ thấy sự khác biệt khá lớn về số lượng byte được trao đổi.

EDIT2, điều tôi quên đề cập: mạng di động được sử dụng để mở, mạng trong suốt với các thiết bị được xác định bởi địa chỉ IP công khai. Có một sự tiến hóa nhanh chóng đối với các mạng di động NAT có tác động đến cách các thiết bị bên trong và bên ngoài "khu vườn có tường bao quanh" này có thể giao tiếp (NAT traversal). Bạn sẽ cần tính đến điều này khi thiết kế kênh giao tiếp của mình.

Đối với việc sử dụng các dòng cho một ứng dụng chat: nó cung cấp một số lợi thế khái niệm, nhưng bạn rất tốt có thể lớp ứng dụng trò chuyện trên UDP, nhìn here hoặc here

+0

xin vui lòng cho bạn biết thêm chi tiết về "Tôi khuyên ít nhất nên làm một số tính toán mô phỏng băng thông" .. và cảm ơn bạn rất nhiều vì thông tin rất hữu ích của bạn – Adham

+0

chẳng hạn. bạn nghĩ gì về công nghệ đằng sau dịch vụ đó? .. http://www.redmondpie.com/chaton-for-iphone-android-and-blackberry-is-samsungs-answer-to-imessage-video/ – Adham

+0

xin lỗi, ý tôi là trong luồng, Nếu tôi muốn triển khai trò chuyện trực tuyến, đó có phải là một khái niệm tốt không? – Adham

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