2009-11-28 5 views
7

मैंने कभी भी अपनी परियोजनाओं के लिए .app फ़ाइलों का उपयोग नहीं किया है। मैं समझता हूं कि application मॉड्यूल के माध्यम से एप्लिकेशन लोड करने के लिए आवश्यक हैं।Erlang में ".app" फ़ाइल के लिए लाभ?

क्या ऐसी फ़ाइलों का एक और उपयोग है?

उत्तर

11

* .app फ़ाइल के साथ * .app फ़ाइल बूट स्क्रिप्ट उत्पन्न करने के लिए उपयोग किया जाता है। Erlang शुरू होने पर स्वचालित रूप से मेरे एप्लिकेशन को लॉन्च करने के लिए बूट स्क्रिप्ट का उपयोग किया जाता है। एक एप्लिकेशन संसाधन फ़ाइल बताती है कि मेरे एप्लिकेशन को लॉन्च करने से पहले कौन से अनुप्रयोगों को चलाने की आवश्यकता है। उदाहरण के लिए, यदि मैं मैनेशिया का उपयोग करता हूं और इंगित करता हूं कि मेरे एप्लिकेशन के लिए .app फ़ाइल में, जब मैं बूट स्क्रिप्ट उत्पन्न करता हूं और अपना एप्लिकेशन शुरू करने के लिए इसका उपयोग करता हूं तो यह मेरे अपने आवेदन को शुरू करते समय मेरे लिए मैनेशिया शुरू कर देगा।

आप अन्य पैकेज प्रबंधकों बूट स्क्रिप्ट अपने आवेदन के स्टार्टअप जो OTP का आवेदन सेटअप में महत्वपूर्ण है में निर्भरता के प्रबंधन के लिए उपयोगी है के साथ निपटने/स्वचालित निर्भरता स्थापना मिल सकता है।

नोट: ओटीपी में अनुप्रयोग चलने वाली प्रक्रियाओं और/या कोड के बंडल को संदर्भित करते हैं। आवेदन कई तरीकों से अन्य अनुप्रयोगों पर निर्भर कर सकते हैं। या तो उन्हें कोड स्थापित करने की आवश्यकता होती है या उन्हें एप्लिकेशन को चलाने की आवश्यकता होती है।

+0

हालांकि मुझे ऐसी स्थिति का सामना नहीं हुआ है जहां अनुप्रयोगों के समूहों का क्रम महत्वपूर्ण है, मैं इसकी उपयोगिता की सराहना कर सकता हूं। धन्यवाद! – jldupont

8

उनका उपयोग रिलीज के निर्माण के लिए किया जाता है (बूट स्क्रिप्ट उत्पन्न करने के लिए * .rel के साथ)। मैं बस * .app फ़ाइल और एप्लिकेशन व्यवहार कॉलबैक से शुरू करने की अनुशंसा करता हूं। ओटीपी के साथ शुरू करने के लिए।

-module(foo). 
-export([start/0]). 
start() -> 
    [application:start(A) || A <- [sasl, inets, x, y, etc]]. 

एक सरल

