После создания удаляемого компонента можно настроить серверное приложение и клиент с помощью собственного .NET API. Для получения дополнительной информации о выборе подходящего API для ваших потребностей в доступе см. раздел «Выбор доступа к сборке».
Некоторые причины, по которым вы можете использовать собственный .NET API вместо MWArray API:
Вы хотите передать аргументы и возвращаемые значения с помощью стандартных типов .NET, и вы или ваши пользователи не работают широко с типами данных, характерными для MATLAB®.
Вы хотите получить доступ к своему компоненту с клиентского компьютера без установленной версии MATLAB.
Для получения информации о доступе к компоненту с помощью MWArray API, см. Доступ к удаляемой сборке .NET с использованием MWArray.
В серверном приложении будет размещен удаленный компонент, созданный в разделе «Создание удаляемой сборки .NET».
Клиентское приложение, выполняемое в отдельном процессе, получит доступ к удаленному компоненту, размещенному в серверном приложении. Создайте сервер с помощью Microsoft® Визуальная студия® файл проекта MagicSquareServer\MagicSquareServer.csproj:
Измените ссылку для сгенерированной сборки компонента на MagicSquareComp\for_redistribution_files_only\MagicSquareCompNative.dll.
Выберите соответствующую платформу сборки.
Выберите Debug или Release режим.
Создайте MagicSquareServer проект.
Предоставьте файл строения для MagicSquareServer.
Код C # для сервера находится в файле MagicSquareServer\MagicSquareServer.cs. The 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 и Building the Hosting Server Application и 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.
Выберите соответствующую платформу сборки.
Выберите Debug или Release режим.
Создайте 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 Runtime вы увидите следующий выход:
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