- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
请注意,这个问题是我尚未解决的当前问题的分支:
Need help resolving an error when WCF service returns DataTable: OutOfMemoryException
我有一个现有的 WCF 服务,其端点配置为 TransferMode.Buffered
和一个客户端应用程序,其连接要求相同。
OperationContracts
是已建立的方法,除非以非常小的方式修改,否则我无法轻易修改。例如,我们有一个接受 SQL 查询 String
并返回从 SQL 执行派生的 DataTable
的方法。
我们在使用这种方法处理非常大的表时遇到了问题。大意味着内存占用。
我正在考虑实现 TransferMode.Streamed
(或类似的),但我似乎无法仅针对某些方法了解如何实现。
我的 WCF 服务启动,创建唯一端点,并且该端点是 Buffered
。所以这让我们想假设它是全有或全无。如果我更改为 Streaming
,那么我将不得不对我的所有 OperationContract
方法进行大规模返工。
有一些 SO 问题与这个主题调情,但不是直接的,也没有任何真正让我到达我需要去的地方的答案。
我是不是遗漏了什么,或者这可以工作吗?
我需要修复的方法:(想知道连接的可以引用引用的问题。。。代码很多)
WCF服务代码:
[OperationContract]
DataTable readDataTable(out DbError dbError, String queryString, Boolean SchemaOnly);
public DataTable readDataTable(out DbError dbError, String queryString, Boolean SchemaOnly)
{
DataTable dt = new DataTable("ReturnTable");
dbError = new DbError();
if (!String.IsNullOrEmpty(queryString))
{
try
{
command.CommandText = queryString.Replace(new String[] { "{{", "}}", ";;" }, new String[] { "{", "}", ";" });
SqlDataReader reader = command.ExecuteReader(SchemaOnly ? CommandBehavior.SchemaOnly : CommandBehavior.Default);
dt.Load(reader);
reader.Close();
}
catch (Exception ex)
{
dbError.HasError = true;
dbError.Error = ex.Message + "\n\n" + queryString;
}
}
return dt;
}
使用它的客户端代码:
public DataTable readDataTable(String queryString, Boolean SchemaOnly)
{
DbError dbError;
DataTable dt = svcCon.readDataTable(out dbError, queryString, SchemaOnly);
if (dbError.HasError)
{
if (_showErrors)
ErrorHandler.Show(dbError.Error);
}
return dt;
}
最佳答案
这是一个大问题。我明白这个问题。简短的回答是,您不能在同一个端点操作契约(Contract)中同时拥有流式传输和缓冲。当然,您可以从同一个 Web 服务运行 1-many 个不同的端点,每个端点都有不同的端口,例如一些使用缓冲,一些使用流。
并且,您可以将主机设置为流式传输其响应,而客户端(使用相同的端点)可以将其上传请求缓冲到主机(反之亦然);这不是问题。但是缓冲和流式传输来自同一主机端点的响应是不可能的。
我们在缓冲从 SQL 到客户端的下载时遇到了同样的问题。有一段时间,我们通过流式传输下载,主要是为了解决客户端设备超时问题,但发现流式传输也是内存密集型的。我们发现,流媒体作为一种技术也更难使用。所以我们已经从流式传输回到缓冲,但我们使用交互式“分块”方法下载 > 100mb。例如,当需要传送 1 GB 的包时,主机将以 100mb 的 block 发送文件,客户端软件将这些文件组合为单个文件。
希望对您有所帮助。
关于c# - WCF 服务能否同时支持缓冲和流式传输模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18189993/
我正在使用 MediaPlayer 在我的应用程序中播放在线 mp3 文件中的一些声音。 但是,即使在播放完成后,我也会在控制台中收到一行又一行的回调和缓冲。 10-24 08:08:48.467
我有一个简单的多边形。 dfr p = st_polygon(list(as.matrix(dfr))) > pbuf = st_buffer(p, .4) > plot(pbuf) > plot(
这可能又是一些愚蠢的问题,也许这确实是我所缺少的东西,但我很难让 glMultiDrawArrays 在 OpenGL4 中工作。 我发现了很多这样的解释: for (int i = 0; i #i
这仅仅是根据网络速度调整预缓冲内容量的问题吗?你是否在一开始就为此调整一次,每秒......? 或者它更复杂 - 对您的网络速度记录历史进行采样并取平均值/中值并对其进行调整? 最佳答案 您的第二段总
嗨,我正在使用 FFmpeg Autogen C#。当我使用 mkv 输出作为文件并使用 h264 rtsp 流作为输入时,一切正常。编解码器是 libx264 ffmpeg.avio_open(
我需要多次遍历几个文本文件的行。目前这是通过多个 with open("file.txt") as f: for line in f: # do something 虽然性能还
昨天给同学们写了一个xinetd小练习:做一个反向回显程序。 为了学习新东西,我尝试实现一个 Haskell 解决方案。琐碎的main = forever $ interact reverse不起作用
我正在阅读《实时渲染第三版》中的遮挡剔除部分,但我无法理解它是如何工作的。一些问题: “Z 金字塔”有何贡献?为什么我们需要多种分辨率的 Z 缓冲区?在书中,它的显示如下(左侧): 八叉树结构与用于一
我通过串行端口与设备通信。 我已成功获取 InputStream 并读取设备发送的内容。 但问题是,我根本不知道何时停止阅读并继续执行另一项任务。 这是简化的代码: inputStream = ser
我有以下代码: func (q *Queue) GetStreams(qi *QueueInfo) { channel := make(chan error, len(qi.AudioChun
在我调用 -play 之前,有没有办法让 MPMusicPlayerController 缓冲内容?还是在您设置队列时默认执行此操作? AVAudioPlayer 有 -prepareToPlay 方
我正在编写一个数据库 备份函数,从System.Diagnostics.Process 对象 读取StandardOutput (StreamReader) 属性。我已成功写入普通文件。 //This
我有一个 wpf 应用程序,其中所有 viewModel 都继承自实现 INotifyPropertyChanged 的类 NotifyPropertyChangeClass(见下文)。 我想限制
我需要类似于 withLatestFrom 的东西,对应于下图: ---------A-----------------B-- -1-2-3------4------5-6-7-8---- -----
有没有办法缓冲 OutputStream,在返回之前修改它?这是我的代码片段: public ServletOutputStream getOutputStream() throws IOExcept
目前我们有实现服务器通信协议(protocol)缓冲的需求。如果有人对此有任何意见,他们可以向我提供任何意见吗。 最佳答案 请查看以下 Protocol Buffer 链接。 http://code.
所以我目前正在开发一个 Java 应用程序,该应用程序应该将特定事件记录到数据库中。我希望每分钟最多有 15 到 20 次插入,基本上我想知道我是否应该为每个插入语句建立一个新连接,或者只要应用程序正
请考虑以下代码,包括两个线程 buffering_thread(用一条消息填充缓冲区指针)和 sending_thread(清空缓冲区): #include "msg.cpp" msg * buffe
是否可以在线播放由两个或多个视频文件组成的视频? 由于我原来的帖子不够清楚,这里有扩展的解释和问题。 我的站点托管在 Linux/Apache/PHP 服务器上。我有 FLV/F4V 格式的视频文件。
这是我用于缓冲和转换传入事件的代码: public Publisher> logs(String eventId) { ConnectableObservable connectableObs
我是一名优秀的程序员,十分优秀!