2016-09-16 11 views
10

मैं कोड को डुप्लिकेट न करने के लिए अपने Azure फ़ंक्शंस पर कुछ साझा कक्षाओं का उपयोग करना चाहता हूं।Azure Functions - साझा कक्षाएं

मैं एक खाली सी # समारोह बना सकते हैं और समारोह के अंदर कक्षाएं बनाने और उसके बाद के साथ अन्य कार्यों के लिए आयात करने के लिए कोशिश की है:

#r "../Shared/Class.cs"

उत्तर

18

पहले, जड़ में एक फ़ोल्डर के अंदर अपने साझा कोड डाल आपकी फ़ंक्शन ऐप निर्देशिका (जैसे "साझा")। मान लें कि मैंने उस फ़ोल्डर में एक साझा Message.csx वर्ग रखा है (उदा। पूर्ण पथ D:\home\site\wwwroot\Shared\Message.csx)।

#load "..\Shared\Message.csx" 

using System; 
using Microsoft.Azure.WebJobs.Host; 

public static void Run(Message message, TraceWriter log) 
{ 
    log.Info($"C# Queue trigger function processed message: {message.Id}"); 
} 

अधिक जानकारी के लिए मदद पृष्ठ here देखें:

अपने कार्य में इस #load आदेश का उपयोग शामिल करने के लिए। डिफ़ॉल्ट रूप से, उस निर्देशिका में फ़ाइलों को परिवर्तनों के लिए ट्रैक नहीं किया जाएगा। यदि आप यह सुनिश्चित करना चाहते हैं कि जब उस निर्देशिका में फ़ाइलें आपके फ़ंक्शंस को बदलती हैं तो वे बदलाव उठाएंगे और फिर से संकलित किए जाएंगे, आप host.json में watchDirectories सूची में अपनी "साझा" निर्देशिका जोड़ सकते हैं। उदा .:

{ 
    "watchDirectories": [ "Shared" ] 
} 
+0

मैं अपने wwwroot फ़ोल्डर पर साझा फ़ोल्डर कैसे बना सकता हूं? मेरे पास एफ़टीपी एक्सेस है लेकिन केवल पढ़ने के लिए मोड के साथ। –

+1

अपने फ़ंक्शन ऐप की फ़ाइल सिस्टम तक पहुंचने के लिए ** Kudu ** का उपयोग करने के लिए [इस सहायता पृष्ठ] (https://azure.microsoft.com/en-us/documentation/articles/functions-reference) पर निर्देशों का पालन करें। आप वहां वर्णित ऐप सेवा संपादक का भी उपयोग कर सकते हैं। – mathewc

+0

काम करता है! धन्यवाद! –

2

Azure कार्य के भीतर परिवर्तन की दर के कारण, इस नहीं रह गया है सी # कार्यों के लिए दृष्टिकोण की सिफारिश की (Azure Functions Tools Roadmap देखें)। विज़ुअल स्टूडियो में सी # प्रोजेक्ट की संरचना के लिए सबसे आधुनिक और कुशल पैटर्न के चित्रण के लिए निम्न ब्लॉग पोस्ट का संदर्भ लें, और साझा डीएलएल के सभी फायदे जो सामान्य रूप से सी # में करते हैं, प्राप्त करें।

https://blogs.msdn.microsoft.com/appserviceteam/2017/03/16/publishing-a-net-class-library-as-a-function-app/

https://github.com/devkimchi/Precompiled-Azure-Functions-Revisited

+0

लिंक किया गया ब्लॉग केवल एक ही विकल्प के रूप में एक .NET क्लास लाइब्रेरी को फ़ंक्शन एप के रूप में प्रकाशित करने का वर्णन करता है "उन ग्राहकों के लिए जो महसूस करते हैं कि कक्षा पुस्तकालय उनके आवेदन के लिए बेहतर फिट हैं "हालांकि उपकरण अभी तक तैयार नहीं हैं और" आप आज अपने प्रोजेक्ट में कुछ मैन्युअल tweaks के साथ precompiled कार्यों का प्रयास कर सकते हैं "। लिंक साझा करने के लिए धन्यवाद, लेकिन मैं आपकी शर्त के बिना असहमत हूं "संरचना के लिए सबसे आधुनिक और कुशल पैटर्न एक सी # परियोजना" –

+0

दरअसल, मैं इसे उचित संदर्भ देकर इसे अधिक सावधानीपूर्वक शब्दों में कह सकता था। इसलिए, अधिक विशेष रूप से, पोर्टल में सीएसएक्स स्क्रिप्ट का उपयोग करके एक एज़ूर फ़ंक्शन ऐप में एकाधिक साझा कक्षाओं और न्यूज निर्भरताओं का उपयोग करना जल्द ही एक चुनौती बन जाता है क्योंकि फ़ंक्शन ऐप अधिक जटिल हो जाता है। ओपी सिर्फ इन चुनौतियों से निपटने के लिए शुरू हो रहा था। नतीजतन, कई लोगों को एएसपीएनईटी वेब ऐप्स के रूप में FunctionApps को शुरू करने के कई फायदे मिल गए हैं। अब यह माइक्रोसॉफ्ट और कम से कम एक ब्लॉगर द्वारा अनुशंसित है, और विवरण उन लोगों के लिए उपरोक्त लिंक में पाया जा सकता है जो इस मार्ग को आगे बढ़ाने की इच्छा रखते हैं। – solvingJ

0

जब दृश्य स्टूडियो से काम करने और अपने समारोह इस तरह ऐप्लिकेशन में कार्यों के बीच कुछ सी # स्क्रिप्ट फ़ाइलें साझा करने के लिए एक रास्ता तलाश:

#load "..\Shared\MySharedCode.csx" 

दें कि बारे में पता होना आपको 'आउटपुट निर्देशिका में कॉपी करें' संपत्ति को अपने साझा फ़ोल्डर में फ़ाइलों को 'हमेशा कॉपी करें' पर सेट करना चाहिए।

संबंधित मुद्दे