После создания удаленного компонента можно настроить серверное приложение и клиент с помощью собственного API .NET. Дополнительные сведения о выборе подходящего API для доступа см. в разделе Выбор способа доступа к сборке.
Некоторые причины, по которым можно использовать собственный API .NET вместо MWArray API:
Вы хотите передавать аргументы и возвращать значения, используя стандартные типы .NET, и вы или ваши пользователи не работают с типами данных, специфичными для MATLAB ®.
Требуется получить доступ к компоненту с клиентского компьютера без установленной версии MATLAB.
Для получения информации о доступе к компоненту с помощью MWArray API см. в разделе Доступ к удаленной сборке .NET с помощью MWArray.
В серверном приложении будет размещен удаленный компонент, созданный в разделе Создание удаленной сборки .NET.
Клиентское приложение, работающее в отдельном процессе, получит доступ к удаленному компоненту, размещенному серверным приложением. Создайте сервер с помощью файла проекта Microsoft ® Visual Studio ®MagicSquareServer\MagicSquareServer.csproj:
Изменение привязки для созданной сборки компонентов на MagicSquareComp\for_redistribution_files_only\MagicSquareCompNative.dll.
Выберите подходящую платформу сборки.
Выберите режим «Отладка» или «Выпуск».
Построить MagicSquareServer проект.
Укажите файл конфигурации для MagicSquareServer.
Код C # для сервера находится в файлеMagicSquareServer\MagicSquareServer.cs. 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="MagicSquareCompNative.MagicSquareClass,
MagicSquareCompNative"
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 доверие)
Параметр отладки сервера
Клиентское приложение, работающее в отдельном процессе, получает доступ к удаленному компоненту, работающему в серверном приложении, встроенном в Coding and Building the Hosting Server Application and Configuration File. Построение удаленного клиента с помощью файла проекта Microsoft Visual Studio MagicSquareClient\MagicSquareClient.csproj. Чтобы создать удаленный клиент с помощью Microsoft Visual Studio:
Изменение привязки для созданной сборки компонентов на MagicSquareComp\for_redistribution_files_only\MagicSquareCompNative.dll.
Измените ссылку на созданную сборку интерфейса на MagicSquareComp\for_redistribution_files_only\IMagicSquareCompNative.dll.
Выберите подходящую платформу сборки.
Выберите режим «Отладка» или «Выпуск».
Построить MagicSquareClient проект.
Укажите файл конфигурации для MagicSquareServer.
Код 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 IMagicSquareCompNative;
namespace MagicSquareClient
{
class MagicSquareClient
{
static void Main(string[] args)
{
try
{
RemotingConfiguration.Configure
(@"MagicSquareClient.exe.config");
String urlServer=
ConfigurationSettings.AppSettings["MagicSquareServer"];
IMagicSquareClassNative magicSquareComp=
(IMagicSquareClassNative)Activator.GetObject
(typeof(IMagicSquareClassNative), 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
double[,] magicSquare=
(double[,])magicSquareComp.makesquare(arraySize);
Console.WriteLine("Magic square of order {0}\n", arraySize);
// Display the array elements:
for (int i = 0; i < (int)arraySize; i++)
for (int j = 0; j < (int)arraySize; j++)
Console.WriteLine
("Element({0},{1})= {2}", i, j, magicSquare[i, j]);
}
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 должны появиться следующие выходные данные:
Magic square of order 4 Element(0,0)= 16 Element(0,1)= 2 Element(0,2)= 3 Element(0,3)= 13 Element(1,0)= 5 Element(1,1)= 11 Element(1,2)= 10 Element(1,3)= 8 Element(2,0)= 9 Element(2,1)= 7 Element(2,2)= 6 Element(2,3)= 12 Element(3,0)= 4 Element(3,1)= 14 Element(3,2)= 15 Element(3,3)= 1