一、前言
Open-SDK小调查, 大家在使用SDK进行开发时,感觉不同的服务(比如消息群组服务和联系人服务)打成一个SDK包使用方便,还是不同服务打成独立的SDK使用起来比较方便哇?
下面篇幅给大家展示下两种策略下的使用情况,欢迎大家观看后,在评论区踊跃建言献策^^ (P.S. 大家有其他 SDK 相关的反馈建议也可以评论哈~)
二、提供单个SDK(代表AWS)
如下当开发者需要对接通讯录服务和消息群组服务时,需要先在自己代码系统的go.mod文件里面引入单个SDK:
require github.com/larksuite/open-sdk-go v1.0.0
然后开发者就可以import具体的服务包进行业务开发:
import (
"context"
"fmt"
"github.com/larksuite/open-sdk-go" // SDK框架包
"github.com/larksuite/open-sdk-go/service/contact/v3" // 通讯录业务包
"github.com/larksuite/open-sdk-go/service/im/v1" // 消息和群组业务包
)
func main() {
//1.创建单例的客户端实例
client := lark.NewClientBuilder().
Domain(lark.DomainFeiShu). // 域名
AppCredential("appId", "appSecret"). // appkey,appSecret
Build()
//2.调用通讯录服务创建联系人
user, err := client.ContactServiceV3.Users.Create(context.Background(), contact_v3.NewCreateUserReqBuilder().
UserIdType("useridtype").
DepartmentIdType("DepartmentIdType").
User(contact_v3.UserBuilder().
Name("testname").
EnName("enname").
Email("test@163.com").
Mobile("121111111").
Gender(1).
DepartmentIds([]string{"0"}).
EmployeeType(1).
Build()).
Build())
....
// 3.调用消息服务发送消息
createMessageResp, err := client.ImServiceV1.Messages.Create(ctx, im_v1.NewCreateMessageReqBuilder().
ReceiveIdType(lark.ID_TYPE_CHAT_ID).
Body(im_v1.NewCreateMessageReqBodyBuilder().
ReceiveId(chatId).
MsgType(lark.MSG_TYPE_TEXT).
Content(lark.NewTextMsgContent().
AtAll("所有人").
TextLine(" 请注意线上服务发生报警,请及时处理").
At("ou_sfwdfdf", "张三").
JSON()).
Build()
))
.....
优点:开发时只需要引入一个SDK包
缺点:当需要升级某个服务时,默认升级所有的服务。
三、分服务提供SDK(代表Google)
不同服务提供单独的SDK,如下当开发者需要对接通讯录服务和消息群组服务时,需要先在自己代码系统的go.mod文件里面需要分别引入im和contact两个SDK:
require github.com/larksuite/open-sdk-go/service/im/v1 v1.0.0
require github.com/larksuite/open-sdk-go/service/contact/v3 v1.0.0
然后开发者就可以import具体的服务包进行业务开发:
import (
"context"
"fmt"
"github.com/larksuite/open-sdk-go" // SDK框架包
"github.com/larksuite/open-sdk-go/service/contact/v3" // 通讯录业务包
"github.com/larksuite/open-sdk-go/service/im/v1" // 消息和群组业务包
)
func main() {
//1.创建通讯录服务
contactServiceV3 := contact_v3.NewServiceBuilder().
Domain(lark.DomainFeiShu). // 域名
AppCredential("appId", "appSecret"). // appkey,appSecret
Build()
//2.调用通讯录服务创建联系人
user, err := contactServiceV3.Users.Create(context.Background(), contact_v3.NewCreateUserReqBuilder().
UserIdType("useridtype").
DepartmentIdType("DepartmentIdType").
User(contact_v3.UserBuilder().
Name("testname").
EnName("enname").
Email("test@163.com").
Mobile("121111111").
Gender(1).
DepartmentIds([]string{"0"}).
EmployeeType(1).
Build()).
Build())
....
// 3.创建消息群组服务
imServiceV1 := im_v1.NewServiceBuilder().
Domain(lark.DomainFeiShu). // 域名
AppCredential("appId", "appSecret"). // appkey,appSecret
Build()
// 4.调用消息服务发送消息
createMessageResp, err := imServiceV1.Messages.Create(ctx, im_v1.NewCreateMessageReqBuilder().
ReceiveIdType(lark.ID_TYPE_CHAT_ID).
Body(im_v1.NewCreateMessageReqBodyBuilder().
ReceiveId(chatId).
MsgType(lark.MSG_TYPE_TEXT).
Content(lark.NewTextMsgContent().
AtAll("所有人").
TextLine(" 请注意线上服务发生报警,请及时处理").
At("ou_sfwdfdf", "张三").
JSON()).
Build()
))
.....
优点:需要啥服务,就只引入啥服务的SDK即可,另外当升级某个服务时可选择性升级需要的服务,不需要统一升级其他服务的版本。
缺点:需要使用多个服务时,需要引入多个SDK包
四、投票
版权声明:本文为m0_37055174原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。