У меня есть несколько разных программ резервного копирования, и я хочу объединить их в одну.Делая так, я работаю над своим OO-дизайном, чтобы упростить и ускорить выполнение программы вождения, абстрагируя информацию о моем сервере и базе данных.
Я использую два разных хоста (Discount ASP.net и Rackspace).Они оба делают свои резервные копии немного по-разному.
Я пробовал рассмотреть несколько разных подходов, но вот тот маршрут, который я считаю наиболее подходящим.
У меня естьмой базовый класс:
public abstract class DBServer
{
public List<Database> Databases { get; set; }
public abstract bool MakeBackupCall(Database d);
}
, а затем два производных класса:
public class DASPServer : DBServer
{
public string APIKey { get; set; }
public override bool MakeBackupCall(Database d)
{
// do some stuff
return true;
}
}
public class RackspaceServer : DBServer
{
public override bool MakeBackupCall(Database d)
{
// do some different stuff
return true;
}
}
Проблема связана с моим связанным объектом Database
.Поскольку процессы резервного копирования различны для каждого хоста, мне нужна разная информация для баз данных.Например, для Discount ASP.net мне нужна версия (2000, 2005, 2008) для базы данных, чтобы я знал, какой из их веб-сервисов вызывать.Для Rackspace мне нужно имя внешнего сервера, имя пользователя базы данных и пароли для создания строки подключения.Из-за этого я попытался создать объект базы данных со следующей иерархией.
public abstract class Database
{
public string Name { get; set; }
}
public class DASPDatabase : Database
{
public string Version { get; set; }
}
public class RackspaceDatabase : Database
{
public string ServerName { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
protected string ConnectionString
{
get { return string.Format("Data Source={0};Network Library=;Connection Timeout=30;Packet Size=4096;Integrated Security=no;Encrypt=no;Initial Catalog={1};User ID={2};Password={3}", ServerName, Name, UserName, Password); }
}
}
Что я хочу сделать, так это убедиться, что мой экземпляр DASPServer всегда получает экземпляры DASPDatabases и то же самое с Rackspace.В качестве альтернативы, я хотел бы получить удар в голову, если я собираюсь сделать это в неправильном направлении.
Большое спасибо заранее