2011-04-08 6 views

उत्तर

29

आप विभिन्न आईओसी कंटेनर जो बॉक्स से बाहर AOP सुविधा की कोशिश कर सकते हैं (उदा Spring.Net एक शक्तिशाली AOP freamework है, महल विंडसर Interceptors है और इसलिए Unity करता है), उन के साथ Snap का उपयोग करें या Postsharp की तरह एक आईएल वीवर का उपयोग करें। हालांकि प्रारंभिक विकास में - - होनहार लग रहा है

अद्यतन मैं सिर्फ "Afterthought" जो बारे में पता चला। इसका उद्देश्य पोस्टशर्प के लिए ओपनसोर्स विकल्प होना है।

और मैं Mono.Cecil जो रूप में अच्छी तरह इल बुनाई करने में सक्षम है उल्लेख करना भूल गया:

सरल अंग्रेजी में, सेसिल के साथ, आप कर सकते हैं मौजूदा प्रबंधित विधानसभाओं लोड, सभी निहित प्रकार ब्राउज़ करें, उन्हें मक्खी पर संशोधित और संशोधित असेंबली डिस्क पर वापस सहेजें।

Fody बुनाई के लिए सेसिल का उपयोग करता है और निर्माण चरण में उस चरण को एकीकृत करने की अनुमति देता है। यह कुछ सुविधाजनक एडिन के साथ आता है (उदाहरण के लिए INotifyPropertyChanged लागू करता है या संकलन के बाद सार्वजनिक गुणों से ToString विधि उत्पन्न करता है)।

5
+0

पोस्टशर्प के लिए +1, यह बहुत शक्तिशाली है और –

8

मैं बिल्कुल वही चीज़ के लिए चारों ओर देख रहा हूं, और मैं आत्मविश्वास से आपको बता सकता हूं कि इसमें कुछ भी नहीं है। नेट जो भी हर सम्मान में AspectJ से दूरस्थ रूप से तुलनीय है।

.NET दुनिया में, मुझे लगता है कि डायनामिक-प्रॉक्सी को अक्सर एओपी मैकेनिक के रूप में उपयोग किया जाता है। केवल कुछ औजार हैं जो वास्तविक आईएल-बुनाई जैसे पोस्टशर्प और आफ्टरिथ्स का समर्थन करते हैं, जिनमें से दोनों को पहलू अभिविन्यास करने के तरीके के रूप में विशेषताओं के साथ घोषणात्मक प्रोग्रामिंग मिलती है। वे दोनों उपयोग करने में आसान हैं, लेकिन यदि आप एओपी पृष्ठभूमि (AspectJ) से आते हैं, तो मुझे यकीन नहीं है कि वे वही होंगे जो आप एओपी को कॉल करेंगे।

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

व्यापार-नियम और डोमेन-संचालित कोड के लिए एओपी अभी भी बहुत ही कम देखा गया है (न ही किसी भी उपकरण द्वारा समर्थित) .Net में इस चरण में।

केवल एक ओपन-सोर्स प्रोजेक्ट है जिसे मैंने हाल ही में पार किया है, जो इस अंतर को भरना शुरू कर रहा है (http://sheepaop.codeplex.com), अभी भी बहुत जल्दी लगता है, लेकिन एक AspectJ-ish कार्यान्वयन के रूप में प्रमोशन दिखता है। जैसा कि मैंने पहले कहा था, यह अभी भी AspectJ (आपके प्रश्न के अनुसार) के साथ तुलना नहीं करेगा, लेकिन समानता बेहद स्पष्ट है और जानबूझकर लगती है।

2

जैसा कि सवाल .NET के बारे में है, आप Nemerle भाषा का उपयोग कर सकते हैं, जिसमें शक्तिशाली मेटा-प्रोग्रामिंग सुविधाएं हैं।

+1

का उपयोग करने में वास्तव में आसान है Nemerle भी मैक्रो विशेषताओं के साथ सी # स्रोत संकलित करने की अनुमति देता है। इस तरह आप एओपी सी # के साथ प्राप्त कर सकते हैं। –

+0

क्या इसका मतलब है कि नेमेरल कंपाइलर में सी # कंपाइलर शामिल है? – ironic

+0

हां, नेमेरल सी # स्रोत का विश्लेषण कर सकते हैं और इसे संकलित कर सकते हैं। आप अपनी परियोजना में .cs फ़ाइल जोड़ सकते हैं और यह काम करता है। अधिकतर आप निमरल कंपाइलर के लिए कोई फ्रंट-एंड लिख सकते हैं, जैसे VB.Net, स्रोत यहां है: https://github.com/rsdn/nemerle/tree/master/snippets/csharp-parser –

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