J'ai intranet win.forms (cliquez une fois) application avec module de rapport intégré personnalisé (40+ WinWord & rapports Excel). Le module est dans un assemblage séparé et extrait via des interfaces. Nous avons des sources et continuons de l'appuyer.Aide refactor module de rapport personnalisé hérité
interfaces communes ressemblent:
IReportProvider {
// introspection stuff
IEnumerable<ReportCategoryInfo> GetReportGroups();
IEnumerable<ReportInfo> GetReports(Guid categoryId);
...
// common function
ReportResult CreateReport(Guid reportId, ReportParamCollection prms, ..)
}
ReportInfo décrit les informations de base & paramètres requis. L'interface utilisateur est générée automatiquement pour permettre à l'utilisateur de choisir les paramètres du rapport.
class ReportInfo {
public Guid Id { get; set; }
public string Title { get; set; }
public List<ReportParameterInfo> Params { get; set; }
...
}
et ReportResult fournit une représentation du rapport binaire ainsi que le type binaire (est-il Word2003, Excel2003, e.t.c)
class ReportResult {
public byte[] Document { get; set; }
public ReportType DocumentType { get; set; }
public List<string> Warnings { get; set; }
...
}
Il n'y a pas d'exigences d'authentification et Word/Excel représentation est le must. Le PDF n'est pas le bienvenu. Problème: à chaque fois qu'un rapport est ajouté/corrigé, nous mettons à jour le module de reporting et publions la nouvelle version de l'application (car ils sont liés).
Je veux:
- éviter de nouvelles versions d'application lorsque les rapports sont mis à jour.
- Nous devons également ajouter une interface Web intranet à la création de rapports.
Je vais factoriser le code présente de la manière suivante:
- fonctionnalité de reporting Extrait en service WCF séparé
- placer des fichiers de modèle de rapport (Excel & modèles de mots) sur requête et au dossier accessible uniquement au service de reporting.
- Le nouveau service WCF fournira des interfaces d'introspection (quels rapports sont présents et quels paramètres sont requis) et la méthode pour récupérer la représentation de rapport binaire (word ou excel)
- Deux clients doivent communiquer avec le service WCF: Win.Forms pour client actuel et Web un. Le client fournira une interface UI de navigation de rapports pour permettre à l'utilisateur de remplir les paramètres et de recevoir le fichier de rapport. Le client Win.Forms exécutera WinWord ou Excel pour afficher le rapport reçu.
Que pensez-vous de cela?
Merci pour la réponse. J'ai fourni quelques détails, s'il vous plaît, regardez-le. –