System.ClientModel
1.1.0-beta.2
Prefix Reserved
See the version list below for details.
dotnet add package System.ClientModel --version 1.1.0-beta.2
NuGet\Install-Package System.ClientModel -Version 1.1.0-beta.2
<PackageReference Include="System.ClientModel" Version="1.1.0-beta.2" />
paket add System.ClientModel --version 1.1.0-beta.2
#r "nuget: System.ClientModel, 1.1.0-beta.2"
// Install System.ClientModel as a Cake Addin #addin nuget:?package=System.ClientModel&version=1.1.0-beta.2&prerelease // Install System.ClientModel as a Cake Tool #tool nuget:?package=System.ClientModel&version=1.1.0-beta.2&prerelease
System.ClientModel library for .NET
System.ClientModel
contains building blocks for communicating with cloud services. It provides shared primitives, abstractions, and helpers for .NET service client libraries.
System.ClientModel
allows client libraries built from its components to expose common functionality in a consistent fashion, so that once you learn how to use these APIs in one client library, you'll know how to use them in other client libraries as well.
Getting started
Typically, you will not need to install System.ClientModel
.
it will be installed for you when you install one of the client libraries using it.
Install the package
Install the client library for .NET with NuGet.
dotnet add package System.ClientModel
Prerequisites
None needed for System.ClientModel
.
Authenticate the client
The System.ClientModel
package provides a KeyCredential
type for authentication.
Key concepts
The main shared concepts of System.ClientModel
include:
- Configuring service clients (
ClientPipelineOptions
). - Accessing HTTP response details (
ClientResult
,ClientResult<T>
). - Exceptions for reporting errors from service requests in a consistent fashion (
ClientResultException
). - Customizing requests (
RequestOptions
). - Providing APIs to read and write models in different formats (
ModelReaderWriter
).
Examples
Send a message using the MessagePipeline
A very basic client implementation might use the following approach:
ApiKeyCredential credential = new ApiKeyCredential(key);
ApiKeyAuthenticationPolicy authenticationPolicy = ApiKeyAuthenticationPolicy.CreateBearerAuthorizationPolicy(credential);
ClientPipeline pipeline = ClientPipeline.Create(pipelineOptions, authenticationPolicy);
PipelineMessage message = pipeline.CreateMessage();
message.Apply(requestOptions);
message.MessageClassifier = PipelineMessageClassifier.Create(stackalloc ushort[] { 200 });
PipelineRequest request = message.Request;
request.Method = "GET";
request.Uri = new Uri("https://www.example.com/");
request.Headers.Add("Accept", "application/json");
pipeline.Send(message);
Console.WriteLine(message.Response.Status);
Read and write persistable models
As a library author you can implement IPersistableModel<T>
or IJsonModel<T>
which will give library users the ability to read and write your models.
Example writing an instance of a model.
InputModel model = new InputModel();
BinaryData data = ModelReaderWriter.Write(model);
Example reading a model from json
string json = @"{
""x"": 1,
""y"": 2,
""z"": 3
}";
OutputModel? model = ModelReaderWriter.Read<OutputModel>(BinaryData.FromString(json));
Troubleshooting
You can troubleshoot System.ClientModel
-based clients by inspecting the result of any ClientResultException
thrown from a pipeline's Send
method.
Next steps
Contributing
This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.
When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repositories using our CLA.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. 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. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- System.Memory.Data (>= 1.0.2)
- System.Text.Json (>= 4.7.2)
-
net6.0
- System.Memory.Data (>= 1.0.2)
- System.Text.Json (>= 4.7.2)
NuGet packages (153)
Showing the top 5 NuGet packages that depend on System.ClientModel:
Package | Downloads |
---|---|
Azure.Core
This is the implementation of the Azure Client Pipeline |
|
Azure.ResourceManager
Microsoft Azure Resource Manager client SDK for Azure resources. |
|
Microsoft.VisualStudio.Services.InteractiveClient
Integrate with Azure DevOps Server 2022 and Azure DevOps Services from desktop-based Windows applications that require interactive sign-in by a user. |
|
Azure.ResourceManager.Storage
Microsoft Azure management client SDK for Azure resource provider Microsoft.Storage. |
|
Azure.ResourceManager.Resources
Microsoft Azure Resource Manager client SDK for Azure resource provider Resources. |
GitHub repositories (11)
Showing the top 5 popular GitHub repositories that depend on System.ClientModel:
Repository | Stars |
---|---|
microsoft/semantic-kernel
Integrate cutting-edge LLM technology quickly and easily into your apps
|
|
Azure/azure-sdk-for-net
This repository is for active development of the Azure SDK for .NET. For consumers of the SDK we recommend visiting our public developer docs at https://learn.microsoft.com/dotnet/azure/ or our versioned developer docs at https://azure.github.io/azure-sdk-for-net.
|
|
openai/openai-dotnet
The official .NET library for the OpenAI API
|
|
optimajet/WorkflowEngine.NET
WorkflowEngine.NET - component that adds workflow in your application. It can be fully integrated into your application, or be in the form of a specific service (such as a web service).
|
|
Kyrodan/KeeAnywhere
A cloud storage provider plugin for KeePass Password Safe
|
Version | Downloads | Last updated |
---|---|---|
1.2.1 | 235,217 | 10/9/2024 |
1.2.0 | 24,676 | 10/3/2024 |
1.1.0 | 5,462,885 | 9/17/2024 |
1.1.0-beta.7 | 149,675 | 8/14/2024 |
1.1.0-beta.6 | 1,023 | 8/1/2024 |
1.1.0-beta.5 | 317,659 | 7/11/2024 |
1.1.0-beta.4 | 423,358 | 5/16/2024 |
1.1.0-beta.3 | 7,168 | 4/5/2024 |
1.1.0-beta.2 | 3,403 | 2/29/2024 |
1.1.0-beta.1 | 3,868 | 2/1/2024 |
1.0.0 | 74,527,876 | 1/3/2024 |
1.0.0-beta.4 | 572 | 3/12/2024 |
1.0.0-beta.3 | 5,006 | 1/4/2024 |
1.0.0-beta.2 | 520 | 12/14/2023 |
1.0.0-beta.1 | 382 | 11/27/2023 |