Skip to content

Commit d5cb8af

Browse files
authored
Move Microsoft.Extensions.ServiceDiscovery to dotnet/extensions (#6868)
2 parents d474a89 + 675c83e commit d5cb8af

File tree

138 files changed

+10459
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

138 files changed

+10459
-0
lines changed

eng/Version.Details.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-runtime</Uri>
55
<Sha>893c2ebbd49952ca49e93298148af2d95a61a0a4</Sha>
66
</Dependency>
7+
<Dependency Name="Microsoft.Bcl.Memory" Version="9.0.9" CoherentParentDependency="Microsoft.AspNetCore.App.Runtime.win-x64">
8+
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-runtime</Uri>
9+
<Sha>893c2ebbd49952ca49e93298148af2d95a61a0a4</Sha>
10+
</Dependency>
711
<Dependency Name="Microsoft.Bcl.TimeProvider" Version="9.0.9" CoherentParentDependency="Microsoft.AspNetCore.App.Runtime.win-x64">
812
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-runtime</Uri>
913
<Sha>893c2ebbd49952ca49e93298148af2d95a61a0a4</Sha>
@@ -80,6 +84,10 @@
8084
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-runtime</Uri>
8185
<Sha>893c2ebbd49952ca49e93298148af2d95a61a0a4</Sha>
8286
</Dependency>
87+
<Dependency Name="Microsoft.Extensions.Primitives" Version="9.0.9" CoherentParentDependency="Microsoft.AspNetCore.App.Runtime.win-x64">
88+
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-runtime</Uri>
89+
<Sha>893c2ebbd49952ca49e93298148af2d95a61a0a4</Sha>
90+
</Dependency>
8391
<Dependency Name="Microsoft.NETCore.App.Ref" Version="9.0.9" CoherentParentDependency="Microsoft.AspNetCore.App.Runtime.win-x64">
8492
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-runtime</Uri>
8593
<Sha>893c2ebbd49952ca49e93298148af2d95a61a0a4</Sha>
@@ -180,6 +188,10 @@
180188
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore</Uri>
181189
<Sha>ff66c263be7ed395794bdaf616322977b8ec897c</Sha>
182190
</Dependency>
191+
<Dependency Name="Microsoft.Extensions.Features" Version="9.0.9">
192+
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore</Uri>
193+
<Sha>ff66c263be7ed395794bdaf616322977b8ec897c</Sha>
194+
</Dependency>
183195
<Dependency Name="Microsoft.Extensions.Http.Polly" Version="9.0.9">
184196
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore</Uri>
185197
<Sha>ff66c263be7ed395794bdaf616322977b8ec897c</Sha>

eng/Versions.props

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
<PropertyGroup Label="Automated Maestro dependency updates">
3535
<!-- Packages from dotnet/runtime -->
3636
<MicrosoftBclAsyncInterfacesVersion>9.0.9</MicrosoftBclAsyncInterfacesVersion>
37+
<MicrosoftBclMemoryVersion>9.0.9</MicrosoftBclMemoryVersion>
3738
<MicrosoftBclTimeProviderVersion>9.0.9</MicrosoftBclTimeProviderVersion>
3839
<MicrosoftExtensionsCachingAbstractionsVersion>9.0.9</MicrosoftExtensionsCachingAbstractionsVersion>
3940
<MicrosoftExtensionsCachingMemoryVersion>9.0.9</MicrosoftExtensionsCachingMemoryVersion>
@@ -53,6 +54,7 @@
5354
<MicrosoftExtensionsLoggingVersion>9.0.9</MicrosoftExtensionsLoggingVersion>
5455
<MicrosoftExtensionsOptionsConfigurationExtensionsVersion>9.0.9</MicrosoftExtensionsOptionsConfigurationExtensionsVersion>
5556
<MicrosoftExtensionsOptionsVersion>9.0.9</MicrosoftExtensionsOptionsVersion>
57+
<MicrosoftExtensionsPrimitivesVersion>9.0.9</MicrosoftExtensionsPrimitivesVersion>
5658
<MicrosoftNETCoreAppRefVersion>9.0.9</MicrosoftNETCoreAppRefVersion>
5759
<MicrosoftNETCoreAppRuntimewinx64Version>9.0.9</MicrosoftNETCoreAppRuntimewinx64Version>
5860
<SystemCollectionsImmutableVersion>9.0.9</SystemCollectionsImmutableVersion>
@@ -78,6 +80,7 @@
7880
<MicrosoftExtensionsCachingSqlServerVersion>9.0.9</MicrosoftExtensionsCachingSqlServerVersion>
7981
<MicrosoftExtensionsCachingStackExchangeRedisVersion>9.0.9</MicrosoftExtensionsCachingStackExchangeRedisVersion>
8082
<MicrosoftExtensionsDiagnosticsHealthChecksVersion>9.0.9</MicrosoftExtensionsDiagnosticsHealthChecksVersion>
83+
<MicrosoftExtensionsFeaturesVersion>9.0.9</MicrosoftExtensionsFeaturesVersion>
8184
<MicrosoftExtensionsHttpPollyVersion>9.0.9</MicrosoftExtensionsHttpPollyVersion>
8285
<MicrosoftExtensionsObjectPoolVersion>9.0.9</MicrosoftExtensionsObjectPoolVersion>
8386
<!-- Dependencies from https://github.com/dotnet/efcore -->
@@ -107,6 +110,7 @@
107110
<MicrosoftExtensionsLoggingLTSVersion>8.0.1</MicrosoftExtensionsLoggingLTSVersion>
108111
<MicrosoftExtensionsOptionsConfigurationExtensionsLTSVersion>8.0.0</MicrosoftExtensionsOptionsConfigurationExtensionsLTSVersion>
109112
<MicrosoftExtensionsOptionsLTSVersion>8.0.2</MicrosoftExtensionsOptionsLTSVersion>
113+
<MicrosoftExtensionsPrimitivesLTSVersion>8.0.0</MicrosoftExtensionsPrimitivesLTSVersion>
110114
<MicrosoftNETCoreAppRefLTSVersion>8.0.20</MicrosoftNETCoreAppRefLTSVersion>
111115
<MicrosoftNETCoreAppRuntimewinx64LTSVersion>8.0.20</MicrosoftNETCoreAppRuntimewinx64LTSVersion>
112116
<SystemCollectionsImmutableLTSVersion>8.0.0</SystemCollectionsImmutableLTSVersion>
@@ -132,6 +136,7 @@
132136
<MicrosoftExtensionsCachingSqlServerLTSVersion>8.0.20</MicrosoftExtensionsCachingSqlServerLTSVersion>
133137
<MicrosoftExtensionsCachingStackExchangeRedisLTSVersion>8.0.20</MicrosoftExtensionsCachingStackExchangeRedisLTSVersion>
134138
<MicrosoftExtensionsDiagnosticsHealthChecksLTSVersion>8.0.20</MicrosoftExtensionsDiagnosticsHealthChecksLTSVersion>
139+
<MicrosoftExtensionsFeaturesLTSVersion>8.0.20</MicrosoftExtensionsFeaturesLTSVersion>
135140
<MicrosoftExtensionsHttpPollyLTSVersion>8.0.20</MicrosoftExtensionsHttpPollyLTSVersion>
136141
<MicrosoftExtensionsObjectPoolLTSVersion>8.0.20</MicrosoftExtensionsObjectPoolLTSVersion>
137142
<!-- Dependencies from https://github.com/dotnet/efcore -->

eng/packages/General-LTS.props

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
of the framework, we should use the following LTS versions instead -->
55
<ItemGroup Condition="'$(TargetFramework)' != 'net9.0' And '$(ForceLatestDotnetVersions)' != 'true'">
66
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="$(MicrosoftBclAsyncInterfacesLTSVersion)" />
7+
<PackageVersion Include="Microsoft.Bcl.Memory" Version="$(MicrosoftBclMemoryVersion)" /> <!-- Note there is no 8.0 version of Microsoft.Bcl.Memory -->
78
<PackageVersion Include="Microsoft.Bcl.TimeProvider" Version="$(MicrosoftBclTimeProviderLTSVersion)" />
89
<PackageVersion Include="Microsoft.Extensions.Caching.Abstractions" Version="$(MicrosoftExtensionsCachingAbstractionsLTSVersion)" />
910
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="$(MicrosoftExtensionsCachingMemoryLTSVersion)" />
@@ -17,6 +18,7 @@
1718
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="$(MicrosoftExtensionsDependencyInjectionLTSVersion)" />
1819
<PackageVersion Include="Microsoft.Extensions.Diagnostics" Version="$(MicrosoftExtensionsDiagnosticsLTSVersion)" />
1920
<PackageVersion Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="$(MicrosoftExtensionsDiagnosticsHealthChecksLTSVersion)" />
21+
<PackageVersion Include="Microsoft.Extensions.Features" Version="$(MicrosoftExtensionsFeaturesLTSVersion)" />
2022
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="$(MicrosoftExtensionsHostingAbstractionsLTSVersion)" />
2123
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="$(MicrosoftExtensionsHostingLTSVersion)" />
2224
<PackageVersion Include="Microsoft.Extensions.Http.Polly" Version="$(MicrosoftExtensionsHttpPollyLTSVersion)" />
@@ -28,6 +30,7 @@
2830
<PackageVersion Include="Microsoft.Extensions.ObjectPool" Version="$(MicrosoftExtensionsObjectPoolLTSVersion)" />
2931
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="$(MicrosoftExtensionsOptionsConfigurationExtensionsLTSVersion)" />
3032
<PackageVersion Include="Microsoft.Extensions.Options" Version="$(MicrosoftExtensionsOptionsLTSVersion)" />
33+
<PackageVersion Include="Microsoft.Extensions.Primitives" Version="$(MicrosoftExtensionsPrimitivesLTSVersion)" />
3134
<PackageVersion Include="System.Collections.Immutable" Version="$(SystemCollectionsImmutableLTSVersion)" />
3235
<PackageVersion Include="System.Diagnostics.DiagnosticSource" Version="$(SystemDiagnosticsDiagnosticSourceLTSVersion)" />
3336
<PackageVersion Include="System.Diagnostics.PerformanceCounter" Version="$(SystemDiagnosticsPerformanceCounterLTSVersion)" />

eng/packages/General-net9.props

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
of the framework, the following versions should be used. -->
55
<ItemGroup Condition="'$(TargetFramework)' == 'net9.0' Or '$(ForceLatestDotnetVersions)' == 'true'">
66
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="$(MicrosoftBclAsyncInterfacesVersion)" />
7+
<PackageVersion Include="Microsoft.Bcl.Memory" Version="$(MicrosoftBclMemoryVersion)" />
78
<PackageVersion Include="Microsoft.Bcl.TimeProvider" Version="$(MicrosoftBclTimeProviderVersion)" />
89
<PackageVersion Include="Microsoft.Extensions.Caching.Abstractions" Version="$(MicrosoftExtensionsCachingAbstractionsVersion)" />
910
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="$(MicrosoftExtensionsCachingMemoryVersion)" />
@@ -17,6 +18,7 @@
1718
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="$(MicrosoftExtensionsDependencyInjectionVersion)" />
1819
<PackageVersion Include="Microsoft.Extensions.Diagnostics" Version="$(MicrosoftExtensionsDiagnosticsVersion)" />
1920
<PackageVersion Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="$(MicrosoftExtensionsDiagnosticsHealthChecksVersion)" />
21+
<PackageVersion Include="Microsoft.Extensions.Features" Version="$(MicrosoftExtensionsFeaturesVersion)" />
2022
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="$(MicrosoftExtensionsHostingAbstractionsVersion)" />
2123
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="$(MicrosoftExtensionsHostingVersion)" />
2224
<PackageVersion Include="Microsoft.Extensions.Http.Polly" Version="$(MicrosoftExtensionsHttpPollyVersion)" />
@@ -28,6 +30,7 @@
2830
<PackageVersion Include="Microsoft.Extensions.ObjectPool" Version="$(MicrosoftExtensionsObjectPoolVersion)" />
2931
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="$(MicrosoftExtensionsOptionsConfigurationExtensionsVersion)" />
3032
<PackageVersion Include="Microsoft.Extensions.Options" Version="$(MicrosoftExtensionsOptionsVersion)" />
33+
<PackageVersion Include="Microsoft.Extensions.Primitives" Version="$(MicrosoftExtensionsPrimitivesVersion)" />
3134
<PackageVersion Include="System.Collections.Immutable" Version="$(SystemCollectionsImmutableVersion)" />
3235
<PackageVersion Include="System.Diagnostics.DiagnosticSource" Version="$(SystemDiagnosticsDiagnosticSourceVersion)" />
3336
<PackageVersion Include="System.Diagnostics.PerformanceCounter" Version="$(SystemDiagnosticsPerformanceCounterVersion)" />

eng/packages/General.props

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
<PackageVersion Include="Azure.Identity" Version="1.13.2" />
66
<PackageVersion Include="Azure.Storage.Files.DataLake" Version="12.21.0" />
77
<PackageVersion Include="Azure.AI.Inference" Version="1.0.0-beta.5" />
8+
<PackageVersion Include="DnsClient" Version="1.8.0" />
89
<PackageVersion Include="ICSharpCode.Decompiler" Version="9.1.0.7988" />
910
<PackageVersion Include="Microsoft.Bcl.HashCode" Version="1.1.1" />
1011
<PackageVersion Include="Microsoft.CodeAnalysis.Analyzers" Version="$(MicrosoftCodeAnalysisAnalyzersVersion)" />
@@ -21,6 +22,7 @@
2122
<PackageVersion Include="Polly.Core" Version="8.4.2" />
2223
<PackageVersion Include="Polly.Extensions" Version="8.4.2" />
2324
<PackageVersion Include="Polly.RateLimiting" Version="8.4.2" />
25+
<PackageVersion Include="SharpFuzz" Version="2.1.1" />
2426
<PackageVersion Include="System.Buffers" Version="4.5.1" />
2527
<PackageVersion Include="System.ClientModel" Version="1.2.1" />
2628
<PackageVersion Include="System.CommandLine.NamingConventionBinder" Version="2.0.0-beta4.22272.1" />
@@ -33,6 +35,7 @@
3335
<PackageVersion Include="System.Threading.Tasks.Extensions" Version="4.5.4" />
3436
<PackageVersion Include="System.ValueTuple" Version="4.5.0" />
3537
<PackageVersion Include="YamlDotNet" Version="12.3.1" />
38+
<PackageVersion Include="Yarp.ReverseProxy" Version="2.3.0" />
3639
</ItemGroup>
3740

3841
<ItemGroup>
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
4+
namespace Microsoft.Extensions.ServiceDiscovery;
5+
6+
/// <summary>
7+
/// Exposes the host name of the end point.
8+
/// </summary>
9+
public interface IHostNameFeature
10+
{
11+
/// <summary>
12+
/// Gets the host name of the end point.
13+
/// </summary>
14+
public string HostName { get; }
15+
}
16+
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
4+
using Microsoft.AspNetCore.Http.Features;
5+
using Microsoft.Extensions.Primitives;
6+
7+
namespace Microsoft.Extensions.ServiceDiscovery;
8+
9+
/// <summary>
10+
/// Builder to create a <see cref="ServiceEndpointSource"/> instances.
11+
/// </summary>
12+
public interface IServiceEndpointBuilder
13+
{
14+
/// <summary>
15+
/// Gets the endpoints.
16+
/// </summary>
17+
IList<ServiceEndpoint> Endpoints { get; }
18+
19+
/// <summary>
20+
/// Gets the feature collection.
21+
/// </summary>
22+
IFeatureCollection Features { get; }
23+
24+
/// <summary>
25+
/// Adds a change token to the resulting <see cref="ServiceEndpointSource"/>.
26+
/// </summary>
27+
/// <param name="changeToken">The change token.</param>
28+
void AddChangeToken(IChangeToken changeToken);
29+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
4+
namespace Microsoft.Extensions.ServiceDiscovery;
5+
6+
/// <summary>
7+
/// Provides details about a service's endpoints.
8+
/// </summary>
9+
public interface IServiceEndpointProvider : IAsyncDisposable
10+
{
11+
/// <summary>
12+
/// Resolves the endpoints for the service.
13+
/// </summary>
14+
/// <param name="endpoints">The endpoint collection, which resolved endpoints will be added to.</param>
15+
/// <param name="cancellationToken">The token to monitor for cancellation requests.</param>
16+
/// <returns>The resolution status.</returns>
17+
ValueTask PopulateAsync(IServiceEndpointBuilder endpoints, CancellationToken cancellationToken);
18+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
4+
using System.Diagnostics.CodeAnalysis;
5+
6+
namespace Microsoft.Extensions.ServiceDiscovery;
7+
8+
/// <summary>
9+
/// Creates <see cref="IServiceEndpointProvider"/> instances.
10+
/// </summary>
11+
public interface IServiceEndpointProviderFactory
12+
{
13+
/// <summary>
14+
/// Tries to create an <see cref="IServiceEndpointProvider"/> instance for the specified <paramref name="query"/>.
15+
/// </summary>
16+
/// <param name="query">The service to create the provider for.</param>
17+
/// <param name="provider">The provider.</param>
18+
/// <returns><see langword="true"/> if the provider was created, <see langword="false"/> otherwise.</returns>
19+
bool TryCreateProvider(ServiceEndpointQuery query, [NotNullWhen(true)] out IServiceEndpointProvider? provider);
20+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
4+
using System.Net;
5+
using Microsoft.AspNetCore.Http.Features;
6+
7+
namespace Microsoft.Extensions.ServiceDiscovery.Internal;
8+
9+
internal sealed class ServiceEndpointImpl(EndPoint endPoint, IFeatureCollection? features = null) : ServiceEndpoint
10+
{
11+
public override EndPoint EndPoint { get; } = endPoint;
12+
13+
public override IFeatureCollection Features { get; } = features ?? new FeatureCollection();
14+
15+
public override string? ToString() => EndPoint switch
16+
{
17+
IPEndPoint ip when ip.Port == 0 && ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6 => $"[{ip.Address}]",
18+
IPEndPoint ip when ip.Port == 0 => $"{ip.Address}",
19+
DnsEndPoint dns when dns.Port == 0 => $"{dns.Host}",
20+
DnsEndPoint dns => $"{dns.Host}:{dns.Port}",
21+
_ => EndPoint.ToString()!
22+
};
23+
}

0 commit comments

Comments
 (0)