-
-
Notifications
You must be signed in to change notification settings - Fork 52
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Full trust Wino Server implementation. #295
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…and app service connection manager basics.
…on mechanism on suspension.
…r. New synchronizer factory in the server.
…account creation for Outlook.
…object. Fixes serialization/deserialization issue with S.T.Json
…ation from full thrust process.
…r tick synchronization.
with SwipeControl
Open
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR enables full trust capabilities for UWP application to support capabilities that UWP apps don't allow by delegating all synchronizer actions into separate process called Wino Server.
History
Previously Wino Mail had a background task that runs a full synchronization on all accounts every 15 minutes. This interval can't get any lower due to restrictions on UWP apps. This background task was registered as out of process, meaning that any crash happening wouldn't affect the actual client.
Time showed that background tasks are not stable enough to use for mail synchronization scenario. They have short lifetime and Windows may decide to not to run them at all due to low batterry etc. Also managing everything in a separate background task is hard to manage in the code.
We had 2 separate solution to overcome these problems:
Second path is the ideal scenario for the app going forward but this required lots of time and effort for an application like Wino Mail. That's why, I decided to go with the first option. I did not want to make users wait for another big release for months. First option will contribute for upgrading the app to WinAppSDK in the long run anyways.
Benefits of the server
Stable background synchronization / request execution.
Previously everything ran on the client (the actual Wino Mail UWP application) including queueing user actions into synchronizers and actually doing the synchronizations. This meant that once you terminate the application there is no way that any of these actions will continue running in the background. In the new architecture client has no idea about any of the synchronization related code.
Unrestricted UWP capabilities
Some of the functionalities that are not available in UWP apps will not be possible with the server. Anything UWP can't do, will be handled by the server. Stuff like:
can be done on the server. They are not implemented in this PR, for the underlying support is here.
New diagram for queueing user action to the server