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