如何决定开发Web应用程序和桌面应用程序

时间:2017-07-25 01:46:25

标签: c# php wpf desktop-application web-application-project

我是一家制造公司的软件工程师实习生,他们希望我为公司开发一个应用程序。他们倾向于Web应用程序,但我想知道桌面应用程序是否更适合这项工作。因此,我一直在谷歌上搜索并查看stackoverflow,以了解桌面应用程序和Web应用程序之间的优缺点。以下基本上是我发现的:

快速免责声明,我有C#和WPF的背景,所以我有点偏颇,因为我开发桌面应用程序会更容易。我没有网络经验,因此在该领域我没有什么可以真正谈论的,这就是为什么我希望更多地了解这个应用程序是否更适合作为Web应用程序或桌面应用程序。我完全乐于学习Php和Web开发以扩展我的能力。我已经开始(有点)研究使用Phra7和Laravel框架开发Web应用程序。

桌面应用程序的优点:

  1. 通常比Web应用程序更快(假设Web应用程序将执行复杂的查询,计算等,而不仅仅是显示标记)
  2. GUI的开发更快
  3. 更安全,因为桌面应用程序默认是私有的。
  4. 有更多可用的控件可以为用户提供更丰富的交互式体验(或者至少,与基于Web的应用程序相比,这些控件在基于桌面的应用程序上更容易/更快地实现)
  5. 可以利用用户硬件。
  6. 桌面应用程序的缺点:

    1. 使用/部署受系统限制(但是,这应该不是问题,因为我们所有的系统都是基于Windows的。)
    2. 必须手动实施更新和安装。
    3. 如果每个客户端桌面都获得数据库连接,则不进行扩展 好,因为数据库负载很重。 (但是,这可能 情况并非如此,因为我们没有超过500名用户)。
    4. 网络应用程序的优点

      1. 跨平台(无需处理不同的操作系统),因此便于携带
      2. 开发快捷方便
      3. 部署很简单,因为更新是自动的和服务器端。
      4. 大型社区支持和可用框架。
      5. Web应用程序的缺点

        1. 开销较大(由于需要通过互联网传输数据,应用程序往往会变慢)。
        2. 需要处理不同的浏览器。 Javascript最有可能需要在一个网络平台(Chrome,Firefox等)上进行调整,并且在其他网络平台上并不完美。 (但是,这不是什么大不了的事)。
        3. 由于数据将公开,因此安全性是一个问题。
        4. 如果上述任何内容已过时(我发现的大多数帖子来自2011年或之前)或错误,请告知我们。此外,如果还有其他任何需要考虑的问题。

          转到应用程序说明....

          公司背景:我们每天都在构建和处理数十个不同的部件。对于每种类型的零件,在处理零件的X量之后,需要采集样品进行检查。因此,例如,部分Y每120分钟检查3次样品(因为机器通常在120分钟内完成处理X量)。然后将检查结果(测量数据)存储在数据库(MySQL数据库)中。

          申请表的总摘要:

          1. 查看我们设计的所有部件的原理图(我们将所有原理图作为pdf存储在网络驱动器上,因此这只是提取驱动器中请求的特定pdf并将其显示在应用程序上)。
          2. 查看/更新公司中所有计算机的状态(他们正在处理哪些部分,他们是在线/离线等)。某个用户(Inspector)将使用此应用程序更新机器状态/信息。然后另一个用户(运营商)将使用该应用程序查看状态。
          3. 监控部件检查。因此,对于每个正在处理的机器和部件,将有一个计时器,让操作员用户知道何时需要提交某个部件进行检查。部件提交后,检查员将收到检查部件的通知,在让应用程序知道他们完成检查后,计时器将重新启动,让操作员在下次需要提交部件时知道什么时候。
          4. 应用程序将根据从检查结果中获得的零件测量值计算统计数据(例如,Cpk值),并显示统计数据以及图表/图表。
          5. 我希望我能够清楚地解释所有这些。还有一些需要注意的事项,根据我的理解,用户不需要远程访问。该应用程序几乎只能在公司网站上使用。此外,该公司想要一个网络应用程序的原因是因为运营商将使用平板电脑的应用程序和他们获得的平板电脑是原始的Android。但是,他们决定转而使用Windows Surface平板电脑,因此现在可以使用WPF应用程序。

            说到这一切,我真的在寻找有经验的人推荐的路线。我还在上大学,请原谅我缺乏知识/经验。在决定Web应用程序和桌面应用程序之间,我还应该考虑什么?

            以下是我在思考这个主题时看到的一些页面:

            1. Advantages of web applications over desktop applications
            2. https://www.quora.com/How-much-different-is-it-to-build-a-web-application-vs-a-desktop-application
            3. https://www.quora.com/What-are-the-advantages-and-disadvantages-of-web-based-application-development-vs-desktop-application-development
            4. 有更多的stackoverflow页面,但上面列出的页面几乎包含了其他页面所说的所有内容。

              编辑:到目前为止,似乎网络应用程序正在取胜(根本不是我的想法,我真的很兴奋根据我所听到的内容开发一个网络应用程序)。是否有人宁愿做桌面应用程序?如果是这样,为什么?

