C# 使用WCF上传文件

C# 使用WCF上传文件,c#,wcf,C#,Wcf,我需要一个WCF服务上传用户的大文件 以下哪一项提供了更优化的性能 [OperationContract] public void UploadFile(Stream inputsreaam); 或 欢迎任何其他建议通常,第一个(流参数)。如果您使用的是流参数,并且您使用的端点具有WebHttpBinding/WebHttpBehavior(即Web或REST端点),那么流参数将绑定到整个请求主体,而不进行编码。在本例中,如果使用第二个(byte[]),则必须根据格式将参数编码为数组(

我需要一个WCF服务上传用户的大文件

以下哪一项提供了更优化的性能

  [OperationContract]
  public void UploadFile(Stream inputsreaam);

欢迎任何其他建议

通常,第一个(
参数)。如果您使用的是
参数,并且您使用的端点具有WebHttpBinding/WebHttpBehavior(即Web或REST端点),那么流参数将绑定到整个请求主体,而不进行编码。在本例中,如果使用第二个(
byte[]
),则必须根据格式将参数编码为数组(对于XML,字节编码为base64;对于JSON,则为表示字节的实际数字数组)


但是,如果您没有使用Web端点(即,您使用的是SOAP端点),那么这两个端点非常相似,因为流或byte[]参数将绑定到SOAP正文,并且SOAP消息已经编码。

如果您想要上传非常大的文件,请使用流一。如果以字节[]形式传输2 Gb文件,则该文件将加载到服务器上的内存中,并且只能保存在某个位置。使用该流,您可以从客户端流读取数据,并在服务器上写入文件或DB流,而实际内存中只有少量数据。回到性能上来:对于非常大的文件和多个客户端,字节[]可能会因为内存不足而冻结服务器


您可能也会发现这很有帮助。

哪些客户将使用该服务?您找不到吗?客户如何发挥作用。
   [OperationContract]
   public void UploadFile(byte[] buffer);