Для изменения размера нажмите или перетащите

Удаленное администрирование

S#.Data может исользоватся в серверном режиме, в данном режиме можно удаленно подключиться к S#.Data и получить имеющиеся данные в хранилище или записать новые. Включение серверного режима S#.Data описано в пункте Настройки.

Для подключения к S#.Data через WCF в S#.API есть класс RemoteStorageClient.

C#
...
var client = new RemoteStorageClient(new InMemoryExchangeInfoProvider(), new Uri("net.tcp://localhost:8000"))
{
    Credentials = { AutoLogon = true, Email = "hydra_user", Password = "qwerty".To<SecureString>() },
};
...

2. Сохранение в S#.Data информации о бирже Exchange:

C#
...
Console.WriteLine("Enter Exchange name (example: NYSE or TESTE)");
var exch = Console.ReadLine();
var exchange = new Exchange[]
{
    new Exchange()
    {
        CountryCode = Exchange.Nyse.CountryCode,
        EngName = exch,
        Name = exch,
        RusName = exch,
    },
};
client.SaveExchanges(exchange);
...

3. Сохранение в S#.Data информации о биржевой площадке ExchangeBoard:

C#
...
Console.WriteLine("Enter ExchangeBoard name (example: NYMEX or TESTB)");
var exchBoard = Console.ReadLine();
var exchangeBoard = new ExchangeBoard[]
{
    new ExchangeBoard()
    {
        Code = exchBoard,
        Exchange = exchange.First(),
        ExpiryTime = new TimeSpan(18, 45, 00),
        TimeZone = TimeZoneInfo.Utc,
        WorkingTime = new WorkingTime(),
    },
};
client.SaveExchangeBoards(exchangeBoard);
...

4. Сохранение в S#.Data инструмента (акция, фьючерс, опцион и т.д.) Security:

C#
...
Security[] security = new Security[]
{
    new Security()
    {
        Class = "TESTWC1F",
        Code = "TESTWCF",
        Id = "TESTWCF1@TESTWCF",
        PriceStep = 0.1m,
        Decimals = 1,
        Board = exchangeBoard.First(),
    }
};
client.SaveSecurities(security);
...

5. Получение из S#.Data данных:

C#
... 
Console.WriteLine("All Exchange");
var ex = client.LoadExchanges(new Exchange());
foreach (var i in ex)
{
    Console.WriteLine("Exchange: " + i);
}
...
Console.WriteLine("All ExchangeBoard");
var eb = client.LoadExchangeBoards(new ExchangeBoard());
foreach (var i in eb)
{
    Console.WriteLine("ExchangeBoard: " + i);
}
...
Console.WriteLine("All Security");
var storageRegistry = new StorageRegistry();
client.Refresh(storageRegistry.GetSecurityStorage(), new Security(), s => { }, () => false);
var allSecurity = storageRegistry.GetSecurityStorage().Lookup(new Security());
foreach (var i in allSecurity)
{
    Console.WriteLine("Security: " + i);
}
...

6. Получение из S#.Data хранилища расширенной информации и сохранения в него расширеной информации:

C#
...
var extendedStorage = client.GetExtendedStorage("MyExtendedStorage");

Tuple<string, Type>[] ei = new Tuple<string, Type>[]
{
    new Tuple<string, Type>("NewExtensionInfo1", typeof(string)), 
    new Tuple<string, Type>("NewExtensionInfo2", typeof(string)),
    new Tuple<string, Type>("NewExtensionInfo3", typeof(string)),
};
Console.Write("Enter ExtensionInfo1:");
var str1 = Console.ReadLine();
Console.Write("Enter ExtensionInfo2:");
var str2 = Console.ReadLine();
Console.Write("Enter ExtensionInfo3:");
var str3 = Console.ReadLine();

extendedStorage.CreateSecurityExtendedFields(ei);
var sid = extendedStorage.GetSecurityStorage(MessageConverterHelper.ToSecurityId(NewSecurity[0].Id));
sid.AddSecurityExtendedInfo(new object[] { str1, str3 , str2 });
...