C# OpenVPN நிலை பார்வையாளர்: அமர்வைக் கவனிக்கவும், NIC அல்ல
NetworkAvailabilityChanged ஒரு VPN நிகழ்வு அல்ல. சுரங்கத்தை வைத்திருக்கும் கிளையண்டின் நிலை ஸ்ட்ரீமைப் படிக்கவும், பழைய ஆய்வுகளிலிருந்து பாதுகாக்கவும், ஒவ்வொரு இணைப்பிற்கும் தயார்நிலையை வெளியிடவும்.
சுரங்கம் இறக்கும் போதும் உங்கள் பயன்பாடு வேலை செய்கிறது. Wi-Fi இன்னும் இயங்குகிறது, இணையம் இன்னும் பதிலளிக்கிறது, மேலும் பயன்பாடு சார்ந்திருக்கும் தனிப்பட்ட API அணுக முடியாததாகிவிட்டது. மக்கள் இங்கு பொதுவாக நாடும் .NET நிகழ்வு, NetworkAvailabilityChanged, அந்த நிலையைப் பற்றி எதுவும் விவரிக்கவில்லை. அது இயந்திரத்தின் ஒட்டுமொத்த நிலையில் ஏற்படும் மாற்றத்தைப் புகாரளிக்கிறது, மேலும் VPN துண்டிப்பு மற்றும் மறுஇணைப்பின் போதும் அந்த நிலை உண்மையாகவே இருக்கலாம். பார்வையாளர் சுரங்கத்தை வைத்திருக்கும் கிளையண்டைக் கவனிக்க வேண்டும், வலைப்பின்னல் ஸ்டாக்கின் சுருக்கத்தை அல்ல.
கிடைக்கும் தன்மை ஒரு ஒட்டுமொத்த மதிப்பு, உங்கள் சுரங்கம் அல்ல
NetworkAvailabilityChanged இயந்திரத்தின் ஒட்டுமொத்த கிடைக்கும் தன்மை பதில் மாறும்போது செயல்படும், அந்தப் பதில் loopback அல்லது சுரங்கத்தைத் தவிர ஒவ்வொரு செயலில் உள்ள இடைமுகத்தையும் எண்ணுகிறது.
Wi-Fi இயங்கும்போது VPN விழுவது அது அளப்பதில் எதையும் மாற்றாது, அதனால்தான் உங்களுக்கு முக்கியமான அந்தக் குறையின் போதே நிகழ்வு அமைதியாக இருக்க முடியும்.
நிலை ஸ்ட்ரீம் சுரங்கத்தை வைத்திருக்கும் கிளையண்டிற்கு சொந்தமானது
எந்தக் கூறு இணைப்பை வைத்திருக்கிறது என்பதை அடையாளம் காணுங்கள்: OpenVPN GUI அல்லது சேவை, OpenVPN Connect, அல்லது உங்கள் பயன்பாடு தொடங்கி கட்டுப்படுத்தும் செயல்முறை. இவை வெவ்வேறு ஆதரவு இடைமுகங்களைக் கொண்ட வெவ்வேறு உரிமையாளர்கள், பார்வையாளர் பயன்பாட்டுடன் பொருந்துவதைப் பயன்படுத்த வேண்டும். நீங்கள் ஒருங்கிணைக்க அனுமதிக்கப்பட்ட OpenVPN செயல்முறைக்கு, மேலாண்மை இடைமுகம் தற்போதைய நிலை, வரலாறு மற்றும் நேரடி அறிவிப்புகளைப் புகாரளிக்கிறது. உள்ளூர்மயமாக்கப்பட்ட GUI தலைப்பில் connected என்ற சொல்லைத் தேடுவதற்குப் பதிலாக ஆவணப்படுத்தப்பட்ட கட்டமைக்கப்பட்ட செய்திகளைப் பகுப்பாய்வு செய்யுங்கள்.
மேலாண்மை சேனல் ஒரு சிறப்பு கட்டுப்பாட்டு மேற்பரப்பு, எனவே புதிய கேட்பவரைத் திறக்காதீர்கள், GUI ஏற்கனவே வைத்திருக்கும் சேனலுக்காக அதனுடன் சண்டையிடாதீர்கள்.
தலைமுறை காவலர்கள் பழைய முடிவுகளை நிறுத்துகின்றன
ஒவ்வொரு கவனிப்பும் ஒரு குறிப்பிட்ட இணைப்பு முயற்சிக்கு உரியது. புதிய முயற்சி தொடங்கும்போது, சேனல் இழக்கும்போது, கிளையண்ட் வெளியேறுவதைப் புகாரளிக்கும்போது தலைமுறை கவுண்டரை அதிகரிக்கவும்.
A இணைப்பின் போது தொடங்கிய ஒரு ஆய்வைக் கவனியுங்கள். சுரங்கம் விழுகிறது, B இணைப்பு தொடங்குகிறது, பின்னர் A இன் தாமதமான HTTP வெற்றி வருகிறது. காவலர் இல்லாவிட்டால் அந்தப் பழைய முடிவு B இன்னும் அங்கீகரிக்கப்பட்டுக்கொண்டிருக்கும்போது காட்சியைப் பச்சையாக்குகிறது. ரத்து செய்வது வீணான வேலையைக் குறைக்கிறது, தலைமுறை சரிபார்ப்பே பழைய நிறைவு தற்போதைய நிலையாகாமல் தடுக்கிறது:
var generation = _generation;
var reachable = await ProbeAsync(token);
if (generation != _generation) return;
Publish(reachable);
UI அனுப்புதலையும் சுற்றி அதே விதியைப் பயன்படுத்துங்கள், ஏனெனில் மார்ஷல் செய்யப்பட்ட புதுப்பிப்பு தலைமுறை முன்னேறிய பிறகும் வரலாம்.
தொடக்கம் மற்றும் மறுஇணைப்பு ஒரே வாழ்க்கைச் சுழற்சி
முதல் இணைப்பு, மறுஇணைப்பு மற்றும் சேனல் இழப்பை ஒரே விதித்தொகுப்புடன் ஒரே வாழ்க்கைச் சுழற்சியாகக் கருதுங்கள்:
- இடைமுகம் அனுமதிக்கும் இடத்தில் ஒரே படியில் தற்போதைய நிலையைப் படித்து அறிவிப்புகளுக்கு குழுசேருங்கள்.
- ஒவ்வொரு கவனிப்பையும் இணைப்பு அடையாளம் மற்றும் தலைமுறையுடன் குறியிடுங்கள்.
- மறுஇணைப்பு, வெளியேறுதல் அல்லது இழந்த கவனிப்பு சேனலில் தயார்நிலையை ரத்து செய்யுங்கள்.
- உரிமையாளர் தொடக்கம் முடிந்ததாகப் புகாரளித்த பிறகு மட்டுமே தனிப்பட்ட வளத்தை ஆய்வு செய்யுங்கள்.
- தற்போதைய தலைமுறைக்கு இன்னும் சொந்தமான முடிவுகளை மட்டுமே வெளியிடுங்கள்.
இழந்த சேனல் என்பது தெரியாதது, துண்டிக்கப்பட்டது அல்ல. தெரியாதது எனப் புகாரளிப்பது நீங்கள் நிரூபிக்க முடியாத துண்டிப்பைப் புகாரளிப்பதை விட நேர்மையானது, மேலும் மறுமுயற்சி தர்க்கம் ஊகத்தின் அடிப்படையில் செயல்படுவதைத் தடுக்கிறது.
ஆதாரங்களைப் புகாரளியுங்கள், பூலியன் அல்ல
பெயரிடப்பட்ட அமர்வு நிலை மற்றும் வளத் தயார்நிலையை தனித்தனி மதிப்புகளாகத் திரும்பத் தருங்கள், ஒவ்வொன்றும் வயதுடன். ஏதாவது முடிவெடுக்க வேண்டிய நுகர்வோர் கடைசி வெற்றிகரமான ஆய்வு நாற்பது வினாடிகள் பழையது என்பதைக் காணலாம், இது புதிய தகவலிலிருந்து வேறுபட்ட தகவல்.
பொது IP தேடல் என்பது தனிப்பட்ட API தேவையான பாதையைப் பயன்படுத்தியதற்கான ஆதாரம் அல்ல, எனவே அதை அப்படியே முன்வைக்க வேண்டாம்.
செயல்படுத்தலைப் பார்வையாளருக்கு வெளியே வையுங்கள்
கால்பேக் நிகழ்வுக்குப் பிறகு இயங்குகிறது. நிகழ்வுக்கும் கையாளுபவருக்கும் இடையே இயந்திரத்திலிருந்து எந்தப் பொதியும் வெளியேறவில்லை என்று அது உறுதி செய்ய முடியாது. வடிவமைப்பிற்குத் தடுப்பு தேவைப்பட்டால், வலைப்பின்னல் கொள்கையே அதை வழங்க வேண்டும், பார்வையாளரின் வேலை தனது அழைப்பாளருக்கு ஆதாரங்களை விளக்குவது. இரண்டையும் கலப்பது பூலியன் வைத்திருப்பதால் தன்னை ஃபயர்வால் என நினைக்கும் குறியீட்டை உருவாக்குகிறது. செயல்படுத்தல் அடுக்கை சலிப்பானதாகவும் சோதனைக்குரியதாகவும் வையுங்கள், பார்வையாளர் வாசகராகவே இருக்கட்டும்.
பின்னர் UI கேள்வி எளிதாகிறது: தெரிந்ததை அதன் வயதுடன் காட்டுங்கள், தெரியாதபோது தெரியாது என்று சொல்லுங்கள்.