Skip to content
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

Feature: New core powered by OwlCore.Remoting #103

Closed
3 tasks
Arlodotexe opened this issue May 13, 2022 · 2 comments
Closed
3 tasks

Feature: New core powered by OwlCore.Remoting #103

Arlodotexe opened this issue May 13, 2022 · 2 comments
Labels
cores enhancement New feature or request

Comments

@Arlodotexe
Copy link
Owner

Arlodotexe commented May 13, 2022

Background

OwlCore.Remoting is a lightweight RPC framework that works anywhere .NET Standard 2.0 is supported.

The framework was originally created for 2 purposes: Synchronizing UI between devices and enabling remote execution of code that is sideloaded in another application, in another process or running on another machine.

Work on this was started here, but had to be paused to focus on other parts of the SDK so we could open source on time. This includes both implementation and unit tests.

The plan

Since cores have all the members needed to know when data is changed, we can create a super clean API surface that looks roughly like this:

// Machine/Process 1- "Host" who has the running code
var core = new LocalFilesCore(folderData, config);
var host = new RemoteCore("myUniqueId", core, messageHandler);

// Machine/Process 2 - "Client" who doesn't have the running code
var client = new RemoteCore("myUniqueId", messageHandler);

// When calling a method on the client, it uses RPC calls to get the data from the host core.
var items = await client.Library.GetTracksAsync(5, 5).ToListAsync();

// The host uses RPC calls to notify the client about events and property changes.
client.Library.TotalTrackCountChanged += (s, e) => { ... };

Todo list

  • Create and write tests for all required models
  • Identify and evaluate extra services that may be needed (i.e. RemoteNotificationsService)
  • Test with a real core running out of process
@Arlodotexe Arlodotexe added enhancement New feature or request cores labels May 13, 2022
@Arlodotexe
Copy link
Owner Author

This could end up delayed until after the vNext of OwlCore.Remoting (AceRpc) is finished, which will use source generators instead of IL weavers.

@Arlodotexe
Copy link
Owner Author

Arlodotexe commented Aug 19, 2022

This idea may end up scrapped entirely, allowing us to jump directly to cross-language cores based on WebAssembly.

See here: #229

@Arlodotexe Arlodotexe closed this as not planned Won't fix, can't repro, duplicate, stale Aug 19, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cores enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant