Swift (iOS/macOS) के लिए gRPC: लाइब्रेरीज़ और उदाहरण
gRPC एक आधुनिक उच्च-प्रदर्शन वाला रिमोट प्रोसीजर कॉल (RPC) फ्रेमवर्क है, जिसे Google द्वारा विकसित किया गया है। यह डेटा सीरियलाइज़ेशन के लिए Protocol Buffers (protobuf) और ट्रांसपोर्ट के लिए HTTP/2 का उपयोग करता है। Swift (iOS/macOS) इकोसिस्टम में, gRPC को gRPC-Swift लाइब्रेरी के माध्यम से लागू किया गया है, जो एसिंक्रोनस फ्रेमवर्क SwiftNIO के ऊपर बनाई गई है। यह Swift में क्लाइंट और सर्वर दोनों एप्लिकेशन बनाने की अनुमति देता है, जिसमें डेटा स्ट्रीमिंग, टाइमआउट और प्रमाणीकरण का समर्थन शामिल है।
Swift में gRPC के लिए मुख्य लाइब्रेरीज़
- gRPC-Swift — Apple और Google की आधिकारिक लाइब्रेरी। gRPC सर्वर और क्लाइंट बनाने के लिए API प्रदान करती है। यूनरी, सर्वर-साइड, क्लाइंट-साइड और द्विदिशात्मक स्ट्रीम का समर्थन करती है।
- SwiftNIO — नेटवर्क संचार के लिए निम्न-स्तरीय एसिंक्रोनस फ्रेमवर्क, जिस पर gRPC-Swift आधारित है।
- protoc-gen-swiftgrpc — protoc कंपाइलर के लिए प्लगइन, जो .proto फ़ाइलों से Swift कोड उत्पन्न करता है।
- SwiftProtobuf — Swift में protobuf संदेशों (सीरियलाइज़ेशन/डीसीरियलाइज़ेशन) के साथ काम करने के लिए लाइब्रेरी।
Swift Package Manager के माध्यम से इंस्टॉलेशन
अपने प्रोजेक्ट के Package.swift में निर्भरताएँ जोड़ें:
// swift-tools-version:5.7import PackageDescription
let package = Package( name: "gRPCExample", platforms: [.macOS(.v12), .iOS(.v15)], 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.21.0") ], targets: [ .executableTarget( name: "gRPCExample", dependencies: [ .product(name: "GRPC", package: "grpc-swift"), .product(name: "SwiftProtobuf", package: "swift-protobuf") ] ) ]).proto फ़ाइल बनाना
सर्विस और संदेशों को परिभाषित करें। helloworld.proto फ़ाइल का उदाहरण:
syntax = "proto3";
service Greeter { rpc SayHello (HelloRequest) returns (HelloReply) {}}
message HelloRequest { string name = 1;}
message HelloReply { string message = 1;}Swift कोड जनरेशन
protoc और प्लगइन्स इंस्टॉल करें:
brew install protobufbrew install swift-protobufbrew install grpc-swiftकोड जनरेट करें:
protoc helloworld.proto \ --proto_path=. \ --swift_out=. \ --grpc-swift_out=.helloworld.pb.swift और helloworld.grpc.swift फ़ाइलें बनाई जाएँगी।
Swift (macOS) पर सर्वर का उदाहरण
import GRPCimport NIOimport HelloWorld // जनरेटेड मॉड्यूल
class GreeterProvider: Greeter_GreeterProvider { func sayHello(request: Greeter_HelloRequest, context: StatusOnlyCallContext) -> EventLoopFuture<Greeter_HelloReply> { var reply = Greeter_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 (iOS/macOS) पर क्लाइंट का उदाहरण
import GRPCimport NIOimport HelloWorld
let group = PlatformSupport.makeEventLoopGroup(loopCount: 1)defer { try! group.syncShutdownGracefully() }
let channel = try GRPCChannelPool.with( target: .host("localhost", port: 50051), transportSecurity: .plaintext, eventLoopGroup: group)defe