【发布时间】:2016-02-12 05:41:12
【问题描述】:
我正在尝试实现视频流服务。我使用 ASP.NET Web API,正如我所搜索的,PushStreamContent 正是我想要的,它工作得很好,向客户端发送 HTTP 响应 206(部分内容),保持连接活动并推送(写入)流输出的字节数。
但是,我无法扩展。因为我无法从数据库中检索部分二进制数据。例如,假设我的 SQL Server 表(varbinary 字段)中有一个 300MB 的视频,我使用 Entity Framework 获取记录,然后使用 PushStreamContent 将其推送到客户端。
但是,这会极大地影响 RAM。并且对于客户端执行的每个寻求操作,RAM 会使用另外 600MB 的空间。看看它的实际效果:
这根本无法缩放。 10 位用户正在观看这部电影,我们的服务器已关闭。
我该怎么办?如何直接从 SQL Server 表中流式传输视频,而无需使用 Entity Framework 将整个视频加载到 RAM 中,然后通过 PushStreamContent 将其推送到客户端?
【问题讨论】:
标签: asp.net sql-server video-streaming scalability