MWArrayПосле того, как вы создадите доступный удаленно компонент, можно настроить консольный сервер и клиент, использующий MWArray API. Для получения дополнительной информации о выборе правильного API для ваших потребностей доступа смотрите, Выбирают How to Access an Assembly.
Некоторые причины вы можете использовать MWArray API вместо нативного API.NET:
Вы работаете с массивами структуры данных, которые не поддерживает нативный API.NET.
Вы или ваши пользователи работаете экстенсивно со многими типами данных MATLAB®.
Вы или ваши пользователи - знакомое и удобное использование MWArray API.
Для получения информации о доступе к вашему компоненту с помощью нативного API.NET смотрите доступ к Доступному удаленно блоку.NET Используя Нативный API.NET: Магический квадрат.
Серверное приложение размещает удаленный встроенный компонент, Создают Доступный удаленно блок.NET. Можно также выполнить эти шаги с помощью нативного API.NET, как обсуждено в доступе к Доступному удаленно блоку.NET Используя Нативный API.NET: Магический квадрат.
Создайте сервер с помощью файла проекта Microsoft® Visual Studio® MagicSquareServer\MagicSquareMWServer.csproj:
Измените ссылки для сгенерированного блока компонента к MagicSquareComp\for_redistribution_files_only\MagicSquareComp.dll.
Выберите соответствующую платформу сборки.
Выберите режим Debug или Release.
Создайте MagicSquareMWServer проект.
Предоставьте конфигурационный файл для MagicSquareMWServer.
Используйте код C# в сервере, расположенном в файле MagicSquareServer\MagicSquareServer.cs:
using System;
using System.Runtime.Remoting;
namespace MagicSquareServer
{
class MagicSquareServer
{
static void Main(string[] args)
{
RemotingConfiguration.Configure
(@"..\..\..\..\MagicSquareServer.exe.config");
Console.WriteLine("Magic Square Server started...");
Console.ReadLine();
}
}
}
Читает связанный конфигурационный файл, чтобы определить
Имя компонента, который это разместит
Форматирование протокола и сообщения дистанционной работы, чтобы использовать
Время владения для удаленного компонента
Сигналы, что сервер активен и ожидает возврата каретки, который будет вводиться перед завершением.
Конфигурационный файл для MagicSquareServer находится в файле MagicSquareServer\MagicSquareServer.exe.config. Целый конфигурационный файл, написанный в XML, следует:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.runtime.remoting>
<application>
<service>
<wellknown mode="SingleCall"
type="MagicSquareComp.MagicSquareClass, MagicSquareComp"
objectUri="MagicSquareClass.remote" />
</service>
<lifetime leaseTime= "5M" renewOnCallTime="2M"
leaseManagerPollTime="10S" />
<channels>
<channel ref="tcp" port="1234">
<serverProviders>
<formatter ref="binary" typeFilterLevel="Full" />
</serverProviders>
</channel>
</channels>
</application>
<debug loadTypes="true"/>
</system.runtime.remoting>
</configuration>
Этот код задает:
Режим, в котором к удаленному компоненту получат доступ — в этом случае, один режим вызова
Имя удаленного компонента, блока компонента и объекта URI (унифицированный идентификатор ресурса) раньше получало доступ к удаленному компоненту
Время владения для удаленного компонента
Протокол дистанционной работы (TCP/IP) и номер порта
Средство форматирования сообщения (binary) и полномочия для канала связи (full доверие)
Параметр отладки сервера
Клиентское приложение, запускающееся в отдельном процессе, получает доступ к удаленному выполнению компонента в серверном приложении, которое вы создали ранее. (См. Кодирование и Создавание Приложения Хостинг-сервера и Конфигурационного файла.
Затем создайте удаленный клиент, использующий файл проекта Microsoft Visual Studio MagicSquareClient\MagicSquareMWClient.csproj. Это ссылки на файл оба блок преобразования разделяемых данных и сгенерированный интерфейсный блок компонента matlabroot\toolbox\dotnetbuilder\bin\win64\v4.0\MWArray.dllMagicSquareComp\for_redistribution_files_only\IMagicSquareComp.
Создать удаленный клиент, использующий Microsoft Visual Studio:
Выберите соответствующую платформу сборки.
Выберите режим Debug или Release.
Создайте MagicSquareMWClient проект.
Предоставьте конфигурационный файл для MagicSquareMWServer.
Используйте код C# в клиенте, расположенном в файле MagicSquareClient\MagicSquareClient.cs. Клиентский код показывают здесь:
using System;
using System.Configuration;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Http;
using System.Collections;
using System.Runtime.Serialization.Formatters;
using System.Runtime.Remoting.Channels.Tcp;
using MathWorks.MATLAB.NET.Utility;
using MathWorks.MATLAB.NET.Arrays;
using IMagicSquareComp;
namespace MagicSquareClient
{
class MagicSquareClient
{
static void Main(string[] args)
{
try
{
RemotingConfiguration.Configure
(@"MagicSquareClient.exe.config");
String urlServer=
ConfigurationSettings.AppSettings["MagicSquareServer"];
IMagicSquareClass magicSquareComp=
(IMagicSquareClass)Activator.GetObject
(typeof(IMagicSquareClass),
urlServer);
// Get user specified command line arguments or set default
double arraySize= (0 != args.Length)
? Double.Parse(args[0]) : 4;
// Compute the magic square and print the result
MWNumericArray magicSquare=
(MWNumericArray)magicSquareComp.makesquare
(arraySize);
Console.WriteLine("Magic square of order {0}\n\n{1}",
arraySize, magicSquare);
}
catch (Exception exception)
{
Console.WriteLine(exception.Message);
}
Console.ReadLine();
}
}
}
Этот код делает следующее:
Клиент читает связанный конфигурационный файл, чтобы завоевать репутацию и местоположение доступного удаленно компонента.
Клиент инстанцирует доступного удаленно объекта с помощью статического Activator.GetObject метод
От этой точки клиент дистанционной работы вызывает методы на доступном удаленно компоненте, как это вызвало бы метод локального компонента.
Конфигурационный файл для клиента магического квадрата находится в файле MagicSquareClient\MagicSquareClient.exe.config. Конфигурационный файл, написанный в XML, показывают здесь:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="MagicSquareServer"
value="tcp://localhost:1234/MagicSquareClass.remote"/>
</appSettings>
<system.runtime.remoting>
<application>
<channels>
<channel name="MagicSquareChannel" ref="tcp" port="0">
<clientProviders>
<formatter ref="binary" />
</clientProviders>
<serverProviders>
<formatter ref="binary" typeFilterLevel="Full" />
</serverProviders>
</channel>
</channels>
</application>
</system.runtime.remoting>
</configuration>
Этот код задает:
Имя удаленного сервера компонента и удаленного URI компонента (унифицированный идентификатор ресурса)
Протокол дистанционной работы (TCP/IP) и номер порта
Средство форматирования сообщения (binary) и полномочия для канала связи (full доверие)
Запуск сервера путем выполнения следующего:
Откройте DOS или командное окно UNIX® и cd к MagicSquareServer\bin\x86\v4.0\Debug.
Запустите MagicSquareServer.exe. Вы будете видеть сообщение:
Magic Square Server started...
Запустите клиент путем выполнения следующего:
Откройте DOS или командное окно UNIX и cd к MagicSquareClient\bin\x86\v4.0\Debug.
Запустите MagicSquareClient.exe. После того, как MATLAB Runtime инициализирует, необходимо видеть следующий выход:
Magic square of order 4 162313 511108 97612 414151