开发区域

MATLAB高级软件开发

打造产品,打造服务

MATLAB具有大量特定于领域的工具箱集合,为用户提供的不仅仅是一个强大的算法原型环境。它提供了构建软件产品和服务的能力,这些软件产品和服务可以从单个用户/应用程序优雅s manbetx 845地扩展到向整个企业提供服务。

原型很重要,但没有什么东西永远都是原型!

如果只是一个实验,算法将被下一个更大、更好的实现所取代。如果有价值,基于MATLAB的算法将与目标受众分享它提供的见解。这个受众可能局限于几个同事,也可能广泛到一篇公开的科学论文。根据目标受众的需求,MATLAB提供了各种选项来社会化和消费分析中的见解。这些选项包括从加速探索性编程到创建交互式叙述(例如使用住编辑器),以与其他生产质量、企业级软件栈集成。

关键业务解决方案万博 尤文图斯,开发人员使分析本身在整个企业(或类似的用户基础)中可用。为了支万博1manbetx持这一需求,MATLAB提供了一个合适的产品组合来支持s manbetx 845部署选项从独立应用程序到运行在微软Excel®、web应用程序、数据库、应用服务器甚至Hadoop系统等各种技术堆栈上。

为了使其具体化,让我们将MATLAB算法从原型一直应用到生产级服务。

为了使这个例子简单,让我们使用斐波那契生成器安迪最近写了一篇博客来构建一个MATLAB驱动的服务。

构建一个MATLAB驱动的服务

我的示例应用程序将调用MATLAB算法作为服务来计算斐波那契数列的第N项。

作为说明,我将选择一种简单的方法来公开一个计算斐波那契数列的服务。

MATLAB生产服务器是一个企业级的解决方案,为开发人员提供了将他们的MATLAB算法集成到完全面向服务的体系结构(SOA)的能力。面向服务的体系结构(SOA)是计算机软件设计中的一种体系结构模式,其中应用程序组件通过通信协议向其他组件提供服务,通常通过网络,通常独立于任何供应商、产品或技术。

在Production Server上,您的MATLAB算法现在可以作为24 x 7 x 365的服务运行,重要的是,可以扩展到广泛和深入。这样做的真正好处在于,开发人员现在可以在自己选择的环境中请求无状态的MATLAB驱动分析。MATLAB程序可用于生产IT系统,而不受技术堆栈、供应商或语言的限制。

在这个例子中,我们服务的核心是计算第N个斐波那契数的MATLAB代码:

函数F = fibonacci(n)一个生成第N个斐波那契数的简单例子%使用矩阵指数法F = [11 1; 10 0]^n;f = f (1,2);结束

将此算法打包到MATLAB生产服务器上运行需要使用生产服务器编译器进行几次单击,该编译器可以在Apps目录中找到,也可以作为单个命令调用productionServerCompiler。可以同时打包多个算法。在本例中,我还打包了第二个函数,该函数调用上面的代码来计算斐波那契数列,直到一个合理的给定值N(在请求时验证输入)。

现在,我们可以配置这个工具来创建一个可部署的包example.ctf当部署到生产服务器时,我们可以使用斐波那契数生成器算法。单击按钮生成一个准备使用的组件技术文件(CTF)。

这个过程可以支持多种功能,甚至可以万博1manbetx容纳一套完整的软件,并将其附加的支持文件作为同一个CTF文件的一部分。

设置基础设施

请允许我戴上我的IT帽。

这个练习的整个思想是,我可以将基础设施作为一次性练习提供,这将允许我的开发人员将他们的MATLAB算法部署为服务。我想让这篇文章成为一个与读者互动的实验,在本文结束时,在您的浏览器中,将这些代码作为MATLAB驱动的服务进行练习。

为了设置基础设施,我创建了一个计算优化在AWS上运行Windows server 2012。在这台机器上,我通过安装MATLAB Production Server和一个MATLAB运行时。此外,我配置了一些安全规则和防火墙设置,以允许在端口31415上进行连接,我打算在该端口上公开我的服务。

软件安装基本上是一个一键式的过程,通过MATLAB Production server产品提供的脚本,可以轻松启动一个新的服务器实例。

C: \工作> mps-new服务

