मैं जिस चीज पर काम कर रहा हूं उसकी व्यवहार्यता साबित करने के लिए मैं एक प्रोटोटाइप लिख रहा हूं। असल में, इसे किसी एप्लिकेशन डोमेन में डिस्क पर नहीं होने वाली असेंबली लोड करने की आवश्यकता होती है। सतह पर, यह आसान लगता है। वास्तव में, यह WinForms दुनिया में बच्चे का खेल है जहां एक प्रक्रिया एक प्रक्रिया है।मैं गतिशील रूप से असेंबली कैसे लोड करूं एएसपी में डिस्क पर नहीं। नेट वेब एप्लिकेशन?
एएसपी.Net वेब अनुप्रयोगों के लिए, यह थोड़ा गिलहरी है। मुझे यह 99.99% काम मिल गया है। वर्तमान पद्धति कुछ इस तरह काम कर रहा है:
public class AppDomainManager : System.AppDomainManager
{
PhantomAssemblyLoader m_phantomAssemblyLoader;
public AppDomainManager()
{
m_phantomAssemblyLoader = new PhantomAssemblyLoader();
}
public override void InitializeNewDomain(AppDomainSetup appDomainInfo)
{
m_phantomAssemblyLoader.Attach(AppDomain.CurrentDomain);
}
}
public class PhantomAssemblyLoader
{
public PhantomAssemblyLoader()
{
}
public void Attach(AppDomain appDomain)
{
appDomain.AssemblyResolve += new ResolveEventHandler(AssemblyResolve);
appDomain.DomainUnload += new EventHandler(DomainUnload);
}
public void Detach(AppDomain appDomain)
{
appDomain.AssemblyResolve -= AssemblyResolve;
appDomain.DomainUnload -= DomainUnload;
}
void DomainUnload(object sender, EventArgs e)
{
this.Detach(sender as AppDomain);
}
private Assembly AssemblyResolve(object sender, ResolveEventArgs args)
{
Assembly asssembly = Assembly.Load(BlackMagic.GetBytes(sender, args));
return asssembly;
}
}
समस्या हो कि एक नया AppDomain instantiated और प्रत्येक पृष्ठ लोड के लिए उतार दिया है लगता है। उपर्युक्त कोड आवश्यक असेंबली लोड करता है, इसे अनलोड करता है, इसे फिर से लोड करता है और इसी तरह। मुझे पता है कि यह हो रहा है क्योंकि इन प्रेत विधानसभाओं के भीतर स्थिर डेटा पेज लोड के बीच नहीं रहता है।
सही समाधान इन प्रेत विधानसभाओं को उसी संदर्भ में लोड कर सकता है जैसे/bin फ़ोल्डर में पाए गए असेंबली। ये तब शुरू होते हैं जब एप्लिकेशन शुरू होता है और सत्र के दौरान कभी भी अनलोड नहीं किया जाता है।
मुझे अभी भी समझ में नहीं आता कि आप क्या हासिल करने की कोशिश कर रहे हैं। क्या आप एक उदाहरण लिख सकते हैं जो आवश्यकता और WinForm समाधान का प्रदर्शन करता है? –