मेरमेड.जीएस सी4 डायग्राम सिंटैक्स और आर्किटेक्चर गाइड

एक सी4 डायग्राम एक मानकीकृत आर्किटेक्चरल विज़ुअलाइज़ेशन विधि है जिसका उपयोग सॉफ्टवेयर प्रणालियों को संरचनात्मक अबस्ट्रैक्शन के बहुत स्तरों पर मॉडल करने के लिए किया जाता है। मेरमेड.जीएस में निर्मित, यहसी4इंजन सी4 मॉडल के चार मुख्य स्तरों का अनुसरण करता है:संदर्भ (मैक्रो पारिस्थितिकी),कंटेनर (एप्लिकेशन, सेवाएं और डेटाबेस),घटक (आंतरिक संरचनात्मक मॉड्यूल), औरगतिशील बातचीत। यह उपकरण आपके टेक्स्ट घोषणाओं के आधार पर स्थिर, प्रस्तुति-तैयार आर्किटेक्चरल ब्लॉक्स लागू करके कस्टम सीएसएस स्टाइलिंग की जटिलता को दूर करता है।

सी4 डायग्राम अबस्ट्रैक्शन और कीवर्ड्स को समझना

मेरमेड आपकी प्रणाली लेआउट की विस्तार की आवश्यकता के आधार पर चार विशेषज्ञ डायग्राम प्रारंभीक हेडर समर्थित करता है:

  • सी4 संदर्भ: बड़े चित्र के दृष्टिकोण पर केंद्रित है, जो उपयोगकर्ताओं, मुख्य सॉफ्टवेयर पारिस्थितिकी और उच्च स्तर के बाहरी निर्भरताओं को दिखाता है।
  • सी4 कंटेनर: एक स्तर तक जूम करता है ताकि स्वतंत्र एप्लिकेशन, फ्रंटएंड इंटरफेस, माइक्रोसर्विसेज, डेटाबेस स्टोरेज प्रणालियां और कतारों को तोड़ा जा सके।
  • सी4 घटक: कंटेनर के अंदर गहराई से जाता है ताकि कंट्रोलर्स, सेवाएं और रिपॉजिटरीज़ जैसे आंतरिक कोड-स्तर के मॉड्यूल को प्रदर्शित किया जा सके।
  • सी4 डायनामिक: रनटाइम डेटा बातचीत को ट्रैक करने या इंफ्रास्ट्रक्चर ब्लॉक्स के बीच चरण-दर-चरण लेनदेन अनुक्रमण पर केंद्रित है।

बेसिक सिंटैक्स संरचना

प्रत्येक सी4 डायग्राम अपने विशिष्ट स्तर हेडर से शुरू होता है, जिसके बाद एक वैकल्पिक शीर्षक कथन और कॉमा-सेपरेटेड मैक्रो घटक होते हैं। कोष्ठक में पैरामीटर होते हैं, जहां स्ट्रिंग्स डबल कोटेशन में बाउंड होती हैं।

सी4 संदर्भ
  शीर्षक "इंटरनेट कोर के लिए सिस्टम संदर्भ ब्लूप्रिंट"
  व्यक्ति(ग्राहक, "बैंकिंग ग्राहक", "व्यक्ति खातों वाला बैंक का ग्राहक।")
  प्रणाली(बैंकिंग_प्रणाली, "इंटरनेट बैंकिंग प्रणाली", "ग्राहकों को खाता जानकारी देखने की अनुमति देता है।")
  संबंध(ग्राहक, बैंकिंग_प्रणाली, "उपयोग करता है", "एचटीटीपीएस")

पूर्ण सी4 तत्व मैक्रो टैक्सोनॉमी

मेरमेड सी4 लाइब्रेरी सभी अबस्ट्रैक्शन स्तरों पर आंतरिक घटकों, बाहरी प्रणालियों और डेटाबेस लेयर के बीच स्पष्ट अंतर रखने के लिए विस्तृत सेट विशेषज्ञ मैक्रो प्रदान करती है।

