我知道有一些关于开发网络应用程序和winRT应用程序之间的差异,利弊的文章,但我想问你关于我个人情况的专业观点,因为在阅读了其中一些论文,我仍然充满怀疑。
我正在寻找开发具有以下要求的桌面应用的工具:
考虑到这一点,我不确定是否要专注于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问题感到抱歉,但我只想尽力解释它。如果有什么需要更多解释,请告诉我。
再次感谢您的帮助!!
答案 0 :(得分:1)
Web应用程序将允许您更密切地镜像当前的系统体系结构。在大多数控制系统(AMX,Crestron等)中,中央控制器处理所有核心逻辑和设备通信,然后分离的UI仅提供用户输入事件以及显示反馈。这与您通过Web应用程序服务器/客户端分离所实现的非常相似,并且实现起来应该相对简单。
话虽这么说,选择本机应用程序将使服务器端被删除,从而降低整体系统的复杂性。根据所使用的设备通信,这可能需要一些额外的硬件(RS-232到以太网网关等),以确保可以与所有设备保持通信。这种方法的主要缺点是整个系统将变得短暂。也就是说,您不再拥有跟踪所有设备状态的持久性组件(服务器端),并且可用于响应设备生成的输入。这可能不会对您的用例产生巨大影响,但是很多这些系统将主要由链接设备行为组成(即,来自IP摄像机的传入视频会议呼叫触发显示激活,信号路由,用户警报或动作感应触发更改到照明系统等)。此外,当您与用户打交道时,您需要首先收集系统状态,以便通过轮询设备显示适当的UI,这将影响UI的延迟。根据您的设备API,某些信息可能仅在设备操作期间通过异步事件显示。假设主机设备保持与各种系统组件的连接(不与网络断开连接或被关闭),上述部分内容将能够由RT中的后台任务处理,但是在允许的CPU使用,事件方面存在限制。调度和网络使用。这些也分为两类,具体取决于应用程序是否已放置在用户锁定屏幕上。进一步details on this can be found on MSDN。