2011-10-21 14 views
5

रोज़लिन सीटीपी खुले में बाहर होने के साथ, हम सी # स्क्रिप्ट लिखने के अलावा अन्य चीज़ों के बारे में सोचने की कोशिश कर सकते हैं।क्रॉलीर को गतिशील रूप से संकलित करने के लिए रोज़लिन का उपयोग करें

के बाद से asp.net MVC के आप कस्टम नियंत्रक कारखानों लिखने की अनुमति देता है, हम ऑन-द-मक्खी

  • लोड में नव निर्मित प्रकार एक कारखाने कि

    • स्रोत फ़ाइल से नियंत्रकों संकलित लिख सकता है क्रम को (क्रम कि संभाल कर सकते हैं?)
    • और पिछले प्रकार को खारिज किया है, तो एक ही नियंत्रक के लिए पिछले अनुरोध पहले से ही

    यह होगा यू की अनुमति देता है बनाया गया है एस को तुरंत प्रोटोटाइप या नियंत्रकों को बदलने के लिए, क्योंकि आप बस कोड लिख सकते हैं और नियंत्रक फैक्ट्री पुन: संकलित करने की आवश्यकता के बिना परिवर्तन उठाएगा।

  • +2

    यह रोज़लिन के बिना किया जा सकता है। – Ankur

    +0

    ऑर्चर्ड सीएमएस पर एक नज़र डालें: यह आज गतिशील रूप से स्रोत कोड से मॉड्यूल लोड करता है। –

    +0

    ऑर्चर्ड असेंबली लोड करने से पहले csproj संकलित करके ऐसा करता है, लेकिन इसे "कुछ हद तक प्रयोगात्मक" के रूप में वर्णित करता है: http://www.orchardproject.net/docs/Orchard-module-loader-and-dynamic-compilation।एएसएक्स – Thomas

    उत्तर

    5

    मैंने कुछ महीने पहले एक सेवा के रूप में मोनोस कंपाइलर का उपयोग कर रनटाइम नियंत्रकों को पहले ही लागू कर दिया है। हालांकि यह शुरुआत में वास्तव में अच्छा लग रहा है http://www.fusonic.net/en/blog/2011/04/01/scripting-asp-net-mvc-controllers-at-runtime/

    , क्योंकि कई सीमाएं की है कि सुपर वास्तविक दुनिया में उपयोगी नहीं है:

    आप यहाँ GitHub पर कोड को infos और लिंक मिल सकता है।

    सबसे पहले विजुअल स्टूडियो आपके और आपके कोड के मध्य में खड़ा है क्योंकि यह डीबगिंग के दौरान सख्ती से लॉक और स्रोत कोड को रोकता है। इसलिए आपकी स्रोत-फ़ाइलों को संपादित करने का एकमात्र तरीका डीबगर संलग्न किए बिना चल रहा है।

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

    तो फिर तुम समस्या यह है कि आप अपने गतिशील कोड और डिबग नहीं कर सकते है इतने पर ...

    मैं कुछ दिनों के बाद इसे का उपयोग क्योंकि यह सिर्फ एक पूर्ण समाधान नहीं है बंद कर दिया है। मैं .NET के लिए समाधान का सपना देख रहा हूं जहां पूरे एमवीसी-प्रोजेक्ट को रनटाइम पर गतिशील रूप से संकलित किया जा सकता है, नियंत्रकों तक सीमित नहीं है (वास्तविक पटकथा ढांचे की तरह) और डिबगिंग समेत। http://zeroturnaround.com/jrebel/

    +0

    तो यह संभव है, लेकिन यह काम करने के लिए सुविधाजनक नहीं है। – Thomas

    +0

    मैं अपने एएसपी एमवीसी 3 प्रोजेक्ट में ऐसा करने के लिए मोनो का उपयोग कर रहा हूं। जब आपकी परियोजना बड़ी होती है तो यह वास्तव में समय बचाने का दृष्टिकोण है। – lontivero

    2

    मुझे एमवीसी नियंत्रक कारखानों के बारे में इतना कुछ पता नहीं है, लेकिन हाँ, ऐसा कुछ ऐसा लगता है जो किया जा सकता है। चरण 2 को उत्सर्जित कोड के मानक असेंबली.लोड() के साथ किया जा सकता है। यदि संभव हो तो रोज़लिन में गतिशील विधि को संकलित करने की क्षमता भी होती है, जो हल्का वजन भी होता है।

    संबंधित उदाहरण के लिए, प्रोटोटाइप Razor view engine पर एक नज़र डालें जो डेविड एबो ने एक साथ रखा था।

    +0

    स्क्रिप्टलेट को गतिशील विधि में बदलने के बारे में मैं वास्तव में कैसे जा सकता हूं? –

    1

    ScriptCs पर एक नज़र डालें:

    जावा-दुनिया में इसके लिए एक समाधान है। मुझे विश्वास है कि जल्द ही ऐसा संभव होगा।

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

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