我正在寻找一个好的C#Provider模型库,它可以自动重新加载更新的Provider DLL并继续运行。
我有一个旧的SnapIn / Plugin组件线束,我用它为Web应用程序或Windows服务提供插件功能。在过去,我每隔10分钟使用它来读取/写入HTTP请求,或者监视文件更改并加载数据文件。
我只有一个带有生命周期方法的IPlugIn,例如Initialize,Start,Stop
我还有基本实现,例如Interval(Fire ever N秒)或File Watcher在文件更改时执行某些操作。
我希望能够:
/// <summary>
/// All SnapIn/Provider implement this interface
/// </summary>
public interface ISnapIn
{
/// <summary>
/// Configuration information for the SnapIn.
/// </summary>
/// <param name="config">The config.</param>
void SetConfig(SnapInConfigurationSnapInDo config);
/// <summary>
/// Unique SnapIn ID
/// </summary>
string Id { get; set; }
/// <summary>
/// Description SnapIn.
/// </summary>
string Description { get; set; }
/// <summary>
/// Life-Cycle State
/// </summary>
SnapInStateType State { get; set; }
/// <summary>
/// Initializes the snapin.
/// </summary>
void Initialize(SnapInManager manager, NameValueDictionary parameters);
/// <summary>
/// Starts this snapin
/// </summary>
void Start();
/// <summary>
/// Stops this snpin.
/// </summary>
void Stop();
}
public abstract class FileWatchSnapIn : BaseSnapIn
{
// *********************************************************************************
// Properties
// *********************************************************************************
public string Path { get; set; }
public string Filter { get; set; }
protected FileSystemWatcher Watcher { get; set; }
// ...
}
public abstract class IntervalSnapIn : BaseSnapIn
{
// *********************************************************************************
// Properties
// *********************************************************************************
protected Timer Timer { get; set; }
protected long Interval { get; set; }
protected bool FireIntervalTaskOnStart { get; set; }
}
答案 0 :(得分:1)
如果您正确设置,Microsoft的MAF框架将允许您卸载应用程序域。 实际上,最常见的情况是将每个加载项加载到单独的应用程序域中。
实际上,您可以选择加载项的隔离级别来控制它。
请参阅http://msdn.microsoft.com/en-us/library/bb384200%28v=vs.100%29.aspx