首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在同一进程中在AppDomains之间发送大字节数组

在同一进程中在AppDomains之间发送大字节数组
EN

Stack Overflow用户
提问于 2009-05-04 03:19:18
回答 4查看 1.6K关注 0票数 9

我正在构建一个网络服务器,并在请求被路由到的服务器上启动大量AppDomains。向AppDomains之一发送请求有效负载以进行处理的最快方法是什么?

  1. 将有效负载从套接字读取到字节数组并封送。
  2. 将网络流(从MarshalByRef继承)传给AppDomain。
  3. 读取有效载荷。把它解码成物体。法警破译了物体。
  4. 使用命名管道传输字节数组。
  5. 使用回送套接字。
  6. 也许有一种方法可以封送实际的套接字连接?

解码主要创建不可变对象,用于确定如何满足客户端请求,然后AppDomain创建响应并将其封送回主机AppDomain,后者通过套接字将其发回。

与较少的CPU相比,该方法更倾向于更少的内存。

WCF不是一种选择。

EN

回答 4

Stack Overflow用户

发布于 2009-05-04 03:38:04

TCP二进制远程处理当然是快速的,我不知道它比原始套接字快多少,它可能是最快的,但是是皇家的PIA。

我在生产中使用HTTP二进制远程处理在两个盒子之间每秒运行1500到2000 req。在同一个框中,使用TCP或名称管道通道应该具有很高的性能,这取决于处理数据所需的CPU周期。

票数 1
EN

Stack Overflow用户

发布于 2009-05-04 03:49:01

如果我是您,我会看看卡西尼是如何实现的。它做的和你说的差不多。

实际上,Cassini已经被Webhost取代了,这是Visual现在附带的内置with服务器。请看菲尔·哈克博客上的这个职位,了解更多信息。

票数 1
EN

Stack Overflow用户

发布于 2009-05-04 04:49:38

很好的问题。如果我要解决这个问题,我可能会使用缓冲的流/内存流,并将流封送到消耗对象的AppDomain中,以减少在不同的AppDomain中创建的许多对象图的封送或序列化。

但是,听起来您几乎完全复制了IIS的功能,所以我将查看/反射到System.Web.Hosting命名空间中,看看他们如何处理它和它们的WorkerThreadPool等等……

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/818681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档