[英]How to work with WebSocket[TCP connection] in asp.net web form using c#
[英]How to manage large number of TCP connections using ASP.NET and C#
我有一個連接到第三方服務器的應用程序,我們稱之為 Server-A。 我獲得了四個不同的端口,即 4000、40001、40002、40003。在每個端口上我可以創建 20 個連接,因此我可以創建與服務器 A 的總共 80 個連接。 我想創建一個服務層,它應該在提到的端口上與服務器 A 通信。 該技術將是 asp.net C#。
問題陳述
1- 應用程序應該是非阻塞/異步的,以每天處理 10 到 2000 萬個請求
2-每當服務層啟動時,它會在每個端口上創建 20 個連接。 (共 80 個連接)
2-所有連接應保持連接/活動 24/7 並在任何連接斷開/斷開時重新連接。 它會在空閑時間發送心跳消息。
我的問題
首先,我在單個端口上創建了一個 TCP 連接,它按預期工作。 然后我為其他端口復制了相同的代碼,但我知道這是非常糟糕的方法,我必須復制相同的代碼 80 次才能建立 80 個連接。 我想要一種干凈且可擴展的方式來實現它,這樣將來我可能會將連接增加到 100 或更多。 有沒有我可以使用的框架? 任何幫助都會受到極大的評價。
要處理如此大量的流量,您需要做一些事情。
假設
對於跨服務器的少於 80 個工作線程:
對於跨服務器的 80 多個工作線程:
@Kartoos Khan,我已經根據這些要求提供了一些服務,使用異步方法是在 C# 中創建高性能服務的最佳方式,因為:
讓我向您推薦《編寫高性能 .NET 代碼》一書。 第4 章,異步編程提供了提高性能所需了解的信息。
根據我的經驗,這些是我的建議:
創建一個主要的威脅來處理主程序。
創建一個 class 來處理 Socket Server,它實現了一個異步過程來接受連接,使用方法BeginAccept
和EndAccept
, 這里是如何使用它的示例。 創建另一個 class 來處理套接字連接,它具有Socket
object 作為屬性。
2.1 創建一個方法來啟動Reading進程,Server class會調用這個方法來啟動端點之間的通信。 此方法將以異步方式啟動讀取過程。
2.2 異步讀寫,需要從socket中獲取NetworkStream
,使用BeginRead
和EndRead
方法接收數據, BegineWrite
和EndWrite
方法發送數據。 這里有文檔。
如果你的服務只需要連接到一個Server,忽略第1步,執行Client class來啟動到特定EndPoint的連接。
使用集合 class,也可以是Dictionary
, Key-Value-Pair集合,來存儲每個 Client Class 並使用套接字 ID 作為訪問每個 Client Class 的鍵。
由於每個客戶端套接字都處理它自己的套接字,我用來實現一種在同一個客戶端套接字上重新連接的方法,這樣每個客戶端都對自己負責。
主程序將負責創建每個客戶端服務器並根據需要設置每個客戶端的端點,並開始連接每個客戶端。 在這種情況下, TCPClient
允許您使用BeginConnect
和EndConnect
方法開始異步連接過程。
在這里,您可以查看有關此問題的更多詳細信息。
我希望這可能對你有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.