使用Javascript或传统Web应用程序的Windows商店应用程序?对于丰富的界面桌面应用程序

时间:2014-05-07 12:38:46

标签: javascript web-applications windows-runtime windows-store-apps

我知道有一些关于开发网络应用程序和winRT应用程序之间的差异,利弊的文章,但我想问你关于我个人情况的专业观点,因为在阅读了其中一些论文,我仍然充满怀疑。

我正在寻找开发具有以下要求的桌面应用的工具:

  1. 必须是“先触摸”应用程序。
  2. 它的UI必须具有丰富且用户友好的设计(类似智能手机)。
  3. 其主要工作是主要通过http或telnet(套接字或RS-232)专用API控制一些多媒体设备,如视频矩阵,音频矩阵,视频会议编解码器,视频流编解码器,IP摄像机等。
  4. 它已经用另一种编程语言(Netlinx)开发, 它有大约20个不同的模块来控制不同的设备 或者提供不同的用户功能。所以也许它可能会导致 在“代码地狱”如果在Javascript / WinRT中开发?
  5. 考虑到这一点,我不确定是否要专注于Web应用程序(例如,使用.NET MVC模式),因此我们有一个HTML / CSS现代UI,并在服务器端控制所有通信与外部设备的协议。我认为大多数触摸手势事件都可以在网络上处理,我们会有一个干净的应用程序,UI和商务分离...但这不是必要的,因为我们正在谈论桌面应用程序。

    另一方面,我们采用Windows 8 App方法,具有纯粹的“触控优先”应用程序的优点。但令我感到不舒服的是担心它可以变成“代码地狱”,就像我之前说的那样,因为Javascript不是最有组织的语言(尽管WinJS的努力)。

    所以,我很乐意听到那些拥有Windows 8 HTML / Javascript经验的人,如果这种应用程序可以通过该技术实现,或者最好是服务器 - 客户端模型。

    感谢您的建议!

    修改

    更多信息:

    它是一个Windows桌面应用程序,我们不需要在任何其他平台(包括Windows Phone)中部署它。 Netlinx是AMX的一种专有编程语言。它是一种模块化的低级语言。 我们如何管理通信协议的一个简单示例如下:

    用户按下按钮。

        /****** User UI *****/
    
    //Receives button event
    BUTTON_EVENT[UIdevice, buttonId]
    {
    push:
    {
        send_command deviceController, "START_VIDEOCONFERENCE"
    }
    }
    
    //The UI receives orders from the controller
    DATA_EVENT[UIdevice]
    {
    string:
    {
        ...
        if(data.text == "VIDEOCONFERENCE_STARTED")
            //Set the button state to ON
            on[UIdevice, buttonId]
    }
    }
    
    
    /**** Videoconference controller ****/
    
    //The controller receives orders from the UI
    DATA_EVENT[deviceController]
    {
    command:
    {
        ...
        if(data.text == "START_VIDEOCONFERENCE")
            send_string serialPort, "something_in_videoconference_protocol_to_start"
        ...
    }
    }
    
    //The controller receives responses and asynchronous messages from the real device
    DATA_EVENT[serialPort]
    {
    string:
    {
        ...
        if(data.text == "VIDEOCONFERENCE_STARTED")
            //tell UIDevice to refresh button status
            send_string UIdevice, "VIDEOCONFERENCE_STARTED"
    }
    }
    

    因此,该应用程序有两个主要部分:

    处理所有触摸面板事件的UI。还必须管理从控制器收到的消息。

    控制器,必须通过串口,telnet套接字等启动并保持与真实设备的通信,并向设备发送/接收命令;从UI事件抛出的命令。因此,控制器有一个后台任务,用于保持设备的连接处于活动状态并监听其异步消息,前台任务监听UI命令以将相应的命令发送到设备。

    对于loooooooooooong问题感到抱歉,但我只想尽力解释它。如果有什么需要更多解释,请告诉我。

    再次感谢您的帮助!!

1 个答案:

答案 0 :(得分:1)

Web应用程序将允许您更密切地镜像当前的系统体系结构。在大多数控制系统(AMX,Crestron等)中,中央控制器处理所有核心逻辑和设备通信,然后分离的UI仅提供用户输入事件以及显示反馈。这与您通过Web应用程序服务器/客户端分离所实现的非常相似,并且实现起来应该相对简单。

话虽这么说,选择本机应用程序将使服务器端被删除,从而降低整体系统的复杂性。根据所使用的设备通信,这可能需要一些额外的硬件(RS-232到以太网网关等),以确保可以与所有设备保持通信。这种方法的主要缺点是整个系统将变得短暂。也就是说,您不再拥有跟踪所有设备状态的持久性组件(服务器端),并且可用于响应设备生成的输入。这可能不会对您的用例产生巨大影响,但是很多这些系统将主要由链接设备行为组成(即,来自IP摄像机的传入视频会议呼叫触发显示激活,信号路由,用户警报或动作感应触发更改到照明系统等)。此外,当您与用户打交道时,您需要首先收集系统状态,以便通过轮询设备显示适当的UI,这将影响UI的延迟。根据您的设备API,某些信息可能仅在设备操作期间通过异步事件显示。假设主机设备保持与各种系统组件的连接(不与网络断开连接或被关闭),上述部分内容将能够由RT中的后台任务处理,但是在允许的CPU使用,事件方面存在限制。调度和网络使用。这些也分为两类,具体取决于应用程序是否已放置在用户锁定屏幕上。进一步details on this can be found on MSDN