创建窗户通信基础组件
以下示例向您展示了如何实现一个窗户®通信基础(WCF)组件使用类型安全接口和集成到一个客户机-服务器。net应用程序。
对于一个额外的例子关于类型安全接口和数据转换规则,明白了实现类型安全接口和集成到. net应用程序中。
关于WCF的最新信息,明白了Windows Communication Foundation是什么在微软®文档。
编写和测试你的MATLAB代码
创建您的MATLAB®程序,然后测试代码之前实现类型安全接口。MATLAB程序必须匹配的函数声明的母语。net接口。
对于这个示例,将下面的代码保存为addOne.m
。
函数y = addOne (x)%的输入必须是一个标量或单个或多个维度的矩阵如果~ isnumeric (x)错误(输入必须为数字。输入% s。类(x));结束y = x + 1;结束
在MATLAB命令提示符,输入addOne ([1, 2, 3])
。
的输出是:
2 3 4
实现WCF接口
MATLAB代码编写和测试后,在c#或Visual Basic开发一个接口,通过API支持本机类型。万博1manbetx
开放微软Visual Studio®并创建一个新类库(。净框架)项目命名
IAddOne
。在解决方案资源管理器窗口中在Visual Studio中,重命名
Class1.cs
文件IAddOne.cs
。在此文件中,编写WCF的源代码接口访问组件。在这个例子中,
IAddOne
接口是用c#写的,指定六过载addOne
:注意,在WCF的实现
addOne
,你布置的方法OperationContract
财产。你给每个方法独特的操作名称,您指定的的名字
的属性OperationContract
请注意
当你使用WCF,重载的函数必须有独特的名字。
接口中的每个方法必须精确匹配一个部署MATLAB函数。有一个输入和一个输出(所有方法与MATLAB相匹配
addOne
函数),尽管这些参数变化的类型和位置。去构建>配置管理器和变化的平台任何CPU来x64。
建设项目微软Visual Studio。该文件
IAddOne.dll
在构建生成文件夹。请注意
这个示例假设您的程序集仅包含
IAddOne
。实际上,它更有可能IAddOne
已经编译好的程序集的一部分。大会可能完成之前编写的MATLAB函数。
使用图书馆创建net程序集编译器应用程序
的库的编译器应用程序生成类型安全API构建您的组件时,如果选择以下选项。
创建一个库编译器项目并选择net程序集从类型列表。
使用下列值:
库名称 AddOneComp
类名 机制
文件编制 addOne.m
扩大额外的运行时设置部分。
在类型安全的API部分,请执行以下操作:
选择使类型安全API。
在界面组装字段中,指定的位置类型安全/ WCF接口组装
IAddOne.dll
你建造。选择
IAddOne
接口的net的界面下拉框。提示
如果下拉是空白,库编译器可能无法找到任何。net接口在组装你选择。
离开名称空间和MEF元数据字段为空。
指定
机制
类的包装类字段。
单击包按钮来构建项目。
该文件
AddOneCompNative.dll
生成的for_redistribution_files_only
文件夹中。
创建net程序集使用compiler.build.dotNETAssembly
请注意
如果您已经创建了一个. net组装使用库的编译器应用程序,您可以跳过本节。然而,如果你想知道如何创建一个. net汇编的MATLAB命令窗口使用编程方法,遵循这些指示。
生成与组件构建使用类型安全的APIcompiler.build.dotNETAssembly
函数,完成以下步骤:
构建. net程序集使用
compiler.build.dotNETAssembly
。使用名称-值参数来指定程序集名称和类名。compiler.build.dotNETAssembly (“addOne.m”,…“AssemblyName”,“AddOneComp”,…“名称”,“机制”);
导航到生成的
AddOneCompdotNETAssembly
目录中。通过使用生成类型安全的API
ntswrap
从MATLAB命令:ntswrap (“c”,“AddOneComp.Mechanism”,…“——”,“IAddOne.dll”,…“我”,“IAddOne”);
并不是所有的参数都是互相兼容。看到
ntswrap
有关所有的命令选项。提示
如果
IAddOne.dll
大会不是在当前文件夹,指定完整路径。这个命令生成装配
MechanismIAddOne.dll
包含的类型安全的APIMATLAB编译器SDK™类机制
的命名空间AddOneCompNative
。
使用WCF开发服务器程序界面
开发一个服务器程序,它提供了访问(通过WCFServiceContract
)的过载addOne
WCF定义的IAddOne
接口。程序引用一个App.config
XML配置文件。
WCF服务器程序装入WCF-basedaddOne.Mechanism
组件,使它可以通过类型安全的SOAP客户端mechanismIAddOne
接口。
编译服务器程序使用微软Visual Studio通过以下步骤:
开放微软Visual Studio并创建一个c#控制台应用程序(。净框架)被称为
AddOneApp
。将以下代码复制到生成的
Program.cs
在你的项目:添加以下配置文件
App.config
你的项目。您可能需要修改上市。net框架的版本。在项目中添加引用以下文件:
这个引用: 定义: IAddOne.dll
. net原生类型接口 IAddOne
MechanismIAddOne.dll
生成的类型安全的API AddOneCompNative.dll
生成的. net汇编 请注意
不像其他。net部署场景,您不需要参考
MWArray.dll
在服务器程序源代码。的MWArray
数据类型是类型安全的API背后隐藏着的MechanismIAddOne
。添加一个引用
System.ServiceModel
上市程序集。去构建>配置管理器和变化的平台任何CPU来x64。
编译并运行服务器程序微软Visual Studio。
程序显示以下输出:
除了服务器运行……按任意键关闭服务。
按以下的关键结果。
关闭服务....
为客户生成代理代码
配置您的客户端与服务器通信通过运行自动代理生成工具svcutil.exe
。大多数版本的微软Visual Studio可以自动生成客户端代理代码从服务器的元数据。
谨慎
在你使用这个步骤生成客户端代理代码,服务器必须可以运行。否则,客户端将找不到服务器。
创建一个客户端项目微软Visual Studio。
添加引用的使用这两个方法。
方法1 方法2 在解决方案资源万博 尤文图斯管理器中窗格中,右键单击引用。
选择添加服务引用。添加服务引用对话框出现。
在地址字段中,输入:
http://localhost: 8001 / /
请注意
一定要包括
/
后除了
。在名称空间字段中,输入
AdditionProxy
。点击好吧。
输入以下命令从您的客户机应用程序目录生成
AdditionProxy.cs
,其中包含客户端代理代码。这个命令还生成配置文件App.config
。svcutil.exe/t:code http://localhost:8001/AddMaster//out:AdditionProxy.cs /config:App.config
请注意
输入上面的命令在一行上,没有休息。
添加
AdditionProxy.cs
和App.config
你的客户项目
请注意
当运行自托管应用程序中,您可能会遇到的问题端口预订。使用这个工具netsh
根据需要修改您的端口配置,。
使用WCF开发客户端程序界面
在启动,客户端程序连接到AdditionService
提供的除了
WCF服务。,而不是直接调用的方法类型安全的机制IAddOne
接口,WCF客户端使用中定义的方法名称OperationContract
的属性IAddOne
。
编译客户端程序使用微软Visual Studio通过以下几点:
开放微软Visual Studio并创建一个c#控制台应用程序(。净框架)被称为
AdditionClient
。将以下代码复制到生成的
Program.cs
在你的项目:如果你不已经引用
System.ServiceModel
,将它添加到您的Visual Studio项目。去构建>配置管理器和变化的平台任何CPU来x64。
编译WCF客户端程序微软Visual Studio。
从命令行运行这个程序的管理员访问。
程序显示以下输出:
联接通过Http连接添加服务……Conntected除了服务……addOne (1) = 2 addOne (16) = 17 addOne (2) = 3 addOne (495) = 496 addOne ([30 60 88]) = [31 61 89] addOne ([0 2;3 1]= [1 3;4 2]按任意键关闭客户端应用程序。
按一个键的结果如下:
关闭客户端....
提示
如果你想使用WCF,最简单的方法是通过类型安全的API。
WCF和. net remoting不兼容在同一部署项目或组件。
本例中需要客户端和服务器使用消息大小超过了WCF的违约。更改默认消息大小的信息,请参阅MSDN文章有关
maxreceivedmessagesize
财产。
另请参阅
compiler.build.dotNETAssembly
|ntswrap
|. net Remoting和Windows通信基础|类型安全接口