我必须构建一个 Windows 服务,从 n 个客户端数据库中获取数据,将结果集转换为 XLS 格式并以客户端指定的时间间隔将其发送到相应的(客户端特定的)FTP 帐户,
这是另一种说法:相同的 Windows 服务将连接到多个数据库,将文件发送到不同的 FTP 帐户,并根据它连接到的客户端数据库以不同的时间间隔运行。
我的问题是,我应该如何设计它才能灵活地处理多种场景并且更具可配置性。
这背后的基本思想是,当新客户要求相同的服务时,最大限度地减少未来的实施时间。
我正在考虑以下想法,其中可以将单个客户端设置为单独的工作线程。我知道这种方法存在严重问题,但似乎无法找出最佳方法。
这是部分代码:
private static void Main(string[] args)
{
// Initialize the first worker thread.
NewUserThread newUserThread = new NewUserThread();
// Specify properties of this worker thread.
newUserThread.Name = "New User Check";
newUserThread.Delay = 0;
newUserThread.Interval = 2 * 60 * 1000;
// Initialize the second worker thread.
UserUpdateThread userUpdateThread = new UserUpdateThread();
// Specify properties of this worker thread.
userUpdateThread.Name = "User Update Check";
userUpdateThread.Delay = 30 * 1000;
userUpdateThread.Interval= 5 * 60 * 1000;
// Initialize the first Windows service objects.
WindowsService userCheckService = new WindowsService();
userCheckService.ServiceName = UserCheckServiceName;
// Initialize the second Windows service objects.
WindowsService emailService = new WindowsService();
emailService.ServiceName = EmailServiceName;
// Add services to an array.
ServiceBase[] services = new ServiceBase[]
{
userCheckService,
emailService,
};
// Launch services.
SendFiles("Launching services...");
Run(services, args);
}
internal static void (string message, params object[] args)
{
// Call to DB
// Convert dataset to XLS
// Send to FTP
}
如果我没有任何意义,请告诉我,我愿意探索一种全新的方法。
代码示例将有所帮助。
提前谢谢大家!