0

我首先使用实体​​框架代码。

这里我有一个模型:

public class Stop
{
    [Key]
    public int StopID { get; set; }
    public string StopCode { get; set; }
    public string StopText { get; set; }
    public string Street { get; set; }
}
  1. 是否可以让键不是 int 但内存消耗更少?字节?整数16?

  2. 是否可以减少字符串的内存消耗?字符串[20]?

我遇到的问题是我使用 WCF 服务来传输数据并且超出了合理的大小。

谢谢


更新

以下是传输的典型数据的屏幕截图:

在此处输入图像描述

可以肯定的一件事:我有 2116 项与屏幕截图类似的转移。让我们尝试计算传输数据的大小。我每个项目的字符少于 20 个。我有 2116 个项目,所以 20 * 2116 = 42320 >> 远远少于我的 web.config (maxBufferPoolSize) 中配置的 600000!

这是我的配置:

      <binding name="WSHttpBinding_IRequestService" closeTimeout="00:01:00"
      openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
      bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
      maxBufferPoolSize="600000" maxReceivedMessageSize="600000" messageEncoding="Text"
      textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
      <reliableSession ordered="true" inactivityTimeout="00:10:00"
        enabled="false" />
      <security mode="Message">
        <transport clientCredentialType="Windows" proxyCredentialType="None"
          realm="" />
        <message clientCredentialType="Windows" negotiateServiceCredential="true"
          algorithmSuite="Default" />
      </security>
    </binding>

任何想法?

4

1 回答 1

0

拥有不同的数据类型对您没有帮助。

数据在传输时被序列化为文本,因此类中的整数字符串与类中的字节"42"字符串完全相同。"42"发送的只是变量中的实际值,因此字符串可以包含多达 2 GB 的事实并不意味着每次发送字符串时都会发送 2 GB。

所以,你应该看看究竟是什么让你的数据如此庞大。例如,您传输的对象是否比您想象的要多得多?

于 2012-05-05T11:18:38.510 回答