2008-09-15 12 views
12

लागू करना मैं सुरक्षा, लॉगिंग, सत्यापन आदि जैसे क्रॉस-कटिंग चिंताओं के लिए कुछ बुनियादी एओपी स्टाइल समाधान का उपयोग कर रहा हूं। मेरा समाधान Castle Windsor और डायनामिकप्रॉक्सी के आसपास विकसित हुआ है। मैं इस मार्ग से नीचे गया हूं क्योंकि मैं बू आधारित डीएसएल का उपयोग करके सबकुछ लागू कर सकता हूं और अपना कोड गुणों को साफ रख सकता हूं। मुझे सप्ताहांत में PostSharp पर एक नज़र डालने के लिए कहा गया था क्योंकि इसे "बेहतर" समाधान माना जाता है। मैंने PostSharp पर एक त्वरित रूप से देखा है, लेकिन मुझे विशेषता उपयोग से हटा दिया गया है।एओपी

क्या किसी ने दोनों समाधानों की कोशिश की है और अपने अनुभव साझा करने की देखभाल करेंगे?

उत्तर

9

मैंने केवल थोड़े समय के लिए महल-विंडसर को देखा (इसलिए) मैं उस पर टिप्पणी नहीं कर सकता लेकिन मैंने पोस्टशर्प का उपयोग किया।

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

लेकिन ...

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

14

PostSharp साथ छोटे मुद्दों के युगल ...

एक मुद्दा मैं PostSharp साथ मिला है कि asp.net का उपयोग जबकि, अपवाद संदेशों के लिए लाइन नंबर 'बाहर' कर रहे हैं में इंजेक्ट किया आईएल निर्देश की संख्या से है PostSharp द्वारा asssemblies पीडीबी के रूप में भी इंजेक्शन नहीं हैं :-)।

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

(उम्मीद है कि इस समझ में आता है)

+5

यह एक बहुत पुराना जवाब है कि मैं भर में ठोकर खाई है, लेकिन मैं तो बस ध्यान दें कि PostSharp अब वास्तव में, PDB फ़ाइलों को बदलने इतना डिबगिंग मुद्दा नहीं रहा है (देखें चाहता था: http://stackoverflow.com/questions/2006508/postsharp-pdb-debugging-and-referenced-assemblies) –