.NET दुनिया से जावास्क्रिप्ट दुनिया के लिए पुल

मैं एक दिलचस्प खोज साझा करना चाहता हूं - Bridge.net । संक्षेप में, यह एक ढांचा है जो आपको जावास्क्रिप्ट में सी # कोड का अनुवाद करने की अनुमति देता है। विकास टीम को संचालित करने वाला विचार बहुत सरल और सीधा है - तर्क को यथासंभव यथासंभव अनुवाद करें। क्या प्रसन्नता है, यदि आप इन भाषाओं के सभी अंतरों और बारीकियों को याद करते हैं।



शायद हर कोई अपना व्यक्तिगत उपयोग पा सकता है, लेकिन मैं उन क्षणों को नोट करना चाहूंगा जिन्होंने मुझे व्यक्तिगत रूप से आकर्षित किया:

  • मोबाइल विकास के लिए आवेदन की संभावना। जावास्क्रिप्ट सभी प्लेटफार्मों पर काम करता है
  • वेब के लिए फिटमेंट। खासकर यदि आपको एक पुरानी परियोजना को फिर से लिखने की आवश्यकता है, उदाहरण के लिए, एसपीए आवेदन के रूप में
  • सर्वर और क्लाइंट पक्ष पर एक साथ C # कोड का पुन: उपयोग करने की क्षमता
  • प्रोजेक्ट निर्माण के दौरान अनुवाद
  • परियोजना सक्रिय विकास के तहत है, डेवलपर्स से पर्याप्त समर्थन है
  • Bridge.net एक OpenSource परियोजना है जिसमें वाणिज्यिक उपयोग के लिए लाइसेंस ( Apache 2.0 लाइसेंस ) है

ब्रिज का उपयोग करने के प्रदर्शन के रूप में, मैं एक वेब एप्लिकेशन में क्षेत्र सत्यापन कार्य का समाधान साझा करना चाहता हूं। मुझे उम्मीद है कि उदाहरण चित्रमय होगा, क्योंकि इसी तरह की समस्या अक्सर हो सकती है। सादगी के लिए मैं ASP.NET वेब फॉर्म का उपयोग करूंगा।

इसलिए, हमारे पास एक फ़ील्ड है जिसमें उपयोगकर्ता को कार के पंजीकरण नंबर को दर्ज करना होगा और बटन पर क्लिक करना होगा। हमारे मामले में, बटन इनपुट की शुद्धता की जांच करेगा (वास्तविक जीवन में, हम वापस लौट सकते हैं, उदाहरण के लिए, पंजीकृत जुर्माना)।

इनपुट सत्यापन सर्वर तर्क
protected void submitButton_OnClick(object sender, EventArgs e) { var isCorrect = IsCorrectPlateNumber(plateTextBox.Text); plateTextBox.BackColor = isCorrect ? Color.LightGreen : Color.Coral; } private static bool IsCorrectPlateNumber(string plateNumber) { var success = false; if (!string.IsNullOrWhiteSpace(plateNumber)) { plateNumber = plateNumber.Trim(); if (plateNumber.Length >= 8 || plateNumber.Length <= 9) { var rgx = new Regex(@"^[]\d{3}[]{2}\d{2,3}$"); success = rgx.IsMatch(plateNumber); } } return success; } 




ठीक है, अब हम सर्वर पर लोड को कम करना चाहते हैं और क्लाइंट साइड पर फ़ील्ड सत्यापन करना चाहते हैं। कई विकल्प हैं:

1) ग्राहक सत्यापन को फिर से लिखें , जो सबसे सरल परिदृश्यों की जांच करेगा, इसलिए बोलने के लिए, "मूर्ख के खिलाफ सुरक्षा।" बुनियादी जांच अभी भी सर्वर साइड पर की जाएगी।

सरल ग्राहक सत्यापन
 .   ( X 000 XX 000):<br/> <asp:TextBox ID="plateTextBox" runat="server"/> <asp:Button ID="submitButton" runat="server" Text="" OnClientClick="return validatePlate();" OnClick="submitButton_OnClick"/> 

 function validatePlate() { var value = document.getElementById('<%=plateTextBox.ClientID%>').value; if (value && value.length) { return true; } alert(" .  !"); return false; } 


2) पोर्टिंग सर्वर सत्यापन को जितना संभव हो सके, जिससे कोड को दोहराया जाए। लाभ स्पष्ट हैं - सर्वर और क्लाइंट पर सत्यापन के परिणामों के बीच न्यूनतम विसंगति। नुकसान भी हैं - सर्वर तर्क को दोहराते हुए, मैं इसे सक्रिय स्थिति में भी बनाए रखना चाहूंगा, जो सिरदर्द को जोड़ सकता है। मैंने कोड को मैन्युअल रूप से दोबारा नहीं लिखा है, यह काफी समझ में आता है। आइए देखें कि ब्रिज हमारी मदद कैसे करेगा। ऐसा करने के लिए, ऑनलाइन संपादक का उपयोग करें। अनुवादित कोड इस तरह दिखेगा:

