gRPC Swift (iOS/macOS): लाइब्रेरी और उदाहरण
gRPC एक हाई-परफॉर्मेंस RPC (रिमोट प्रोसीजर कॉल) फ्रेमवर्क है, जिसे Google ने डेवलप किया है। यह डेटा सीरियलाइज़ेशन के लिए Protocol Buffers (protobuf) और ट्रांसपोर्ट के लिए HTTP/2 का उपयोग करता है। Apple प्लेटफॉर्म (iOS, macOS) के लिए एक आधिकारिक Swift gRPC इकोसिस्टम मौजूद है, जो async/await सहित Swift की आधुनिक सुविधाओं के पूर्ण समर्थन के साथ क्लाइंट और सर्वर दोनों एप्लिकेशन बनाने की सुविधा देता है।
मुख्य लाइब्रेरी और टूल्स
Swift में gRPC के साथ काम करने के लिए निम्नलिखित कंपोनेंट्स का उपयोग किया जाता है:
- gRPC-Swift — Google का आधिकारिक पैकेज। इसमें रनटाइम, कोड जनरेटर और क्लाइंट-सर्वर इंटरैक्शन का समर्थन शामिल है।
- Swift Protobuf — protobuf मैसेज के साथ काम करने के लिए लाइब्रेरी। .proto फाइलों से Swift स्ट्रक्चर जनरेट करने के लिए आवश्यक है।
- protoc — Protocol Buffers कंपाइलर। Swift कोड जनरेट करने के लिए
protoc-gen-grpc-swiftऔरprotoc-gen-swiftप्लगइन की आवश्यकता होती है। - Swift Package Manager (SPM) — डिपेंडेंसी इंटीग्रेट करने का मुख्य तरीका।
इंस्टॉलेशन और सेटअप
शुरू करने के लिए, Package.swift में डिपेंडेंसी जोड़ें:
// swift-tools-version:5.9
import PackageDescription
let package = Package(
name: "GRPCExample",
dependencies: [
.package(url: "https://github.com/grpc/grpc-swift.git", from: "1.21.0"),
.package(url: "https://github.com/apple/swift-protobuf.git", from: "1.26.0")
],
targets: [
.executableTarget(
name: "GRPCExample",
dependencies: [
.product(name: "GRPC", package: "grpc-swift"),
.product(name: "SwiftProtobuf", package: "swift-protobuf")
]
)
]
)
साथ ही, Homebrew के माध्यम से protoc और प्लगइन्स इंस्टॉल करें:
brew install protobuf
brew install grpc-swift
brew install swift-protobuf
.proto फ़ाइल का उदाहरण
अभिवादन के लिए एक सरल सर्विस बनाते हैं। फ़ाइल hello.proto:
syntax = "proto3";
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}
निम्न कमांड से Swift कोड जनरेट करें:
protoc --swift_out=. --grpc-swift_out=. hello.proto
इसके परिणामस्वरूप hello.pb.swift और hello.grpc.swift फ़ाइलें बनेंगी।
Swift में सर्वर साइड
एक gRPC सर्वर बनाते हैं जो SayHello अनुरोधों को हैंडल करेगा:
import GRPC
import NIO
import NIOPosix
class GreeterProvider: GreeterProvider {
func sayHello(request: HelloRequest, context: StatusOnlyCallContext) -> EventLoopFuture<HelloReply> {
var reply = HelloReply()
reply.message = "नमस्ते, \(request.name)!"
return context.eventLoop.makeSucceededFuture(reply)
}
}
let group = MultiThreadedEventLoopGroup(numberOfThreads: 1)
defer { try! group.syncShutdownGracefully() }
let server = try Server.insecure(group: group)
.withServiceProviders([GreeterProvider()])
.bind(host: "localhost", port: 50051)
.wait()
print("सर्वर localhost:50051 पर शुरू हो गया है")
try server.onClose.wait()
Swift में क्लाइंट साइड (async/await के साथ)
iOS/macOS क्लाइंट के लिए async/await का उपयोग करना सुविधाजनक है। सुनिश्चित करें कि आप Swift 5.5+ और न्यूनतम डिप्लॉयमेंट टार्गेट iOS 13.0 / macOS 10.15 का उपयोग कर रहे हैं।
import GRPC
import NIO
import NIOPosix
import SwiftProtobuf
func greet(name: String) async throws -> String {
let group = PlatformSupport.makeEventLoopGroup(loopCount: 1)
defer { try? group.syncShutdownGracefully() }
let channel = try GRPCChannelPool.with(
target: .host("localhost", port: 50051),