مشاركة عبر


تمكين الميزات الشرطية باستخدام عامل تصفية مخصص في تطبيق ويب Go Gin

يمكن أن تستخدم علامات الميزات عوامل تصفية الميزات لتمكين الميزات بشكل مشروط. لمعرفة المزيد حول عوامل تصفية الميزات، راجع تمكين الميزات الشرطية باستخدام عوامل تصفية الميزات.

يعتمد المثال المستخدم في هذا الدليل على تطبيق الويب Go Gin الذي تم تقديمه في التشغيل السريع لإدارة الميزات. قبل المتابعة ، أكمل التشغيل السريع لإنشاء تطبيق ويب Go Gin بعلامة ميزة تجريبية . بمجرد الانتهاء، يجب إضافة عامل تصفية ميزة مخصص إلى علامة ميزة Beta في متجر App Configuration.

في هذا الدليل، تتعلم كيفية تنفيذ عامل تصفية ميزات مخصص واستخدام عامل تصفية الميزات لتمكين الميزات بشكل مشروط.

Prerequisites

تنفيذ عامل تصفية ميزة مخصص

لقد أضفت عامل تصفية ميزة مخصص باسم عشوائي مع معلمة النسبة المئوية لعلامة الميزة التجريبية في المتطلبات الأساسية. بعد ذلك، ستقوم بتنفيذ عامل تصفية الميزة لتمكين علامة ميزة Beta استنادا إلى الفرصة المحددة بواسطة معلمة النسبة المئوية .

  1. random_filter.go إنشاء ملف باستخدام التعليمات البرمجية التالية:

    package main
    
    import (
        "fmt"
        "math/rand"
        "time"
    
        "github.com/microsoft/Featuremanagement-Go/featuremanagement"
    )
    
    type RandomFilter struct{}
    
    func (f *RandomFilter) Name() string {
        return "Random"
    }
    
    func (f *RandomFilter) Evaluate(evalCtx featuremanagement.FeatureFilterEvaluationContext, appCtx any) (bool, error) {
        percentage, ok := evalCtx.Parameters["Percentage"].(float64)
        if !ok {
            return false, fmt.Errorf("invalid parameter type for Percentage: expected float64, got %T", evalCtx.Parameters["Percentage"])
        }
    
        rand.Seed(time.Now().UnixNano())
        randomValue := rand.Intn(100)
        return randomValue <= int(percentage), nil
    }
    

    لقد أضفت بنية RandomFilter تنفذ الواجهة FeatureFilter من المكتبة featuremanagement . تحتوي الواجهة FeatureFilter على طريقتين:

    • Name() إرجاع اسم عامل التصفية عشوائي، والذي يطابق اسم عامل التصفية الذي قمت بتعيينه في علامة الميزة التجريبية في تكوين تطبيق Azure.
    • Evaluate() عندما يتم تقييم علامة الميزة. يتيح عامل تصفية الميزات علامة الميزة عن طريق إرجاع true.
  2. قم بتحديث ملفك main.go لتسجيل عند RandomFilter إنشاء مدير الميزات:

    // ...existing code...
    
    func main() {
        ctx := context.Background()
    
        // Load Azure App Configuration
        appConfig, err := loadAzureAppConfiguration(ctx)
        if err != nil {
            log.Fatalf("Error loading Azure App Configuration: %v", err)
        }
    
        // Create feature flag provider
        featureFlagProvider, err := azappconfig.NewFeatureFlagProvider(appConfig)
        if err != nil {
            log.Fatalf("Error creating feature flag provider: %v", err)
        }
    
        // Register custom filters
        options := &featuremanagement.Options{
            Filters: []featuremanagement.FeatureFilter{
                &RandomFilter{},
            },
        }
    
        // Create feature manager with custom filters
        featureManager, err := featuremanagement.NewFeatureManager(featureFlagProvider, options)
        if err != nil {
            log.Fatalf("Error creating feature manager: %v", err)
        }
    
        // ...existing code...
    }
    

عامل تصفية الميزة قيد التنفيذ

أعد تشغيل التطبيق وحدث المتصفح عدة مرات. بدون تبديل علامة الميزة يدويا، تظهر القائمة التجريبية بشكل عشوائي بناء على النسبة المئوية التي تحددها.

لقطة شاشة لتطبيق الويب Gin مع إخفاء القائمة التجريبية.

لقطة شاشة لتطبيق الويب Gin مع القائمة التجريبية.

Next steps

لمعرفة المزيد حول عوامل تصفية الميزات المضمنة، تابع إلى المستندات التالية.

للحصول على ملخص الميزات الكامل لمكتبة إدارة ميزات Go، تابع إلى المستند التالي.