2008-11-30 13 views
7

मैं वर्तमान प्रोजेक्ट के लिए सी # में अपनी ऑब्जेक्ट्स के लिए ऑडिट ट्रेल्स को कार्यान्वित करने के तरीकों की तलाश में हूं, मूल रूप से मुझे:सी # में ऑब्जेक्ट्स के लिए ऑडिट ट्रेल कार्यान्वित करना?

1. किसी दिए गए ऑब्जेक्ट के पुराने मान और नए मानों को स्टोर करें। 2. नई वस्तुओं की रिकॉर्ड निर्माण। 3. पुरानी वस्तु का हटाना।

क्या ऐसा करने का कोई सामान्य तरीका है, सी # जेनिक्स का उपयोग करने की तरह, ताकि मुझे मूल वस्तु की घटनाओं जैसे हटाने, हटाने पर इत्यादि के लिए कोड लिखना पड़े। (ओआरएम ऑब्जेक्ट्स)। बात यह है अगर कोई ऑडिट ट्रेल इंजेक्ट करने का कोई तरीका था, तो कोई इसका उपयोग कर रहा है। किसी के पास कोई अनुभव या कोई भी तरीका है जो वे अनुसरण करते हैं। इसे एक पहलू उन्मुख (एओपी) मैननर में करने का कोई तरीका है।

अपने विचारों आदि साझा करें

उत्तर

1

प्रश्न सुंदर को How do you implement audit trail for your objects (Programming)?

हम एक ऐसी ही समाधान को क्रियान्वित किया है, AOP (AspectJ कार्यान्वयन) का उपयोग कर के समान है। इस विशेष बिंदुओं का उपयोग करके कब्जा कर लिया जा सकता है और विशिष्ट संचालन किया जा सकता है।

इसे प्लग इन किया जा सकता है और जब हम चाहें तो प्लग इन किया जा सकता है।

हालांकि, हमारे कार्यान्वयन J2EE में था ..

तुम सच में एप्लिकेशन परत में यह करने के लिए चाहते हैं, तो मैं यह सुझाव है।

आशा है कि यह मदद करता है ..

+0

हूँ मैं क्यू पूछा कि क्यों अपने simlar ही ... खैर मैं अपने aop के रूप में महल है, लेकिन मैं आदि कैसे interspect कर सकते हैं या कोई पैटर्न मैं पालन करने के लिए है या क्या आप इसे शब्दों में डाल सकते हैं कि आप इसे कैसे करते हैं? उम्मीद है कि बहुत कुछ नहीं है। – abmv

+0

हमने स्प्रिंग आईओसी और स्प्रिंग एओपी का इस्तेमाल किया था। वे स्थिर और गतिशील दोनों प्रदान करते हैं। इसके लिए आपको बीन्स के रूप में अपने पहलुओं को लिखने की आवश्यकता होगी और फिर उन ऑब्जेक्ट्स को संलग्न करें जिन्हें आप ऑडिट करना चाहते हैं। मुझे लगता है कि नेट समकक्ष को NSpring कहा जाता है। – Satya

1

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

आप किसी मौजूदा ऑब्जेक्ट स्ट्रक्चर के चारों ओर कमांड को लपेट सकते हैं, तो आप सीधे ऑब्जेक्ट्स पर उन्हें करने के विपरीत कमांड लेयर पर अपने क्रियाएं सौंप सकते हैं।

1

क्या आपने एक साधारण अधिसूचना पैटर्न का उपयोग करने पर विचार किया है? आप अपनी सेवा परत को न्यू ऑब्जेक्ट, चेंज ऑब्जेक्ट, हटाए गए ऑब्जेक्ट जैसी घटनाओं को बढ़ा सकते हैं, जो एक सामान्य सेवा परत द्वारा सुनाई जाएगी जो ऑब्जेक्ट ले सकती है और परिणामों को सहेज सकती है।

यदि आप ऑब्जेक्ट की स्थिति को सहेजना चाहते हैं तो आप एक्सएमएल सीरियलाइजेशन का लाभ उठा सकते हैं।

यदि आप SQL सर्वर 2008 का उपयोग कर नई ऑडिटिंग सुविधाओं को कार्यान्वित कर सकते हैं तो एक और दृष्टिकोण उपलब्ध है जो आपको डेटाबेस रिकॉर्ड्स में परिवर्तनों का ऑडिट करने देगा, जब डेटा पढ़ा जाता है तो आप ट्रैक (मुझे लगता है) भी ट्रैक कर सकते हैं।

3

आप थोड़ी सी अंतर के साथ INotifyProperty के समान कुछ लागू कर सकते हैं। मैंने अधिकांश INotifyProperty को निकाला है और इसे सामान्य और नए और पुराने मानों को स्टोर करने के लिए बदल दिया है। उसके बाद आप किसी प्रकार का प्रबंधन वर्ग कर सकते हैं जो इसे सुन सकता है और सहेजने और हटाने पर आप परिवर्तनों से निपट सकते हैं।

public interface INotifyProperyChanged<T> 
{ 
    event PropertyChangedEventHandler<T> PropertyChanged; 
} 

    public delegate void PropertyChangedEventHandler<T>(object sender, 
PropertyChangedEventArgs<T> e); 

public class PropertyChangedEventArgs<T> : EventArgs 
{ 
    private readonly string propertyName; 

    public PropertyChangedEventArgs(string propertyName) 
    { 
     this.propertyName = propertyName 
    } 

    public virtual string PropertyName { get { return propertyName; } } 

    public T OldValue { get; set; } 
    public T NewValue { get; set; } 
} 
0

सुंदर पुराने सवाल है, लेकिन सी # वस्तुओं को ऑडिट चाहने वालों के लिए, मैं Audit.NET पुस्तकालय की सिफारिश करेंगे।

यह अलग भंडारण प्रणालियों (एसक्यूएल, Azure, मोंगो) करने के लिए और लेखा परीक्षा विभिन्न प्रणालियों (WCF, एफई, MVC) के लिए लॉग इन करने के एक्सटेंशन हैं।

नोट: मैं मालिक

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

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