代码之家  ›  专栏  ›  技术社区  ›  Max Strini

处理文件系统上大文件的本地和远程WCF服务的最佳实践?

wcf
  •  0
  • Max Strini  · 技术社区  · 16 年前

    我正在创建一个可以在本地或远程使用的WCF服务,并且有时使用第三方组件应用程序处理文件,不幸的是,这些应用程序需要输入文件系统上实际文件的路径,而不是.NET流或类似的路径。对于这种情况,是否有一个标准的方法,在合同操作的参数等方面?尽管我认为这并不重要,因为它最终必须在本地和远程情况下都可以接受地执行,但我还是希望在本地情况下,它不必从文件系统中读取整个文件,包括消息中的内容,并在文件系统上重新对其进行实体化,但对于远程使用,这是必要的。是否有一种方法可以做到这一点,例如让fsrefdoc类型根据其在本地或远程使用而不同地进行序列化?

    编辑:澄清:问题是我想在这两种情况下发送不同的信息。如果我控制的是本地服务,我可以只发送到本地文件系统上文件的路径,但是如果是远程服务,我必须自己发送文件内容。当然,在这两种情况下我都可以发送内容,但这意味着在本地情况下我会失去性能。也许我不该担心这个。

    2 回复  |  直到 16 年前
        1
  •  0
  •   marc_s MisterSmith    16 年前


    • ILocalService GetFile
    • netTcpBinding

    [ServiceContract]
    interface ILocalService
    {
       [OperationContract]
       string GetFile(......(whatever parameters you need here).....);
    }
    
    class LocalService : ILocalService
    {
       string GetFile(......(whatever parameters you need here).....)
       {
          // do stuff.....
          return fileName;
       }
    }
    

    • IRemoteService
    • basicHttpBinding
    • transferMode="StreamedResponse"

    [ServiceContract]
    interface IRemoteService
    {
       [OperationContract]
       Stream GetFile(......(whatever parameters you need here).....);
    }
    
    class RemoteService : IRemoteService
    {
       Stream GetFile(......(whatever parameters you need here).....)
       {
          // do stuff.....
          FileStream stream = new FileStream(....);
          return stream;
       }
    }
    
        2
  •  1
  •   RichardOD    16 年前

    推荐文章