7

Tôi đang tìm cách xây dựng một ứng dụng trong Azure sẽ hoạt động như trình nghe TCP, nhận các luồng tin TCP trên một cổng được chỉ định, và sau đó thêm thông tin vào cơ sở dữ liệu. Giao tiếp TCP đến sẽ được bảo mật bằng chứng chỉ.Làm cách nào để lưu trữ Trình nghe TCP trong Azure?

tôi đang xem xét các tùy chọn sau:

đám mây Dịch vụ Worker Role

này chắc chắn có vẻ như nó sẽ work. Tuy nhiên điều đó có nghĩa là tôi phải sử dụng Dịch vụ đám mây và tôi bỏ lỡ các tính năng và sự đơn giản do Dịch vụ ứng dụng cung cấp. Dịch vụ đám mây documentation cũng mô tả cụ thể cách mở các cổng TCP được yêu cầu.

Dịch vụ App

Trong một ứng dụng logic (ưu tiên), tuy nhiên điều này dường như không hỗ trợ natively một người biết lắng nghe TCP, vì vậy tôi sẽ xem xét để xây dựng một API tùy chỉnh ứng dụng. Ngoài ra tôi có thể tạo một Web Job.

Tuy nhiên tôi không chắc chắn phương pháp này sẽ làm việc, và tôi có các câu hỏi sau:

  • Tôi có thể tiếp xúc với các cổng TCP tùy ý trên các dịch vụ ứng dụng?
    • Trong khi tài liệu Dịch vụ đám mây mô tả cụ thể cách thực hiện việc này, tôi không thể tìm thấy bất kỳ điều gì tương tự cho Dịch vụ ứng dụng. Vì vậy, cấu hình không được yêu cầu hoặc giao tiếp TCP là không thể trong Dịch vụ ứng dụng.
  • Tôi có thể xây dựng trình nghe TCP bên trong Ứng dụng logic, Ứng dụng API hoặc Công việc trên web hay không, ví dụ: kiến trúc của Azure hỗ trợ các hành vi cần thiết cho một người nghe TCP?

Tôi có thể lưu trữ Trình nghe TCP trong Dịch vụ ứng dụng Azure không?

+0

Bạn có thể thực hiện công việc này qua HTTP không? Tất cả những mối quan tâm này chỉ biến mất. – usr

+0

Đáng buồn là không, TCP là một yêu cầu của ứng dụng ở đầu bên kia. –

+0

Sau đó, được thông báo rằng các hướng dẫn MSDN TCP thực sự là xấu. Cụ thể https://msdn.microsoft.com/en-us/library/fx6588te(v=vs.110).aspx thật khủng khiếp. Cũng viết mã socket là khó. Nếu bạn không thể nhận ra rằng hướng dẫn này là xấu, điều này có nghĩa rằng bạn đang khá thiếu kinh nghiệm và sẽ có một thời gian khó khăn hơn. Chỉ cần cảnh báo bạn. – usr

Trả lời

4

đám mây Dịch vụ Worker Role

này chắc chắn có vẻ như nó sẽ làm việc. Tuy nhiên điều đó có nghĩa là tôi phải sử dụng Dịch vụ đám mây và tôi bỏ lỡ các tính năng và sự đơn giản do Dịch vụ ứng dụng cung cấp. Tài liệu về Dịch vụ đám mây cũng mô tả cụ thể cách mở các cổng TCP được yêu cầu.

Chắc chắn hoạt động.

https://msdn.microsoft.com/en-us/library/azure/gg557553.aspx

Trong ServiceDefinition.csdef:

<Endpoints> 
    <InputEndpoint name="RawTCP" protocol="tcp" port="54321" localPort="54321" /> 
</Endpoints> 

App Dịch vụ

Trong một Logic App (ưu tiên), tuy nhiên điều này dường như không hỗ trợ natively một TCP > người nghe, vì vậy tôi sẽ xem xét để xây dựng một ứng dụng API tùy chỉnh. Ngoài ra tôi có thể tạo một Web Job. ...

Tôi có thể hiển thị các cổng TCP tùy ý trên Dịch vụ ứng dụng không? ...

Tôi có thể lưu trữ Trình nghe TCP trong Dịch vụ ứng dụng Azure không?

Không và không. Chỉ 80/TCP và 443/TCP được hiển thị công khai và giao thức duy nhất hoạt động là HTTP. Bạn không thể thực hiện các trình nghe tùy chỉnh với Dịch vụ ứng dụng.

Xem những hạn chế sandbox được liệt kê ở đây: https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox#network-endpoint-listening

Hãy thoải mái để thực hiện một yêu cầu kéo trong tài liệu Azure nếu hạn chế này không được đề cập trên trang App dịch vụ.

Dịch vụ Vải sẽ là một 3rd mát tùy chọn (hoặc 1?): https://azure.microsoft.com/en-us/services/service-fabric/

+1

Điều này có ý nghĩa gì với WebSockets? Tôi giả định rằng nó được hỗ trợ cho WebJobs. – jpierson

4

tôi nêu ra một vé hỗ trợ và xác nhận điều này với Microsoft.

[Trong dịch vụ ứng dụng] Azure không hỗ trợ cổng tùy chỉnh và chỉ hỗ trợ giao thức http. Hai lý do này từ chối việc sử dụng trình nghe TCP.

Ngoài ra còn có thêm thông tin cộng tác với câu hỏi này; Can I open ports on Azure Websites?

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