MWArray
После того, как вы создадите доступный удаленно компонент, можно настроить консольный сервер и клиент, использующий API MWArray
. Для получения дополнительной информации о выборе правильного API для ваших потребностей доступа смотрите, Выбирают How to Access an Assembly.
Некоторые причины вы можете использовать API MWArray
вместо нативного API.NET:
Вы работаете с массивами структуры данных, которые не поддерживает нативный API.NET.
Вы или ваши пользователи работаете экстенсивно со многими типами данных MATLAB®.
Вы или ваши пользователи - знакомое и удобное использование API MWArray
.
Для получения информации о доступе к вашему компоненту с помощью нативного 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.dll
MagicSquareComp\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