1. व्यक्ति और उपयोगकर्ता मैक्रो

  • व्यक्ति(अलियास, लेबल, [विवरण], [स्प्राइट], [टैग]): आंतरिक मानव उपयोगकर्ता या हितधारक का मॉडल बनाता है।
  • व्यक्ति_बाहरी(अलियास, लेबल, [विवरण], [स्प्राइट], [टैग]): आपकी मुख्य संगठनात्मक सीमा के बाहर एक बाहरी उपयोगकर्ता (जैसे तृतीय पक्ष के विक्रेता या लेखापरीक्षक) का मॉडल बनाता है।

2. प्रणाली और सॉफ्टवेयर पारिस्थितिकी तंत्र मैक्रो

  • प्रणाली(अलियास, लेबल, [विवरण], [स्प्राइट], [टैग]): आपके सीधे प्रबंधन में आंतरिक, संबंधित सॉफ्टवेयर प्रणाली समूह का प्रतिनिधित्व करता है।
  • प्रणाली_बाहरी(अलियास, लेबल, [विवरण], [स्प्राइट], [टैग]): एक महत्वपूर्ण बाहरी सॉफ्टवेयर प्रणाली का मॉडल बनाता है जिसका प्रबंधन तृतीय पक्ष द्वारा किया जाता है (जैसे पहचान प्रदाता, मुख्य बैंकिंग लेजर)।
  • प्रणाली_डेटाबेस(अलियास, लेबल, [विवरण], [स्प्राइट], [टैग]): एक सिलेंडर आकार के प्रणाली-स्तरीय डेटा भंडार बॉक्स को दर्शाता है।
  • प्रणाली_डेटाबेस_बाहरी(अलियास, लेबल, [विवरण], [स्प्राइट], [टैग]): एक बाहरी, तृतीय पक्ष डेटाबेस स्तर को दर्शाता है।

3. कंटेनर स्तर मैक्रो (C4कंटेनर स्तर)

  • कंटेनर(अलियास, लेबल, प्रौद्योगिकी, [विवरण], [स्प्राइट], [टैग]): अलग चलने वाले एप्लिकेशन, API सर्वर या फ्रंटएंड इंटरफेस का मॉडल बनाता है।
  • कंटेनर_डेटाबेस(अलियास, लेबल, प्रौद्योगिकी, [विवरण], [स्प्राइट], [टैग]): कंटेनर-स्तरीय संबंधित या असंबंधित डेटाबेस इंजन वाले लेप को दर्शाता है।
  • कंटेनर_बाहरी(अलियास, लेबल, प्रौद्योगिकी, [विवरण], [स्प्राइट], [टैग]): एक बाहरी क्लाउड कंटेनर या एप्लिकेशन सेवा का प्रतिनिधित्व करता है।
  • कंटेनर_डेटाबेस_बाहरी(अलियास, लेबल, प्रौद्योगिकी, [विवरण], [स्प्राइट], [टैग]): एक बाहरी, प्रबंधित क्लाउड डेटाबेस स्टोरेज स्तर का प्रतिनिधित्व करता है।

4. घटक स्तर मैक्रो (C4घटक स्तर)

  • घटक(अलियास, लेबल, प्रौद्योगिकी, [विवरण], [स्प्राइट], [टैग]): आंतरिक कोड-स्तरीय मॉड्यूल, स्तर या क्लास कंट्रोलर का नक्शा बनाता है।
  • घटक_डेटाबेस(अलियास, लेबल, प्रौद्योगिकी, [विवरण], [स्प्राइट], [टैग]): आंतरिक माइक्रो-घटक स्टोरेज या निम्न स्तरीय फाइल कैशिंग प्रणाली का मॉडल बनाता है।

सीमा कंटेनर और संरचनात्मक लपेटन

सुरक्षा सीमाओं, कॉर्पोरेट फायरवॉल या तार्किक एप्लिकेशन सीमाओं को दर्शाने के लिए, मेरमाइड तीन निर्दिष्ट ब्रैकेट-घिरे कंटेनर लपेटन प्रदान करता है। अंदर निर्मित तत्व दृश्य रूप से एक साथ समूहित होते हैं।

  • कॉर्पोरेट_सीमा(एलियास, लेबल) { ... }: समग्र कॉर्पोरेट या कंपनी इंफ्रास्ट्रक्चर परिधि का प्रतिनिधित्व करने वाली एक व्यापक दृश्य सीमा के भीतर उच्च स्तरीय प्रणालियों को घेरता है।
  • प्रणाली_सीमा(एलियास, लेबल) { ... }: एक समेकित सॉफ्टवेयर इकोसिस्टम बॉक्स के भीतर निकटता से संबंधित एप्लिकेशन कंटेनर या माइक्रोसर्विसेज को समूहित करता है।
  • कंटेनर_सीमा(एलियास, लेबल) { ... }: एकल एप्लिकेशन मॉड्यूल कंटेक्स्ट परत के भीतर कोड-स्तरीय घटकों को अलग करता है।

उन्नत संबंध दिशात्मक संचालक

C4 आरेखों में ब्लॉक्स को जोड़ने पर निर्भर करता हैसंबंधमैक्रो या उनके स्पष्ट रूप से निर्दिष्ट विकल्पों पर। रॉ फ्लोचार्ट लाइन्स के माध्यम से पारगमन करने के बजाय, आप तकनीकी वेक्टर्स को तार्किक ब्लॉक्स के भीतर सीधे घोषित करके संबंधों को अर्थपूर्ण रूप से ट्रैक करते हैं।

संबंध वाक्य विन्यास टोकन दृश्य तीर दिशा उपयोग अनुरूपता संदर्भ
संबंध(स्रोत, लक्ष्य, लेबल, [तकनीक]) गतिशील / स्वचालित डिफ़ॉल्ट संबंध। लेआउट एल्गोरिदम को सर्वोत्तम लाइन पथ निर्धारित करने दें।
द्विदिश संबंध(स्रोत, लक्ष्य, लेबल, [तकनीक]) द्विदिशीय (<–>) दो-दिशा बातचीत हैंडशेक, डुप्लेक्स प्रोटोकॉल या सिंक्रोनाइजेशन प्रक्रियाओं को इंगित करता है।
संबंध_पीछे(स्रोत, लक्ष्य, लेबल, [तकनीक]) उलटा तीर शीर्ष (<–) कोड तर्क में संबंध को आगे खींचता है लेकिन दृश्य दिखाई वाले तीर को पीछे की ओर उलट देता है।
संबंध_पड़ोसी(स्रोत, लक्ष्य, लेबल, [तकनीक]) क्षैतिज लेआउट प्राथमिकता लक्ष्य नोड को समान क्षैतिज पंक्ति में स्रोत नोड के सीधे बगल में रहने के लिए मजबूर करता है।
संबंध_नीचे(स्रोत, लक्ष्य, लेबल, [तकनीक]) / संबंध_नीचे(...) सीधा नीचे की ओर (v) ऊर्ध्वाधर डेटा प्रवाह को डेटाबेस परतों या बाद के बैकग्राउंड प्रक्रियाओं तक नीचे जाने के लिए मजबूर करता है।
Rel_Up(from, to, label, [tech]) / Rel_U(...) सीधे ऊपर की ओर (^) संबंध ट्रैक को क्लाइंट यूआई घटकों तक सीधे ऊपर जाने के लिए बाध्य करता है।
Rel_Left(from, to, label, [tech]) / Rel_L(...) सीधे बाईं ओर (<-) पथों को कैनवास तत्व के बाईं ओर क्षैतिज रूप से रास्ता देता है।
Rel_Right(from, to, label, [tech]) / Rel_R(...) सीधे दाईं ओर (->) पथों को कैनवास तत्व के दाईं ओर क्षैतिज रूप से रास्ता देता है।

कस्टम डायनामिक स्टाइलिंग और टैगिंग (C4 शेप ओवरराइड्स)

पुराने एप्लिकेशन को चिह्नित करने, प्रीमियम सिस्टम को उभारने या सुरक्षित डेटा फ्लो को हाइलाइट करने के लिए, आप तत्व टैग इंजन का उपयोग करके कस्टम स्टाइल बना सकते हैं। आप अपने दस्तावेज के शीर्ष पर एक टैग प्रॉपर्टी मैट्रिक्स परिभाषित करते हैं और फिर उस टैग लेबल को अपने तत्व परिभाषाओं पर जोड़ते हैं।

स्टाइलिंग संशोधन कीवर्ड:

  • UpdateElementStyle(elementName, bgColor, fontColor, [borderColor], [shadowing]): स्पष्ट तत्व बॉक्स के डिफ़ॉल्ट बैकग्राउंड पैलेट के सीधे ओवरराइड।
  • UpdateRelStyle(from, to, lineColor, textColor): सीधे एक कनेक्शन रूट को लाइन पथ या कनेक्शन विवरण को रंग बदलने के लिए टारगेट करता है।
C4Context
  शीर्षक "कस्टम रंग-कोडेड ग्लोबल आर्किटेक्चर मैप"
  
  सिस्टम(लीगेसी_api, "पुराना बिलिंग कोर", "सब्सक्रिप्शन रिन्यूअल प्रोसेस करता है।")
  सिस्टम(मॉडर्न_पोर्टल, "ग्राहक डैशबोर्ड पोर्टल", "आधुनिक उपयोगकर्ता वेब व्यू इंजन।")
  
  %% सीधे रंग कस्टमाइजेशन
  UpdateElementStyle(लीगेसी_api, "#d9534f", "#ffffff", "#c9302c")
  UpdateElementStyle(मॉडर्न_पोर्टल, "#5cb85c", "#ffffff", "#4cae4c")


वास्तविक दुनिया का ब्लूप्रिंट: एंटरप्राइज ई-कॉमर्स सिस्टम बाउंड्री कंटेनर मैप

यह व्यापक, बहु-स्तरीय कंटेनर ब्लूप्रिंट ऑनलाइन ई-कॉमर्स इकोसिस्टम का अनुसरण करता है। इसमें एक के उपयोग से आंतरिक कोर सर्वर को अलग किया जाता हैसिस्टम_बाउंड्री ब्लॉक कंटेनर, बाहरी क्लाउड नोटिफिकेशन रिले के माध्यम से कार्यान्वित करता हैसिस्टम_एक्सट, आंतरिक संबंधात्मक डेटाबेस भंडारण के साथ-साथ बाहरी ट्रैकिंग माइक्रोसर्विसेज को मैप करता है, और स्पष्ट तकनीकी स्टैक पैरामीटर्स का उपयोग करके संचार पाइपलाइन्स को निर्धारित करता है।