$ erl -s foo 
  • के साथ अपने आवेदन के लिए चल रहे होने पर सभी आवेदनों आप निर्भर शुरू करने के लिए अपनी परियोजना के लिए इस्तेमाल किया जा रहा है: यह विकास में एक अच्छा मिठाई हाजिर करने के लिए है अन्य परियोजनाओं के लिए एक सेवा या ढांचे के रूप में, एक और लाभ यह है कि उन Erlang अनुप्रयोगों बारी बारी से आपके आवेदन पर निर्भर, या शामिल कर सकते हैं। एक एरलांग एप्लिकेशन वह इकाई है जिसमें सेवाएं और यहां तक ​​कि पुस्तकालय प्रदान करने के लिए (stdlib एक लाइब्रेरी है, नहीं "चलती भागों", बस लाइब्रेरी मॉड्यूल)।
  • एक एरलांग एप्लिकेशन होने के नाते आपको अपने आवेदन में कॉन्फ़िगरेशन पैरामीटर पास करने का एक आसान तरीका मिल जाता है। जब आप -mnesia dir '"/some/path"' को erl में पास करते हैं, तो इसे मैनेशिया एप्लिकेशन द्वारा application:get_env(mnesia, dir) के रूप में एक्सेस किया जाता है। यदि आप foo नामक एप्लिकेशन को परिभाषित करते हैं, तो आप -foo key 'some-Erlang-literal' को एआरएल में पास कर सकते हैं। * .app फ़ाइल में env अनुभाग में डिफ़ॉल्ट शामिल हो सकते हैं, * .rel फ़ाइल उन्हें ओवरराइड करती है, और कमांड लाइन उस पर ओवरराइड करती है।
  • * .app फ़ाइल में ऐसे अनुभाग हैं जहां आप मॉड्यूल सूचीबद्ध करते हैं और आपके एप्लिकेशन द्वारा पंजीकृत प्रक्रियाओं को सूचीबद्ध करते हैं। इसका उपयोग यह जांचने के लिए किया जाता है कि अनुप्रयोगों के बीच कोई टक्कर नहीं है।

Erlang अनुप्रयोगों है कि मैं अच्छी तरह से पता नहीं है में से कुछ अतिरिक्त सुविधाओं:

  • प्रारंभ चरणों। उन अनुप्रयोगों के लिए प्रयुक्त होता है जिनमें जटिल स्टार्ट-अप आवश्यकताएं होती हैं, जैसे थोड़ी देर के लिए "आंशिक रूप से चल रही" होती है।
  • वितरित अनुप्रयोग। यह निर्धारित करने के लिए प्रयुक्त होता है कि क्लस्टर में एप्लिकेशन कहां चलाना चाहिए।
  • अधिग्रहण। वितरित अनुप्रयोग से मशीन को रिलीज़ करने के लिए प्रयुक्त होता है, जैसे कि इसे रखरखाव या उन्नयन की आवश्यकता है।

आखिरकार आप अपने आवेदन सेट को अधिक संरचित तरीके से शुरू करना शुरू कर देंगे, और यही वह समय है जब पूरी रिलीज/बूट-स्क्रिप्ट अधिक समझने योग्य हो जाएगी। या इसके विपरीत, आपको लगता है कि यह आपके लिए विशिष्ट आवश्यकताओं के लिए अधिक है। बस एक सरल * .app और एप्लिकेशन व्यवहार कॉलबैक के साथ एक मॉड्यूल के साथ शुरू करें। आप वापस देखो नहीं।

+0

आपके योगदान के लिए धन्यवाद। मुझे डेबियन रिपोजिटरी (यानी निर्भरताओं को संभाला, स्थापना/अपग्रेड इत्यादि) का उपयोग करके तैनाती के लिए अपने अनुप्रयोगों को पैकेज करने के लिए उपयोग किया जाता है। इस संदर्भ में, ओटीपी/.app मुझे क्या प्राप्त करता है? – jldupont

+0

यदि आपकी .app फ़ाइल सेट अप की गई है तो उपरोक्त कोड अनिवार्य है। बस आवेदन करें: शुरू करें (my_app) आपके सभी सिक्योरिटीज और फिर अपना ऐप शुरू करने के लिए आवश्यक है। यदि आपने बूट स्क्रिप्ट जेनरेट की है तो आप erlang प्रारंभ करते समय उपरोक्त स्वचालित रूप से आपके लिए हो सकते हैं। –

+0

लाभों में जोड़ना: .app फ़ाइलें डुप्लिकेट मॉड्यूल या अनुप्रयोगों के भीतर प्रक्रिया नामों का पता लगाने के लिए बूट स्क्रिप्ट बिल्डिंग को सक्षम करती हैं। इसके अलावा यह वीएम को सभी मॉड्यूल को शुरू करने में सक्षम बनाता है, ताकि आप एम्बेडेड मोड का उपयोग कर सकें। आप अनुप्रयोगों के सही संस्करणों को भी लागू कर सकते हैं, आदि ... – Zed