- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
大多数人似乎构建了一个监听器套接字,并将包含要调用以进行处理的“事件”。 EG:SocketConnected,DataReceived。程序员初始化一个监听器并绑定(bind)到“事件”方法以接收套接字事件以构建服务。
我觉得在大规模实现中,避免在监听器中使用委托(delegate)会更有效。并在回调方法中完成所有处理。可能基于知道接下来会出现什么命令的知识,使用不同的回调来接收数据。 (这是我的消息框架结构的一部分)
我四处寻找高度可扩展的示例,但我只找到了用于异步套接字的标准 MSDN 实现或其他程序员复制 MSDN 示例的变体。
有没有人有任何好的经验可以为我指明正确的方向?
注意> 该服务将拥有数千个客户端,并且在大多数情况下,客户端保持连接并且服务接收到的更新将发送给所有其他连接的客户端。它是面向对象数据库的同步 P2P 类型系统。
最佳答案
事件调用和回调之间的区别可以忽略不计。回调只是委托(delegate)(或函数指针)的调用。你不能在没有某种回调的情况下进行异步操作,并期望得到任何类型的结果。
对于事件,它们可以被多播。这意味着多次回调调用——所以这会更昂贵,因为你调用了多个方法。但是,如果您这样做,您可能需要这样做——另一种方法是拥有多个代表并手动调用它们。所以,不会有真正的好处。事件通常可以包括 sender/eventargs;所以,你得到了那个额外的对象和 eventargs 实例的创建;但我从未见过影响性能的情况。
就个人而言,我不使用基于事件的异步模式——我发现(在 .NET 4.5 之前)异步编程模型更加普遍。在 .NET 4.5 中,我更喜欢任务异步模式(以 Async 结尾的单个方法,而不是两种方法,一种以 Begin 开头,一种以 End 开头),因为它们可以与 async/await 一起使用,而且不那么冗长。
现在,如果问题是 new AsyncCallback(Async_Send_Receive.Read_Callback)
之间的区别例如。:
s.BeginReceive(so.buffer, 0, StateObject.BUFFER_SIZE, 0,
new AsyncCallback(Async_Send_Receive.Read_Callback), so);
Async_Send_Receive.Read_Callback
例如。:
s.BeginReceive(so.buffer, 0, StateObject.BUFFER_SIZE, 0,
Async_Send_Receive.Read_Callback, so);
AsyncCallback
委托(delegate)仍然在幕后创建。
关于c# - .Net Socket Service::通过事件传递套接字请求对于大规模服务来说是一个愚蠢的想法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11998950/
不能制造愚蠢。具有下一个文件夹结构: /flint/double-conversion/src /燧石/愚蠢/愚蠢/ 其中/flint/folly 包含自述文件和许可证。作为in the readme
我有一个小问题,它可能在某个地方很愚蠢,但我仍然有它:) 所以问题是: 通过这样做 round(615.36*0.10, 2, PHP_ROUND_HALF_DOWN); 我希望结果是 61.53,但
我正在寻找一个只是为了大致了解应该如何正确设置标准 C++ 项目。(如果可能的话……:-p) 这是我对这个项目的要求: 基于模块(具有编译成主程序模块的库/模块) 编译跨平台 我想这样做,这样我就可以
我是一名优秀的程序员,十分优秀!