Skip to content

Feature: Standalone WinRT server for background operations #13632

@hez2010

Description

@hez2010

What feature or improvement do you think would benefit Files?

We initially chose Win32 Shell APIs for file operations because we wanted the file operations to continue even after Files was closed, but Win32 Shell APIs are designed for automation, not for the general use by a file explorer. And it comes with its own limitations (e.g. slow, no built-in transfer speed calculation and etc.).

We should consider implementing file operations as an out-of-process WinRT exe server, so that we no longer need to rely on the Win32 Shell APIs, neither facing the performance and maintainability issues due to serialization and inter-process communication. By using WinRT we can expose the APIs with WinRT types directly (such as IAsyncOperation<T> and Stream), and call them directly from another process.

Requirements

It was possible only with C++/WinRT, and CsWinRT still doesn't have built-in support for authoring OOP WinRT exe server for now (see the original feature request in CsWinRT: microsoft/CsWinRT#1177).
But recently a project Shmuelie.WinRTServer has this implemented, so I think we can start to investigate it.

Files Version

Planning for post 3.0

Windows Version

10.0.22631.2506

Comments

No response

Metadata

Metadata

Assignees

Labels

Projects

Status

🔖 Ready to build

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions