Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
126a1ea
add aspire hosting package to platform nuget package list
rbev May 20, 2026
5998214
add menu items
jpalac May 20, 2026
b9af43d
Convert aspire hosting sample to hosting package
rbev May 20, 2026
0e72578
Roll back aspire changes for v9
rbev May 20, 2026
df20302
use common endpoint config
jpalac May 21, 2026
fc847d6
skeleton for asb sample
jpalac May 21, 2026
0864132
Modify snippets for v10 sample
rbev May 21, 2026
060b15a
Add missing partials, minimise complexity of endpoints in sample
rbev May 21, 2026
3e5e65e
add partials to sample.md
rbev May 21, 2026
bf76cfd
asb demo progress
jpalac May 21, 2026
47a2612
removed unused packages
jpalac May 21, 2026
62169e1
integrity fix
jpalac May 21, 2026
0be0b82
specify language version
jpalac May 21, 2026
7ec74ca
remove not used projects
jpalac May 21, 2026
172f8a2
load learning transport path correctly
rbev May 21, 2026
b7d8841
complete learning transport sample
rbev May 21, 2026
664ff55
tidy up description
rbev May 21, 2026
4fe4715
more description
rbev May 21, 2026
9f84d1c
move rabbitmq sample & create stub landing page
rbev May 21, 2026
cd4fb47
Add new Aspire integration page
warwickschroeder May 21, 2026
bfc66f3
text
jpalac May 22, 2026
d493e5e
sample text
jpalac May 22, 2026
ae7ebbd
alternative asb resource
jpalac May 22, 2026
8aea433
Merge branch 'aspire-hosting-samples' of https://github.com/Particula…
jpalac May 22, 2026
28e6259
change ports documentation to reflect floating port behaviour
rbev May 22, 2026
17cb438
remove port troubleshooting section
rbev May 22, 2026
9b13b90
add aspire snippets and begin moving snippets out of inline blocks
rbev May 22, 2026
a57b8ac
add top paragrapgh
jpalac May 24, 2026
568f9f7
fix links
jpalac May 25, 2026
6bf4edd
fix link
jpalac May 25, 2026
47befbc
undo link update
jpalac May 25, 2026
35c0890
remove lang version from snippets
jpalac May 25, 2026
4e10575
add snippets
jpalac May 25, 2026
2367e02
links
jpalac May 25, 2026
b5439c8
more links
jpalac May 25, 2026
fefaf9a
remove throughput reporting section from documentation
warwickschroeder May 25, 2026
f5850d2
add commented-out code for Azure Service Bus and RabbitMQ connections
warwickschroeder May 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions Snippets/Aspire.Hosting/Aspire.Hosting.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29728.190
MinimumVisualStudioVersion = 15.0.26730.12
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aspire.Hosting_All", "Aspire.Hosting_All\Aspire.Hosting_All.csproj", "{831238B6-3C49-4EA1-8864-D03DB90E0CEA}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{831238B6-3C49-4EA1-8864-D03DB90E0CEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{831238B6-3C49-4EA1-8864-D03DB90E0CEA}.Debug|Any CPU.Build.0 = Debug|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Particular.Aspire.Hosting.ServicePlatform" Version="1.0.0-alpha.3" />
</ItemGroup>
</Project>
76 changes: 76 additions & 0 deletions Snippets/Aspire.Hosting/Aspire.Hosting_All/Components.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
using Aspire.Hosting;

public class Components
{
public void Explicit(DistributedApplicationBuilder builder)
{
#region aspire-components-explicit

var platform = builder.AddParticularPlatform("particular");
var persistence = platform.AddPersistenceRavenDb("ravendb");

var error = platform.AddServiceControlErrorInstance("servicecontrol", persistence);
var monitoring = platform.AddServiceControlMonitoringInstance("monitoring");
var audit = platform.AddServiceControlAuditInstance("audit", error, persistence);
platform.AddServicePulse("servicepulse", error, monitoring);

#endregion
}

public void Error(DistributedApplicationBuilder builder)
{
var platform = builder.AddParticularPlatform("particular");
var persistence = platform.AddPersistenceRavenDb("ravendb");

#region aspire-components-error

var error = platform.AddServiceControlErrorInstance("servicecontrol", persistence)
.WithErrorQueueName("error")
.WithThroughputQueue("particular.throughput");

#endregion
}

public void Audit(DistributedApplicationBuilder builder)
{
var platform = builder.AddParticularPlatform("particular");
var persistence = platform.AddPersistenceRavenDb("ravendb");
var error = platform.AddServiceControlErrorInstance("servicecontrol", persistence);

#region aspire-components-audit

var audit = platform.AddServiceControlAuditInstance("audit", error, persistence)
.WithAuditQueueName("audit");

#endregion
}

public void Monitoring(DistributedApplicationBuilder builder)
{
var platform = builder.AddParticularPlatform("particular");
var persistence = platform.AddPersistenceRavenDb("ravendb");
var error = platform.AddServiceControlErrorInstance("servicecontrol", persistence);

#region aspire-components-monitoring

var monitoring = platform.AddServiceControlMonitoringInstance("monitoring")
.WithMonitoringQueueName("Particular.Monitoring")
.WithThroughputQueueFrom(error);

#endregion
}

public void ServicePulse(DistributedApplicationBuilder builder)
{
var platform = builder.AddParticularPlatform("particular");
var persistence = platform.AddPersistenceRavenDb("ravendb");
var error = platform.AddServiceControlErrorInstance("servicecontrol", persistence);
var monitoring = platform.AddServiceControlMonitoringInstance("monitoring");

#region aspire-components-servicepulse

platform.AddServicePulse("servicepulse", error, monitoring);

#endregion
}
}
33 changes: 33 additions & 0 deletions Snippets/Aspire.Hosting/Aspire.Hosting_All/Endpoints.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
using Aspire.Hosting;

public class Endpoints
{
public void Connect(DistributedApplicationBuilder builder)
{
var platform = builder
.AddParticularPlatform("particular")
.AddDefaultComponents();

#region aspire-endpoint-connect

builder.AddProject<Projects.MyEndpoint>("my-endpoint")
.WithParticularPlatform(platform);

#endregion
}

public void WaitForPlatform(DistributedApplicationBuilder builder)
{
var platform = builder
.AddParticularPlatform("particular")
.AddDefaultComponents();

#region aspire-endpoint-waitfor

builder.AddProject<Projects.MyEndpoint>("my-endpoint")
.WithParticularPlatform(platform)
.WaitFor(platform);

#endregion
}
}
28 changes: 28 additions & 0 deletions Snippets/Aspire.Hosting/Aspire.Hosting_All/Licensing.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
using Aspire.Hosting;

public class Licensing
{
public void FromFile(DistributedApplicationBuilder builder)
{
#region aspire-license-file

builder
.AddParticularPlatform("particular")
.WithLicenseFromFile("license.xml");

#endregion
}

public void FromText(DistributedApplicationBuilder builder)
{
#region aspire-license-text

var licenseText = builder.Configuration["ParticularLicense"]!;

builder
.AddParticularPlatform("particular")
.WithLicenseFromText(licenseText);

#endregion
}
}
24 changes: 24 additions & 0 deletions Snippets/Aspire.Hosting/Aspire.Hosting_All/Overview.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using Aspire.Hosting;

public class Overview
{
public void AppHost(string[] args)
{
#region aspire-apphost
var builder = DistributedApplication.CreateBuilder(args);

var platform = builder
.AddParticularPlatform("particular")
.AddDefaultComponents();

var sales = builder.AddProject<Projects.Sales>("Sales")
.WithParticularPlatform(platform);

builder.AddProject<Projects.ClientUI>("ClientUI")
.WaitFor(sales)
.WithParticularPlatform(platform);

builder.Build().Run();
#endregion
}
}
28 changes: 28 additions & 0 deletions Snippets/Aspire.Hosting/Aspire.Hosting_All/Persistence.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
using Aspire.Hosting;

public class Persistence
{
public void Managed(DistributedApplicationBuilder builder)
{
#region aspire-persistence-ravendb-managed

var platform = builder.AddParticularPlatform("particular");

var persistence = platform.AddPersistenceRavenDb("ravendb");

#endregion
}

public void External(DistributedApplicationBuilder builder)
{
#region aspire-persistence-ravendb-external

var ravenDb = builder.AddConnectionString("ravendb");

builder
.AddParticularPlatform("particular")
.WithPersistenceRavenDb(ravenDb);

#endregion
}
}
44 changes: 44 additions & 0 deletions Snippets/Aspire.Hosting/Aspire.Hosting_All/Production.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
using Aspire.Hosting;

public class Production
{
public void HostPorts(DistributedApplicationBuilder builder)
{
var platform = builder.AddParticularPlatform("particular");
var persistence = platform.AddPersistenceRavenDb("ravendb");
var error = platform.AddServiceControlErrorInstance("servicecontrol", persistence);
var monitoring = platform.AddServiceControlMonitoringInstance("monitoring");

#region aspire-host-ports

platform.AddServicePulse("servicepulse", error, monitoring)
.WithEndpoint("servicepulse", e =>
{
e.Port = 9091;
e.TargetPort = 9090;
});

#endregion
}

public void ImagePinning(DistributedApplicationBuilder builder)
{
var platform = builder.AddParticularPlatform("particular");
var persistence = platform.AddPersistenceRavenDb("ravendb");

#region aspire-image-pinning

var serviceControlVersion = "x.y.z";

var error = platform.AddServiceControlErrorInstance("servicecontrol", persistence)
.WithImageTag(serviceControlVersion);

platform.AddServiceControlAuditInstance("audit", error, persistence)
.WithImageTag(serviceControlVersion);

platform.AddServiceControlMonitoringInstance("monitoring")
.WithImageTag(serviceControlVersion);

#endregion
}
}
18 changes: 18 additions & 0 deletions Snippets/Aspire.Hosting/Aspire.Hosting_All/Projects.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
using Aspire.Hosting;

namespace Projects;

public class Sales : IProjectMetadata
{
public string ProjectPath { get; } = "";
}

public class ClientUI : IProjectMetadata
{
public string ProjectPath { get; } = "";
}

public class MyEndpoint : IProjectMetadata
{
public string ProjectPath { get; } = "";
}
23 changes: 23 additions & 0 deletions Snippets/Aspire.Hosting/Aspire.Hosting_All/QuickStart.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
using Aspire.Hosting;

public class QuickStart
{
public void AppHost(string[] args)
{
#region aspire-quick-start-1
var builder = DistributedApplication.CreateBuilder(args);

var platform = builder
.AddParticularPlatform("particular")
.AddDefaultComponents();

builder.Build().Run();
#endregion

#region aspire-quick-start-2
builder.AddProject<Projects.MyEndpoint>("my-endpoint")
.WithParticularPlatform(platform);
#endregion

}
}
48 changes: 48 additions & 0 deletions Snippets/Aspire.Hosting/Aspire.Hosting_All/ThroughputReporting.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
using Aspire.Hosting;
using Aspire.Hosting.ApplicationModel;
using Particular.Aspire.Hosting.ServicePlatform.ThroughputReporting;

public class ThroughputReporting
{
public void AzureServiceBus(DistributedApplicationBuilder builder)
{
var platform = builder.AddParticularPlatform("particular");
var persistence = platform.AddPersistenceRavenDb("ravendb");

#region aspire-throughput-asb

var tenantId = builder.AddParameter("asb-tenant-id");
var subscriptionId = builder.AddParameter("asb-subscription-id");
var clientId = builder.AddParameter("asb-client-id");
var clientSecret = builder.AddParameter("asb-client-secret", secret: true);

platform.AddServiceControlErrorInstance("servicecontrol", persistence)
.WithThroughputReporting(new ThroughputReportingAzureServiceBus(
tenantId: ReferenceExpression.Create($"{tenantId.Resource}"),
subscriptionId: ReferenceExpression.Create($"{subscriptionId.Resource}"),
clientId: ReferenceExpression.Create($"{clientId.Resource}"),
clientSecret: ReferenceExpression.Create($"{clientSecret.Resource}")));

#endregion
}

public void RabbitMQ(DistributedApplicationBuilder builder)
{
var platform = builder.AddParticularPlatform("particular");
var persistence = platform.AddPersistenceRavenDb("ravendb");

#region aspire-throughput-rabbitmq

var apiUrl = builder.AddParameter("rabbit-api-url");
var username = builder.AddParameter("rabbit-username");
var password = builder.AddParameter("rabbit-password", secret: true);

platform.AddServiceControlErrorInstance("servicecontrol", persistence)
.WithThroughputReporting(new ThroughputReportingRabbitMq(
ReferenceExpression.Create($"{apiUrl.Resource}"),
ReferenceExpression.Create($"{username.Resource}"),
ReferenceExpression.Create($"{password.Resource}")));

#endregion
}
}
Loading
Loading