服务器实例的配置是通过位于\ \ config \ main_config服务。在本例中,我做了一些关键更改,以公开我的服务并匹配IT配置。简而言之:

#将服务绑定到端口31415(即服务端口)—http 31415
# MATLAB运行时设置(即MATLAB运行时在哪里)——mcr-root C:\Program Files\MATLAB\MATLAB Runtime\v901
# CORS Allowed Origins(即可以从哪里访问)——CORS - Allowed - Origins *

产品被设计成高度可定制的,并在配置文件中提供了大量的设置,包括可伸缩性设置,如工人的数量(通常设置为每个核心1个,以扩展深度),以及安全设置,如配置HTTPS和相关证书。

启动服务器:

C:\Work>mps-start -C services

可以动态部署生成的斐波那契CTF文件。也就是说,可以在运行中的MATLAB Production Server实例上部署、更新和删除服务。复制文件到/服务/ auto_deploy文件夹中。

就是这样,MATLAB Production Server现在在我的服务器的端口31415上将算法作为HTTP服务提供。它将通过多种机制接受输入,包括一个简单的JSON编码字符串。

MATLAB分析到处都是

当我说这项服务现在可以在任何地方使用,包括你正在阅读这篇文章的浏览器时,我并不是在开玩笑。为了演示这一点,我设置了一个简单的小提琴,用JavaScript计算第N个斐波那契数。

来吧,试一试:http://jsfiddle.net/hosagrahara/ky5c6aoz/show

点击链接,点击运行,输入一个值并提交以观看MATLAB代码作为服务执行。

请继续玩吧,或者请随意分叉,如果你用斐波那契计算构建了一些有趣的东西,请发表评论。MATLAB作为服务运行可以驱动下游功能-例如,我可以为我选择的可视化提供动力:http://jsfiddle.net/hosagrahara/vrhyd4uc/show

注意:我计划在这篇文章发布2周后关闭MATLAB服务。如果通过下面的评论请求,我可以简单地打开它。

现在,我选择Javascript作为一个简单的环境来展示这个服务。在真实的用例中,易于使用的文档客户端库可以从。net、c#、Java、C/ c++、Python等调用MATLAB驱动的服务。

站在我的立场走一英里

我对基础设施的调整是为了支持一个链接到博客文章的基本演示。万博1manbetx在真实的应用场景中,可能性几乎是无限的,允许您从大多数应用程序的每个级别进行MATLAB分析——即从数据库、应用程序代码甚至浏览器作为业务关键型软件的一部分。

希望这篇文章描述了从MATLAB代码和分析到整个世界可用的服务的框架工作流。在我结束这篇文章之前,我想与你分享一些事情,除非你站在我的立场上走一英里,否则你可能不会意识到。

简而言之,MATLAB Production Server可以用于构建以下服务和微服务:

  • 版本不可知:产品将运行内置的代码任何MATLAB版本只要基础架构可以在其配置中找到相应的运行时。在某些地方,仅这一事实就足以让一些IT组织起立、鼓掌和欢呼。
  • 为性能而构建:产品可优雅地扩展。由于通信是通过HTTP进行的,因此可以通过使用更强大的硬件进行深度扩展,也可以通过使用多个实例来提供负载平衡服务来进行广泛扩展。这使得它能够通过采用用于扩展、故障转移和灾难恢复的行业标准实践来实现弹性操作。
  • 启用开发人员级工作流:由于可以将工作人员分散到多个实例、端口甚至计算机上,因此该产品允许为开发、测试和生产创建不同的环境。
  • 启用企业级安全性:由于该服务是HTTP可访问的,因此可以使用经过实战测试的安全产品和实践来保护该服务的访问,这些安全产品和实践为大部分互联网提供了支持。s manbetx 845该服务可以像你在上面的JSFiddle链接中看到的那样开放,也可以像你的银行网站一样完全安全。

总之,构建一个MATLAB驱动的软件产品或MATLAB驱动的服务-您可以根据您的下一个开发项目的需求来决定。有了正确的方法、技术和工具,您最喜欢的MATLAB分析只需点击一下即可。

请分享你的想法。你的评论真让我高兴!




发布与MATLAB®R2016b

|

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。