Benutzer mit den meisten Antworten
MEF : Verfahrensfrage

Frage
-
Hallo NG,
meine Projektplanung neigt sich dem Ende entgegen.
Allerdings brauche ich da noch einige Ideen.
Ausgangspunkt:
Interfaces :
public interface IModule { void StartModule(UC.IModuleConfiguration.IModuleConfiguration config,IFileSearcher.IFileSearcher reader); event EventHandler<OnStartEventArgs> OnModuleStarted; event EventHandler<OnErrorEventArgs> OnModuleError; event EventHandler<OnEndEventArgs> OnModuleEnd; event EventHandler<OnMessageEventArgs> OnMessageRecieved; }
public interface IModuleConfiguration { string MailMessage { get; set; } IEnumerable<string> MailToAdresses { get; set; } IEnumerable<string> MailBccAdresses { get; set; } string MailServer { get; set; } int MailPort { get; set; } string MailServerUserName { get; set; } string MailServerPassWord { get; set; } string MailAdressFrom { get; set; } string MailNameFrom { get; set; } Schedule Schedule { get; set; } string ConnectionString { get; set; } }
public interface IFileSearcher { event EventHandler<FileFoundEventArgs> OnFileFound; event EventHandler<LogEventArgs> OnLogEntry; event EventHandler<ErrorEventArgs> OnError; event EventHandler<OnCompleteEventArgs> OnOperationCompleted; void StartReader(IFileSearcherConfiguration.IFileSearcherConfiguration config); }
public interface IFileSearcherConfiguration { string ServerAdress { get; set; } int Port { get; set; } string Username { get; set; } string Password { get; set; } string InitialDirectory { get; set; } string DirectoryPattern { get; set; } string FilePattern { get; set; } string SftpKeyFile { get; set; } string SftpKeyPassword { get; set; } bool DeleteFile { get; set; } bool FtpActiveMode { get; set; } }
Idee nun : Der Host soll anhand eines ConfigBuilders für jedes Modul aus einer XML die Configurationen zusammenstellen.
Bsp : Compose findet das Module TestModule , den Assemblynamen übergibt er dem Configbuilder und kriegt nun die Konfigurationen zurück.
Diese Configs übergibt er den jeweiligen Interfaces und diese Interfaces an das Modul.
Praktikabel ? Gut ? Mies ?
Wie steht Ihr dazu ?
Grüße
Antworten
-
Hallo Pawel,
dazu ist vielleicht das Prinzip von MS relevant, dass sie in Ende letzten Jahres veröffentlichten PRISM 4.0 implementieren.
Wir benutzen das MS-Verfahren auch für die spätgebunde Zusammenfügung der Module aus XAML-Dateien (also XML-Datein) und das ist ModuleCatalog.CreateFromXaml aus PRISM 4.0. Namespace "Microsoft.Practices.Prism.Modularity" in der "Microsoft.Practices.Prism.dll"
mit downloadbarem Code in der ModuleCatalog.cs, der letztlich ein XamlReader.Load in der Essenz aufruft.public static ModuleCatalog CreateFromXaml(Uri builderResourceUri) { StreamResourceInfo streamInfo = Application.GetResourceStream(builderResourceUri); if ((streamInfo != null) && (streamInfo.Stream != null)) { return CreateFromXaml(streamInfo.Stream); } return null; } public static ModuleCatalog CreateFromXaml(Stream xamlStream) { string xaml; if (xamlStream == null) { throw new ArgumentNullException("xamlStream"); } using (StreamReader reader = new StreamReader(xamlStream)) { xaml = reader.ReadToEnd(); } return (XamlReader.Load(xaml) as ModuleCatalog); }
-
> Praktikabel ? Gut ? Mies ? Wie steht Ihr dazu ?
ich finde das eine sehr gute und fast die sinnigste und sehr flexible Art der Definition die zu ladenden Module zu bestimmen.
(ok, man könnte es höchstens noch mit als Enterprise Library 5.0 Konfiguration mit anbieten, sodass eine visuelle Konfiguration möglich wäre - aber das nur nebenbei).
ciao Frank- Als Antwort markiert Pawel Warmuth Donnerstag, 17. Februar 2011 06:25
-
Alle Antworten
-
Hallo Pawel,
dazu ist vielleicht das Prinzip von MS relevant, dass sie in Ende letzten Jahres veröffentlichten PRISM 4.0 implementieren.
Wir benutzen das MS-Verfahren auch für die spätgebunde Zusammenfügung der Module aus XAML-Dateien (also XML-Datein) und das ist ModuleCatalog.CreateFromXaml aus PRISM 4.0. Namespace "Microsoft.Practices.Prism.Modularity" in der "Microsoft.Practices.Prism.dll"
mit downloadbarem Code in der ModuleCatalog.cs, der letztlich ein XamlReader.Load in der Essenz aufruft.public static ModuleCatalog CreateFromXaml(Uri builderResourceUri) { StreamResourceInfo streamInfo = Application.GetResourceStream(builderResourceUri); if ((streamInfo != null) && (streamInfo.Stream != null)) { return CreateFromXaml(streamInfo.Stream); } return null; } public static ModuleCatalog CreateFromXaml(Stream xamlStream) { string xaml; if (xamlStream == null) { throw new ArgumentNullException("xamlStream"); } using (StreamReader reader = new StreamReader(xamlStream)) { xaml = reader.ReadToEnd(); } return (XamlReader.Load(xaml) as ModuleCatalog); }
-
> Praktikabel ? Gut ? Mies ? Wie steht Ihr dazu ?
ich finde das eine sehr gute und fast die sinnigste und sehr flexible Art der Definition die zu ladenden Module zu bestimmen.
(ok, man könnte es höchstens noch mit als Enterprise Library 5.0 Konfiguration mit anbieten, sodass eine visuelle Konfiguration möglich wäre - aber das nur nebenbei).
ciao Frank- Als Antwort markiert Pawel Warmuth Donnerstag, 17. Februar 2011 06:25
-
-
Hallo Pawel,
dazu ist vielleicht das Prinzip von MS relevant, dass sie in Ende letzten Jahres veröffentlichten PRISM 4.0 implementieren.Interessant definitiv für grafische Oberflächen, schaue ich mir mal an
(ok, man könnte es höchstens noch mit als Enterprise Library 5.0 Konfiguration mit anbieten, sodass eine visuelle Konfiguration möglich wäre - aber das nur nebenbei).
Visuelle Konfig, daran arbeite ich bereits, wobei ich mir dann eher die Enterprise Lib anschaue wenn es da was fertiges gibt :-)
Danke, Grüße Pawel