Comments (7)
In this sense, a "server" is something that implements a "service" or a "server interface". It's a little unfortunate that the grpc.Server
type has the same name, but it's not a big deal once you get used to it.
from grpc-go.
Now that is alpha It could be fixed to keep consistency with the rest of the language implementations :)
from grpc-go.
I agree with @dsymonds that "Server" could be a good name for something that implements the server side of a service. But the name is indeed confusing with grpc.Server
.
The grpc.Server can serve multiple server's that implement the service's server interface.. ๐
So how about adopting a new word? For instance Handler
?
A Handler
interface describes a Service
and is implemented by the user.
e.g.:
// Generated from the proto service definition
type FoobarHandler interface {
Foobar(int) (int, error) // rpc method
OtherThing(int
}
// Registration linker
RegisterFoobarHandler(*grpc.Server, FoobarHandler)
Now the grpc.Server
can serve multiple Handlers which implement the service's Handler interface.
The name Handler is already being used by grpc, but afaik mostly internally.
For instance, this is generated code:
var _Foobar_serviceDesc = grpc.ServiceDesc{
ServiceName: "foobar.Foobar",
HandlerType: (*FoobarServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "Info",
Handler: _Foobar_Info_Handler,
},
},
Streams: []grpc.StreamDesc{
{
StreamName: "Subscribe",
Handler: _Foobar_Subscribe_Handler,
ServerStreams: true,
},
},
}
We can see Handler
is already being used as a field to link service methods, but it also refers to the Server itself (HandlerType
).
I don't think that the ServiceDesc, MethodDesc and StreamDesc's are to be modified by the user, so the Handler word might be a good option here.
from grpc-go.
I'd prefer Service
because it describes a Service
instead of: A Handler interface describes a Service and is implemented by the user.
But I'm ok which Handler
since it's different from Server
as you say.
from grpc-go.
I do not like Handler since it is already used in grpc meaning different thing. I like "Service" and am also okay with "Server". I leave the decision to @dsymonds who is the owner of grpc codegen and protobuf in Go.
from grpc-go.
I've thought about it, and I think the current state is fine. Let's close this and move onto more important issues.
from grpc-go.
๐
from grpc-go.
Related Issues (20)
- Flaky test: 6/100K: Test/LRSClient HOT 2
- Docs: Document how to migrate from `Dial, DialContext, WithBlock, WithReturnConnectionError, FailOnNonTempDialError` to `NewClient` HOT 3
- Stop supporting 3 releases of Go HOT 4
- <invalid gRPC request method "PRI">, when happend grpc and http use sample port HOT 2
- It seems that there is a memory leak issue in the HandleStreams function. HOT 13
- When the client receives the "too many pings" error log, how to get the server's target or remoteIP information? HOT 4
- Improve the xDS bootstrap package HOT 2
- xds/bootstrap: `client_features` should be set completely by the client implementation HOT 1
- License File seems to be missing the name of copyright owner HOT 2
- Why is the service config passed as a JSON-String just to get converterted to a struct anyway? HOT 7
- Cardinality violations should use error code โunimplementedโ HOT 4
- GitHub Action: branch protection checks are skipped, and also not blocking merges HOT 3
- grpc.NewClient with namedpipe on Windows throws resolverError HOT 2
- User agent becomes grpc-go/1.64. on server side of grpc gateway HOT 3
- xds: move functionality from `xds/internal` to `internal/xds`
- stubserver: add support to optionally pass in a `grpc.Server` or `xds.GRPCServer` HOT 2
- Github Action: Codecov action is broken and is failing silently HOT 1
- Upgrade to using math/rand/v2 to get perf enhancements HOT 2
- xds: tests shouldn't rely on the presence of an entry in the `authorities` field of the bootstrap configuration with an empty key
- Experimental API related to metadata HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from grpc-go.