2 个答案:

答案 0 :(得分:2)

我固有地反对网络应用。由于浏览器,他们很难做到正确,但他们通常不安全(尽管偶然)。平台糟透了(JavaScript和来自随机人/组织的bazillion库),#34;一切都是字符串"。我可以继续。

然而,无可否认,这是接触广大公众并允许不断更新的最佳平台。

在企业环境中,优势确实会消失,但并非完全消失。例如,通常可以通过存储所有.exe和amp;来实现更新。共享目录中的DLL。正如您所说,使用Windows平台可以更快,更便宜地构建更丰富的UI。

关于您的体系结构,在类似情况下对我有用的东西是拥有Windows前端,但也有无状态Web上的业务逻辑,数据访问(连接池)和处理的内容通过Web服务从UI访问的服务器(或两个)(您选择的协议 - 由于WCF和WSDL,我更喜欢SOAP,但很多人都赢了)。

这允许集中数据访问以及放置一次性批处理作业或计算然后可以共享的位置。它还有一个优点,如果你需要做一些非常密集的事情,并不是每台客户机都必须具备这种能力。

你的情况似乎适合这种模式,但没有很多内幕知识,它主要是意见,但可能需要考虑。

答案 1 :(得分:2)

听起来像聚集或类似的公司工作进程监控给我。

如果我必须构建这个应用程序,那么首先我会搜索并做一些研究,如果你想要的功能是可能的,并且很容易使用你将使用的编程语言进行开发

例如,如果我选择使用基于web的开发,那么:

  

开销较大(由于需要,应用程序往往会变慢   通过互联网传输数据。)

您可以使用内部网和良好规格的服务器计算机

  

需要处理不同的浏览器。 Javascript很可能需要   被调整为在一个网络平台(Chrome,Firefox等)上完美   对其他人来说并不完美。 (但是,这并不是那么大   交易)。

然后设置标准浏览器以便在您的工作场所工作

  

查看我们设计的所有零件的原理图(我们存储所有零件   原理图作为网络驱动器上的pdf,所以这只是拉动   从驱动器请求的特定pdf并将其显示在上面   申请)。

您可以使用pdf查看器插件(如pdfjs或类似的插件

将pdf上传到服务器并在浏览器中查看
  

查看/更新公司所有机器的状态(哪些部分   他们正在努力,他们是在线/离线等)。某个用户   (Inspector)将使用此应用程序更新机器   状态/信息。然后另一个用户(运营商)将使用   申请查看状态

机器有ip吗? 我可以使用ping功能来确定机器在线或不在线以完成任务吗? 如果没有那么检查员检查机器的时间表是什么? 当然,检查员可以登录系统,然后使用Web应用程序手动更新机器状态

  

监控零件检查。因此,对于每台机器和部件都是如此   经过处理后,会有一个计时器让操作员用户知道何时   某些部分需要提交检查。部分   提交后,检查员将收到检查通知   部分,并让应用程序知道他们完成了   检查时,计时器将重新启动,让操作员知道什么时候   下次他们需要提交一份。

这听起来像调度机制以确保质量,您可以使用jquery制作计时器并使用ajax向操作员发送有关需要检查的特定部分的特定数据的通知

  

应用程序将计算统计数据(例如,Cpk   从检验结果中获得的零件测量值)   并显示统计数据和图表/图表。

这个取决于你的统计公式,你可以使用highchart插件来存储这个

确保您选择的编程语言能够完成您想要的任务之后的第二个是设计数据库结构

引用Linus Torvalds:

"Bad programmers worry about the code. Good programmers worry about data structures and their relationships."

祝你有个美好的一天,祝你好好决定,为了避免将来的发展问题给予一些好的思考