Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.

Commit 71cb4df

Browse files
docs(binary_authorization): Clarify the role of main vs versioned clients in the readme
1 parent 4645c17 commit 71cb4df

2 files changed

Lines changed: 62 additions & 3 deletions

File tree

google-cloud-binary_authorization/README.md

Lines changed: 61 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@ Binary Authorization is a service on Google Cloud that provides centralized soft
66

77
Actual client classes for the various versions of this API are defined in
88
_versioned_ client gems, with names of the form `google-cloud-binary_authorization-v*`.
9-
The gem `google-cloud-binary_authorization` is a convenience wrapper library that brings the
9+
The gem `google-cloud-binary_authorization` is the main client library that brings the
1010
verisoned gems in as dependencies, and provides high-level methods for
11-
constructing clients.
11+
constructing clients. More information on versioned clients can be found below
12+
in the section titled *Which client should I use?*.
1213

1314
View the [Client Library Documentation](https://googleapis.dev/ruby/google-cloud-binary_authorization/latest)
1415
for this library, google-cloud-binary_authorization, to see the convenience methods for
@@ -69,3 +70,61 @@ in security maintenance, and not end of life. Currently, this means Ruby 2.4
6970
and later. Older versions of Ruby _may_ still work, but are unsupported and not
7071
recommended. See https://www.ruby-lang.org/en/downloads/branches/ for details
7172
about the Ruby support schedule.
73+
74+
## Which client should I use?
75+
76+
Most modern Ruby client libraries for Google APIs come in two flavors: the main
77+
client library with a name such as `google-cloud-binary_authorization`,
78+
and lower-level _versioned_ client libraries with names such as
79+
`google-cloud-binary_authorization-v1beta1`.
80+
_In most cases, you should install the main client._
81+
82+
### What's the difference between the main client and a versioned client?
83+
84+
A _versioned client_ provides a basic set of data types and client classes for
85+
a _single version_ of a specific service. (That is, for a service with multiple
86+
versions, there might be a separate versioned client for each service version.)
87+
Most versioned clients are written and maintained by a code generator.
88+
89+
The _main client_ is designed to provide you with the _recommended_ client
90+
interfaces for the service. There will be only one main client for any given
91+
service, even a service with multiple versions. The main client includes
92+
factory methods for constructing the client objects we recommend for most
93+
users. In some cases, those will be classes provided by an underlying versioned
94+
client; in other cases, they will be handwritten higher-level client objects
95+
with additional capabilities, convenience methods, or best practices built in.
96+
Generally, the main client will default to a recommended service version,
97+
although in some cases you can override this if you need to talk to a specific
98+
service version.
99+
100+
### Why would I want to use the main client?
101+
102+
We recommend that most users install the main client gem for a service. You can
103+
identify this gem as the one _without_ a version in its name, e.g.
104+
`google-cloud-binary_authorization`.
105+
The main client is recommended because it will embody the best practices for
106+
accessing the service, and may also provide more convenient interfaces or
107+
tighter integration into frameworks and third-party libraries. In addition, the
108+
documentation and samples published by Google will generally demonstrate use of
109+
the main client.
110+
111+
### Why would I want to use a versioned client?
112+
113+
You can use a versioned client if you are content with a possibly lower-level
114+
class interface, you explicitly want to avoid features provided by the main
115+
client, or you want to access a specific service version not be covered by the
116+
main client. You can identify versioned client gems because the service version
117+
is part of the name, e.g. `google-cloud-binary_authorization-v1beta1`.
118+
119+
### What about the google-apis-<name> clients?
120+
121+
Client library gems with names that begin with `google-apis-` are based on an
122+
older code generation technology. They talk to a REST/JSON backend (whereas
123+
most modern clients talk to a [gRPC](https://grpc.io/) backend) and they may
124+
not offer the same performance, features, and ease of use provided by more
125+
modern clients.
126+
127+
The `google-apis-` clients have wide coverage across Google services, so you
128+
might need to use one if there is no modern client available for the service.
129+
However, if a modern client is available, we generally recommend it over the
130+
older `google-apis-` clients.

google-cloud-binary_authorization/synth.metadata

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"git": {
55
"name": ".",
66
"remote": "https://github.com/googleapis/google-cloud-ruby.git",
7-
"sha": "61986f669b2c350e34d332bd55f4d9efee9e84b1"
7+
"sha": "ede929c4c37760c903a53cc4916f82bdb54336ea"
88
}
99
},
1010
{

0 commit comments

Comments
 (0)