AppleScript - 是企业级的吗?

时间:2013-05-02 10:09:45

标签: macos applescript osx-server

由于iPhone / iPad的巨大渗透,我们的合作伙伴有了新的要求。

我们可以用AppleScript解决这些问题(即发送iMessages),但这个脚本系统企业是否准备就绪?我的意思是,

  • 首先是一个虚拟问题:是沉默?或者会显示1000个窗口发送1000封电子邮件?
  • 稳定持久? (即发送2000截图és1500imessages好吗?)
  • 是“成熟”吗?我的意思是如果我使用PowerShell然后我觉得自己安全。没有太多的监督,也没有太平坦的学习曲线。

请分享您的经验和见解。

3 个答案:

答案 0 :(得分:2)

  • 它是静音,取决于应用程序和你的脚本,很多应用程序都想在屏幕上打开一个窗口等,支持应用程序可以为AppleScripts提供的级别和类型可能有很大差异。
  • 它是否稳定耐用,问题是,AppleScripts的问题不是很快,它可以用AppleEvents完成所有事情,所以你可以很多时候遇到AppleEvents的超时问题,或者AppleScripts需要很长时间,尽管我有承认我最近没有使用AppleScript,但是当我使用现代更快的CPU时,这并不像过去那么大。
  • 它是否成熟,它的存在时间比Mac OS X长,我发现AppleScripts的最大问题是语言看起来像自然语言,给你的印象是你可以写出与其自然语言模式相匹配的东西会有效,但事实并非如此,并且由于其自然语言如语法需要一段时间才能知道什么会起作用,它就像其他语言一样可以解决语法问题,然后几乎任何符合语法的组合将工作。我仍然对在列表上工作的操作感到沮丧,该语言给你的印象是你可以在任何列表上做一些过滤操作,实际上它是你的AppleScripting为你提供该功能的应用程序,例如你可以问查找器从每个活动的应用程序中获取具有某些属性的每个正在运行的应用程序,但是如果您有自己的列表,则必须对其进行枚举,并单独检查每个项目。

AppleScript是一种你可以轻松试验的语言,所以我只想尝试一些东西,看看它是否按你想要的方式工作,然后如果成功的话就充实了。人们已经使用AppleScripts来编写完整的Cocoa应用程序,但我从未想过它适用于类似的东西。

答案 1 :(得分:2)

弥敦道的答案是对的。但还有更多。

AppleScript可以分为两层 - Open Scripting Architecture层和AppleScript语言。

Open Scripting Architecture便于发送和响应Apple Events,这是通过应用程序发送的内容。使用Open Scripting Architecture,可以在不使用AppleScript的情况下使用相同的功能。

例如,Apple提供the Scripting Bridge framework,您可以使用它在Objective-C和Cocoa中编写此代码(以及其他代码本身可以与Cocoa桥接的扩展)。

还有其他语言的其他库,例如Ruby rb-appscript and rubyosa librariesthe Python library appscript

所有这些都是学习AppleScript的可行替代方案,可能更适合手头的经验和能力,因为AppleScript显然是一种后天的品味,需要花费更长的时间来掌握,而不是语法使它看起来,哪个是很难有效地用于其他用途而不是OSA脚本。

答案 2 :(得分:2)

@Jesper:Scripting Bridge存在问题,appscript和RubyOSA实际上已经死了,所以你不应该推荐它们。

...

@boj:询问AppleScript语言本身是否“企业就绪”是错误的问题,因为这是您最不担心的问题。你应该问的是:

“我可以用桌面硬件上运行的桌面软件构建高可靠性无头系统吗?”

和:

“Apple是服务器端的正确选择吗?”


iOS可能是一个优秀的面向消费者的移动平台,OS X是一个体面的桌面操作系统,但就服务器机房而言,我不会用bargepole触摸它们,除非它们是绝对的最后也是唯一的选择(例如你被卡住了)使用OS X Server的专有服务之一,没有其他选择)。虚拟化并不是一个好主意IME和企业基础知识(如LOM和机架式机箱)都不是启动器。并且不要忘记Apple倾向于突然/彻底地修改其产品线,功能和服务,几乎没有预先警告。如果您需要企业级稳定性,可预测性和支持,请坚持使用Linux和/或Windows boxen。

在你的情况下,你正在讨论使用iMessage,因为那是1.一个专有协议,2。Apple迄今为止尚未公开底层API,这确实缩小了您的选择范围。首先你应该问自己:你是否确定你无法通过短信获得合适的解决方案,这种方式既开放又在企业级得到很好的支持?我认为你可以为此做一个强有力的商业案例:运行可能会花费更多,但指出他们为稳定性和可靠性付出了代价,并且(你希望)是一个专业构建的系统。

相比之下,你在Messages.app周围建立的任何东西都将是业余的抨击。如果你被迫走上这条路,你最好做你的研究,不要提前做出任何承诺。例如:

  • 什么可能导致您的系统失败(例如,在无头盒子上弹出的应用程序对话框是一个严肃的PITA,并且不会打折应用程序崩溃,连接问题和其他可能性,直到并包括盒子本身死亡)?

  • 您在考虑什么样的停机时间,以及任何失败的成本影响是什么? (即你对这项服务的预期SLA是多少?)如果它对任何远程业务至关重要或企业的要求超过,比如两个9的正常运行时间然后运行,请不要走,到现有的解决方案。

  • 当出现问题时,您有什么选择恢复/重新启动系统(例如,您是否会试图通过审核进行某些自动故障转移,或者让某人远程进入框中以尝试修复它,或者是否有现场管理员循环电源),是否有任何数据丢失或其他问题需要担心? (例如,您可能希望将业务逻辑和数据库保存在单独的Win / Linux机器上,以便系统不会丢失OS X框播放/重新启动时的位置。)

  • 有关系统维护的协议是什么:如果您无法访问或不再存在,是否有其他人能够在没有您的情况下为代码和/或已部署的系统提供护理?


BTW,WWDC和10.9现在还不算太远,所以我建议等待在10月9日公开iMessage API,然后再花点时间在AppleScript和Messages.app上。如果/当打开消息传递API时,它将允许您在ObjC中构建更强大的服务,但是请注意,您仍然需要绑定到OS X才能开发和运行它。