Azure / azure-sdk-for-java

This repository is for active development of the Azure SDK for Java. For consumers of the SDK we recommend visiting our public developer docs at https://docs.microsoft.com/java/azure/ or our versioned developer docs at https://azure.github.io/azure-sdk-for-java.
MIT License
2.26k stars 1.93k forks source link

Identified Areas for filling gap between azure-core and clientcore #40465

Open samvaity opened 1 month ago

samvaity commented 1 month ago

Identified Areas for filling gap between azure-core and clientcore

  1. Policies: Support for more general policies like, user agent policy, cookie policy, addHeaders.

    Going through policies case-by-case to investigate the need for "lift & shift" with openrewrite without async-ness, or filtering azure specific details from the policies only applying what is needed for generic concept of the policy.

  2. Serialization: Missing API support for custom serializer/adapter from user.

    NEED TO CONFIRM

  3. Response Handling: The need for ResponseBase with strongly typed headers. (with lazily invoked headers, so that the typed headers the values aren't converted until access time)

    Don't need this in client-core

  4. Pagination: Support for paged responses and LRO operations.

    Support pagination in client-core, with "lift & shift" with openrewrite without async-ness

  5. Authentication: Missing support for TokenCredential points to a gap in the authentication mechanisms.

    Follow up issue filed.

  6. Policy positioning: The concept of adding before and after retry policies for handling transient errors and ensuring reliable retries/redirects.

    NEED TO CONFIRM

  7. ServiceVersion: Missing support for ServiceVersion, there is no mechanism to handle different versions of the API.

    Support in client-core, with "lift & shift" with openrewrite without async-ness

  8. Compatibility with azure-core: Utilize azure-core's shared primitives, abstractions, and helpers to maintain consistency Azure SDK client libraries.

    Extend and re-use as much as we can to take the easy wins, but where it cannot, make intentional choices for the new state/models.

  9. Tracing: Missing support for tracing.

    Follow up with Liudmila, for the approach we want to undertake for client-core tracing.

  10. Minor:

    • Missing #NONE configuration, lack of default settings or a way to handle unspecified configurations.
robsimpson commented 1 month ago

HI Sameeksha

The only thing I have noted that isn't mentioned above is com.azure.core.client.traits.* - is missing some that were used in the app config SDK, ConnectionStringTrait in particular. Am guessing similar to policies, in that if it's required it should be pretty simple to lift/shift?

Rob S