gRPC Swift (iOS/macOS): लाइब्रेरी, सेटअप और उदाहरण

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

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),                    

अनुशंसाएँ