पूर्ण ग्राहक सत्यापन
 (function (globals) { "use strict"; Bridge.define('Demo.ServerLogic', { statics: { isCorrectPlateNumber: function (plateNumber) { var success = false; if (!Bridge.String.isNullOrWhiteSpace(plateNumber)) { plateNumber = plateNumber.trim(); if (plateNumber.length >= 8 || plateNumber.length <= 9) { var rgx = new Bridge.Text.RegularExpressions.Regex("constructor", "^[]\\d{3}[]{2}\\d{2,3}$"); success = rgx.isMatch(plateNumber); } } return success; } } }); Bridge.init(); })(this); 

यह हमारे लिए ब्रिज.जेएस फ़ाइल (सादगी के लिए, मैंने ऑनलाइन संपादक से स्क्रिप्ट फ़ाइल ले लिया) को शामिल करने के लिए बनी हुई है, साथ ही साथ हमारे प्रारंभिक सत्यापन फ़ंक्शन को थोड़ा संशोधित करता है:

 function validatePlate() { var value = document.getElementById('<%=plateTextBox.ClientID%>').value; if (Demo.ServerLogic.isCorrectPlateNumber(value)) { return true; } alert(" .  !"); return false; } 


३) तर्क का पुनः प्रयोग। यदि हम इसे अद्यतित रखना चाहते हैं, तो हम हर बार परियोजना के निर्माण के लिए सत्यापन का अनुवाद C # से जावास्क्रिप्ट तक कर सकते हैं। इस प्रकार, तर्क वास्तव में पुन: प्रयोज्य हो जाता है, प्रोग्रामर अपना समय बर्बाद नहीं करते हैं, एप्लिकेशन अधिक स्थिर हो जाता है, और उपयोगकर्ता और भी खुश हो जाते हैं! ऐसा करने के लिए, आपको कई चरण करने होंगे:

एक परियोजना में एंबेडिंग ब्रिज
1. एक मौजूदा समाधान में एक परियोजना WebApplication1.Bridge बनाएँ

2. इसमें Nuget पैकेज इंस्टॉल करें। इस पैकेज को एक अलग प्रोजेक्ट में स्थापित करें, जैसा कि स्थापना के दौरान, परस्पर विरोधी संदर्भ हटा दिए जाते हैं।



3. WebApplication1 प्रोजेक्ट में, हम तर्क को एक अलग फाइल / क्लास में रखेंगे। तदनुसार, अब इस वर्ग का उपयोग बटन क्लिक इवेंट हैंडलर में किया जाएगा (परिवर्तन स्पष्ट हैं, मैं कोड प्रदान नहीं करता हूं)।

ServerLogic.cs
 using System.Text.RegularExpressions; namespace WebApplication1 { public class ServerLogic { public static bool IsCorrectPlateNumber(string plateNumber) { var success = false; if (!string.IsNullOrWhiteSpace(plateNumber)) { plateNumber = plateNumber.Trim(); if (plateNumber.Length >= 8 || plateNumber.Length <= 9) { var rgx = new Regex(@"^[]\d{3}[]{2}\d{2,3}$"); success = rgx.IsMatch(plateNumber); } } return success; } } } 


4. एक लिंक के रूप में WebApplication1.Bridge परियोजना के लिए बनाई गई फ़ाइल जोड़ें

5. WebApplication1.Bridge परियोजना के लिए आउटपुट निर्देशिका बदलें। ऐसा करने के लिए, Bridge.json फ़ाइल कॉन्फ़िगर करें:

 "output": "../WebApplication1/Scripts/Bridge" 

6. सोल्यूशन एक्सप्लोरर में असेंबली के बाद, सभी फाइलें दिखाएँ पर क्लिक करें और हम उत्पन्न स्क्रिप्ट webApplication1.js देख सकते हैं

7. आवश्यक लिंक जोड़ें और Demo.aspx पेज पर लिपियों को अपडेट करें:

डेमो .aspx स्क्रिप्ट
 <script src="Scripts/Bridge/bridge.js" type="text/javascript"></script> <script src="Scripts/Bridge/webApplication1.js" type="text/javascript"></script> <script type="text/javascript"> function validatePlate() { var value = document.getElementById('<%=plateTextBox.ClientID%>').value; if (WebApplication1.ServerLogic.isCorrectPlateNumber(value)) { return true; } alert(" .  !"); return false; } </script> 


8. यह बात है। आप एक प्रोजेक्ट बना सकते हैं और चला सकते हैं। अब, सत्यापन तर्क में कोई भी परिवर्तन स्वचालित रूप से सर्वर-साइड और क्लाइंट-साइड चेक दोनों के लिए काम करेगा।

इसलिए, एक सरल उदाहरण के साथ, हमने देखा कि कैसे आप आसानी से C # कोड का पुनः उपयोग कर सकते हैं, तब भी जब आपको जावास्क्रिप्ट का उपयोग करने की आवश्यकता हो। और क्या महान मूल्य हो सकते हैं - वेब एप्लिकेशन के विकास और निर्माण की प्रक्रिया में यह दृष्टिकोण कैसे अंतर्निहित है। हालांकि, यह ब्रिज.नेट का एकमात्र लाभ नहीं है। मैं उसे क्रॉस-प्लेटफॉर्म मोबाइल विकास में एक निर्विवाद सहायक के रूप में देखता हूं, खासकर उन लोगों के लिए जो बिना .NET के अपने जीवन की कल्पना नहीं कर सकते, लेकिन अगली बार उस पर अधिक!

Source: https://habr.com/ru/post/hi450990/


All Articles