我正在寻找优化我的套接字服务器可以处理的并发连接数的选项,并且有一个想法,这个选择取决于能否序列化C#套接字,以便可以从内存中删除它们,然后根据需要进行恢复.此方案仅对我来说是可接受的,因为会话持续数小时,并且很少使用套接字发送给客户端,并且在此期间从不接收.我当前的实现是内存限制,因为我在相应客户端会话的生命周期内将每个套接字保存在内存中.同样,我的想法是,如果我能够序列化套接字并将其写入光盘或将其粘贴到分布式缓存/数据库/文件存储中,我可以释放服务器上的内存,代价是处理每个内存所需的额外时间发送(即 反序列化套接字,然后发送它).我尝试了几种选择,但每次都遇到了障碍:
通过读取和写入内存中对象的指针来序列化/反序列化套接字.我似乎无法在序列化后恢复套接字.
使用Socket.DuplicateAndClose()方法获取SocketInformation,然后序列化它,并在需要时使用SocketInformation将套接字恢复到同一进程.一旦恢复它我似乎无法使用套接字,我不确定这将节省大量内存,因为它似乎将非托管资源留在内存中.
在我看来应该有办法实现这一目标.最终,我正在寻找有人指出我正确的方向或确认它是否可能.
任何帮助是极大的赞赏!