C4Container
  शीर्षक "एंटरप्राइज ई-कॉमर्स प्लेटफॉर्म के लिए कंटेनर ब्लूप्रिंट"

  व्यक्ति(ग्राहक, "ऑनलाइन शॉपर", "कैटलॉग आइटम को देखता है और उत्पादों को अपने डिजिटल कार्ट में जोड़ता है।")
  सिस्टम_एक्सट(भुगतान_गेटवे, "स्ट्राइप API सेवा", "तृतीय पक्ष क्रेडिट कार्ड वॉल्ट और प्रोसेसिंग इंजन।")

  सिस्टम_सीमा(ईकॉमर्स_स्कोप, "ई-कॉमर्स कोर परिधि") {
    कंटेनर(फ्रंटएंड_एप्लिकेशन, "स्टोरफ्रंट वेब एप्लिकेशन", "नेक्स्ट.जे.एस., रिएक्ट", "स्थिर संपत्तियां डिलीवर करता है और उपयोगकर्ता कार्ट सेशन को हैंडल करता है।")
    कंटेनर(चेकआउट_सर्विस, "चेकआउट माइक्रोसर्विस", "नोड.जे.एस., एक्सप्रेस", "शॉपिंग कार्ट वर्कफ्लो को प्रोसेस करता है और कर की गणना करता है।")
    कंटेनरडीबी(ऑर्डर_डीबी, "ऑर्डर लेजर डेटाबेस", "पोस्टग्रेसक्यूएल", "इतिहास संबंधी लेनदेन लाइनें और सुरक्षित लेजर रिकॉर्ड स्टोर करता है।")
  }

  %% आर्किटेक्चरल इंटरैक्शन पाथ्स
  संबंध(ग्राहक, फ्रंटएंड_एप्लिकेशन, "उत्पादों को देखता है और आदेश देता है", "HTTPS/ब्राउज़र")
  संबंध_नीचे(फ्रंटएंड_एप्लिकेशन, चेकआउट_सर्विस, "शॉपिंग पेलोड लेनदेन को भेजता है", "JSON/REST API")
  
  संबंध_दाएं(चेकआउट_सर्विस, ऑर्डर_डीबी, "लेनदेन स्थितियों को अंदर स्थायी रूप से संग्रहीत करता है", "SQL/JDBC कनेक्शन")
  संबंध_बाएं(चेकआउट_सर्विस, भुगतान_गेटवे, "टोकनाइज्ड चार्ज कॉल को अधिकृत करता है", "सुरक्षित TLS/HTTPS API")


सामान्य सिंटैक्स गलतियां और सिस्टम सीमाएं

सॉफ्टवेयर फ्रेमवर्क के लिए साफ C4 मानचित्र तैयार करते समय, आरेख टूटने से बचने के लिए इन निष्पादन पैरामीटर्स पर ध्यान दें:

  • कॉमा सेपरेटर फॉर्मेटिंग: लगभग हर अन्य मेरमाइड स्कीमा के विपरीत, C4 मैक्रो में पैरामीटर्स के बीच सख्त कॉमा की आवश्यकता होती है:व्यक्ति(आईडी, "लेबल", "विवरण"). अलग करने वाली कॉमा भूल जाने से लेआउट बिल्डर पूरी तरह से गिर जाएगा।
  • आरक्षित लेबल कोटेशन्स: मैक्रो के अंदर डिस्प्ले फील्ड्स, टेक टैग्स और विवरण ब्लॉक्स को स्पष्ट डबल कोटेशन में लपेटना *आवश्यक* है। कोटेशन के बिना रॉ टेक्स्ट को फील्ड में डालने से टूटने वाली पार्सिंग त्रुटियां आती हैं।
  • सीमा नेस्टिंग क्रम: जब किसी के अंदर तत्वों को लपेटते हैंसिस्टम_सीमा याएंटरप्राइज_सीमा ब्लॉक में, आपको मानक कर्ली कोष्ठक का उपयोग करके अपने कार्यक्षेत्र की सामग्री को स्पष्ट रूप से साफ करना होगा{ }. सीमा के कोष्ठक को खुला छोड़ना या उन्हें गलत तरीके से मैच करना रेंडरिंग लेआउट को तोड़ देता है।
  • डायनामिक एलियास इनिशियलाइज़ेशन: आप संबंधों (संबंध) किसी एलियास पहचानकर्ता पर नहीं बना सकते जिसे ऊपर के तत्व मैक्रो ब्लॉक द्वारा स्पष्ट रूप से इनिशियलाइज़ नहीं किया गया है। अपने घोषणा प्रवाह को धीरे-धीरे ऊपर से नीचे तक बनाए रखें।
Scroll to Top