Skip to content
Permalink
Browse files
update quick start
  • Loading branch information
chickenlj committed Aug 8, 2021
1 parent ebfbd97 commit 6ef6782452900b781ac4772301d3b8ca48b80eb4
Showing 1 changed file with 9 additions and 7 deletions.
@@ -6,11 +6,13 @@ weight: 3
description: ""
---

## 定义服务
Dubbo3 推荐使用 IDL 定义跨语言服务,如期望使用特定语言的服务定义方式请移步[多语言](../languages)模块。
服务是 Dubbo 中的核心概念,一个服务代表一组 RPC 方法的集合,服务是面向用户编程、服务发现机制等的基本单位。Dubbo 开发的基本流程是:用户定义 RPC 服务,通过约定的配置
方式将 RPC 声明为 Dubbo 服务,然后就可以基于服务 API 进行编程了。对服务提供者来说是提供 RPC 服务的具体实现,而对服务消费者来说则是使用特定数据发起服务调用。

下面从定义服务、编译服务、配置并加载服务三个方面说明如何快速的开发 Dubbo 服务。

服务是 Dubbo 中的核心概念,一个服务代表一组 RPC 方法的集合,服务是面向用户编程、服务发现机制等的基本单位。基本流程是,用户定义 RPC 服务,通过约定的配置
方式将 RPC 声明为 Dubbo 服务,然后就可以基于服务进行编程了,对服务提供者来说,是提供 RPC 服务的具体实现,对服务消费者来说,则是使用特定数据发起服务调用
## 定义服务
Dubbo3 推荐使用 IDL 定义跨语言服务,如您更习惯使用特定语言的服务定义方式,请移步[多语言](../languages)模块

```text
syntax = "proto3";
@@ -39,14 +41,14 @@ message HelloReply {
```

以下是使用 IDL 定义服务的一个简单示例,我们可以把它命名为 `DemoService.proto`,proto 文件中定义了 RPC 服务名称 `DemoService` 与方法签名
以上是使用 IDL 定义服务的一个简单示例,我们可以把它命名为 `DemoService.proto`,proto 文件中定义了 RPC 服务名称 `DemoService` 与方法签名
`SayHello (HelloRequest) returns (HelloReply) {}`,同时还定义了方法的入参结构体、出参结构体 `HelloRequest``HelloResponse`
IDL 格式的服务依赖 Protobuf 编译器,用来生成可以被用户调用的客户端与服务端编程 API,Dubbo 在原生 Protobuf Compiler 的基础上提供了适配多种语言的特有插件,用于适配 Dubbo 框架特有的 API 与编程模型。

> 使用 Dubbo3 IDL 定义的服务只允许一个入参与出参,这更有利于多语言实现与向后兼容性,支持依赖 Protobuf 序列化的向后兼容性透明的增删字段
> 使用 Dubbo3 IDL 定义的服务只允许一个入参与出参,这种形式的服务签名🈶两个优势,一是对多语言实现更友好,二是可以保证服务的向后兼容性,依赖于 Protobuf 序列化的兼容性,我们可以很容易的调整传输的数据结构如增、删字段等,完全不用担心接口的兼容性
## 编译服务
根据当前采用的语言,配置配套的 Protobuf 插件,编译后将生产语言相关的服务定义 stub。
根据当前采用的语言,配置相应的 Protobuf 插件,编译后将生产语言相关的服务定义 stub。

### Java
Java 语言生成的 stub 如下,核心是一个接口定义

0 comments on commit 6ef6782

Please sign in to comment.