Juxtapose 1.0.0-dev-014

This is a prerelease version of Juxtapose.
There is a newer version of this package available.
See the version list below for details.
dotnet add package Juxtapose --version 1.0.0-dev-014
                    
NuGet\Install-Package Juxtapose -Version 1.0.0-dev-014
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Juxtapose" Version="1.0.0-dev-014" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Juxtapose" Version="1.0.0-dev-014" />
                    
Directory.Packages.props
<PackageReference Include="Juxtapose" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Juxtapose --version 1.0.0-dev-014
                    
#r "nuget: Juxtapose, 1.0.0-dev-014"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Juxtapose@1.0.0-dev-014
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Juxtapose&version=1.0.0-dev-014&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Juxtapose&version=1.0.0-dev-014&prerelease
                    
Install as a Cake Tool

Juxtapose

1. Intro

基于 SourceGenerator 的硬编码 .Net进程运行库。

2. Features

  • 可以为接口静态类生成代理,无需手动编写RPC相关代码,即可进行多进程开发;
  • 编译时生成所有代码,运行时无显式的反射调用和动态构造;
  • 支持委托CancellationToken类型的方法参数(其余类型未特殊处理,将会进行序列化,目前回调委托不支持嵌套和CancellationToken);
  • 支持LinuxWindows(其它未测试);

3. Requirement

  • .Net5.0+(其它版本没有尝试过)

4. 使用方法

4.1 引用包

<ItemGroup>
  <PackageReference Include="Juxtapose" Version="1.0.*-*" />
  <PackageReference Include="Juxtapose.SourceGenerator" Version="1.0.*-*" />
</ItemGroup>

4.2 建立上下文

[IllusionClass(typeof(Greeter), typeof(IGreeter), "Juxtapose.Test.GreeterAsIGreeterIllusion")]
public partial class GreeterJuxtaposeContext : JuxtaposeContext
{
}

示例代码将为Greeter生成IGreeter接口的代理类型Juxtapose.Test.GreeterAsIGreeterIllusion

Note!!!

  • 必须继承JuxtaposeContext
  • 必须标记partial关键字;

4.3 添加入口点

Main方法中添加入口点代码,并使用指定上下文

await JuxtaposeEntryPoint.TryAsEndpointAsync(args, GreeterJuxtaposeContext.SharedInstance);

到此已完成开发,创建类型Juxtapose.Test.GreeterAsIGreeterIllusion的对象,并调用其方法,其实际逻辑将在子进程中运行;

5. 工作逻辑

SourceGenerator在编译时生成代理类型,封装通信消息。默认使用命名管道进行进程间通信,使用System.Text.Json进行消息的序列化与反序列化。

参见示例,未完待续......

Product Compatible and additional computed target framework versions.
.NET net5.0 is compatible.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.5.2 113 11/29/2025
1.5.1 198 11/15/2025
1.5.0 193 11/15/2025
1.4.4 52,573 11/23/2024
1.4.3 9,860 8/10/2024
1.4.2 6,013 6/11/2024
1.4.1 1,237 6/1/2024
1.4.0 8,326 11/21/2023
1.3.0 410 11/15/2023
1.2.2 27,928 12/19/2022
1.2.1 948 10/12/2022
1.2.0 996 10/11/2022
1.1.2 935 9/16/2022
1.1.1 979 7/29/2022
1.1.0 1,036 7/23/2022
1.1.0-beta0001 740 7/6/2022
1.0.2 1,029 6/19/2022
1.0.1 1,047 5/26/2022
1.0.0 1,154 1/24/2022
1.0.0-dev-028 744 1/24/2022
1.0.0-dev-027 744 1/23/2022
1.0.0-dev-026 827 1/22/2022
1.0.0-dev-025 778 1/18/2022
1.0.0-dev-024 716 1/16/2022
1.0.0-dev-023 802 1/11/2022
1.0.0-dev-022 835 1/5/2022
1.0.0-dev-021 744 12/29/2021
1.0.0-dev-020 788 12/7/2021
1.0.0-dev-019 760 12/7/2021
1.0.0-dev-018 752 12/7/2021
1.0.0-dev-017 777 12/6/2021
1.0.0-dev-016 735 12/5/2021
1.0.0-dev-015 768 12/3/2021
1.0.0-dev-014 691 12/2/2021
1.0.0-dev-013 777 12/2/2021
1.0.0-dev-012 802 12/1/2021
1.0.0-dev-011 753 12/1/2021
1.0.0-dev-010 709 11/30/2021