浅谈Visual Studio中如何选择本地项目与WEB项目

来源:IT专家网  作者:Susan
浅谈Visual Studio中如何选择本地项目与WEB项目
摘要:一般在软件开发中可以选择本地项目模型或者WEB项目模型。在Visual Studio平台中开发人员可以根据自己的需要选择合适的开发模型。有时候,选择多了,也会给用户带来不少的麻烦。因此程序开发人员就需要在本地项目模型与WEB项目模型之间进行抉择。到底该采用那种…

所以在考查采用本地项目模型还是WEB项目模型,下一个需要考虑的问题就是工作负荷的分摊问题。WEB项目模型提供基于服务器的策略。也就是说,绝大部分操作都是在服务器上运行完成。客户只是提交命令、接收显示结果而已。在这种模型下,对客户端的要求不高,但是要求服务器有比较高的配置。特别是当客户端数量比较多的时候,可能需要通过服务器负载均衡等手段来分摊服务器的工作负荷。相反,如果服务器的配置不是很高,服务器的资源比较有限的情况下,则笔者建议最好采用本地项目模型。在这种模型下,大部分工作可以再客户端机器上完成,而不需要消耗宝贵的服务器时间。当用户的并发数量越多,这种差异会越来越明显。WEB项目模型下的应用程序,会随着用户并发访问数量的增多性能逐渐下降。而在本地项目模型下,几乎感受不到用户数量增加对应用软件性能的影响。

另外笔者要提醒的是,即使在本地项目模型中,有时候程序开发人员也会将一些比较复杂的作业提交到服务器上运行。这么设计主要是因为这些作业可能运行的时间比较长,从而对客户端的时候造成负面的影响。为此可以将这些作业放置到服务器上运行。如神州数码的易飞ERP就有这方面的考虑。在这个ERP系统中有库存补仓报表。当产品信息比较多的时候,这张报表运算量会变得很多,可能需要几个小时才能够完成。在这个软件中,就可以在客户端上打开这个作业,并将其递交给服务器运行。当服务器运算完毕后会直接将结果传递给客户端。这个原理就跟WEB项目工作模型的原理类似。在本地项目模型应用程序开发中,这是一个比较常用的、可以明显提高客户端性能的技巧。

三、 其他的一些细节考虑。

在实际工作中,除了要考虑以上两个因素之外,可能还需要考虑如下几个细节问题。

一是需要注意在开发时的差异。如在开发时生成模型的时候,如果采用WEB项目模型,则应用程序代码作为DLL进行编译并且只在服务器上运行代码。在客户端上一般只能够看到运行的结果,无法追踪中其中间的过程。而如果采用本地项目模型的话,则必须在客户端与服务器端同时进行编译和运行代码。所以从生成模型的角度来讲,WEB项目模型要相对简单许多。

二是需要注意平台的兼容性。一般情况下,WEB项目模型的兼容性要比本地项目好。因为在客户端中不需要安装任何文件,只需要通过浏览器来进行访问即可。所以如果企业有跨平台的需求,如需要在非微软操作系统运行应用软件,则采用WEB项目模型能够提供比较高的兼容性。虽然采用本地项目模型也可以在多个平台上运行,但是往往需要为不同的平台编译不同的应用程序。这在后续客户端的维护上会带来一定的麻烦。如需要更新客户端时,需要同时更新两个客户端软件。

三是需要考虑用户的数量。WEB项目模型的特点是处理工作主要在服务器上完成。所以当用户的并发数量比较多的时候,服务器很可能成为应用程序的性能瓶颈。同时因为WEB项目模型不需要在客户端上安装软件。当客户端需要更新升级时,也不需要在客户端上进行操作。为此当用户数量比较多的时候,这个工作量就会降低。所以对于WEB项目模型来说,用户的数量可能是一个矛盾体。用户数量一多,其可能会影响应用服务器的性能(如这会使得用户的并发访问数量增多),但是同时与本地项目模型相比,其客户端的维护工作量会降低。所以在性能与工作量上用户需要进行均衡。通常情况下,当用户的数量比较多,特别其地理位置比较分散的情况下,笔者建议采用WEB项目模型。由于地理位置比较分散,维护客户端将会非常的困难。而性能问题的话,则可以通过添加服务器,通过负载均衡来改善应用程序的性能。而到用户比较集中,如都是在同一幢办公楼或者同一个厂区的话,则可以考虑通过采用本地项目模型来提高应用程序的性能。因为位置比较近,维护起来相对方便。

从以上的分析中不难看出,谁也不能够说WEB项目模型好,或者说本地项目模型好。针对不同的应用环境,往往会得出完全相反的结果。所以程序开发人员还是需要根据企业与用户的实际情况来进行判断。不过总的来说,笔者还是推荐使用WEB项目模型。即在同等条件下,或者说有非常肯定的原因需要采用本地项目模型之外,以WEB项目模型优先。毕竟相对来说,在跨平台的兼容性上与软件更新与升级方面WEB项目模型有比较大的优势。

【相关文章】好搜一下
使用Visual Studio 2010空白解决方案的三个理由

使用Visual Studio 2010空白

在Visual Studio 2010(包括以前的版本中)都提供了很多现成的解决…