C#客户端应用程序与Web应用程序

时间:2010-02-23 15:01:46

标签: c#

我主要开发C#web类型的应用程序,但最近我们工程组中的某个人想要将这个相当简单的基于C#客户端的应用程序重新创建到基于C#web的应用程序。好吧,我发现所有的应用程序都是创建一个网络文件夹结构(一个父目录,里面有一些子目录)。

然后我提到了使这个Web应用程序有什么好处,它所做的就是创建一些网络文件夹结构。好吧,他提到他不想创建客户端应用程序,并说有50个用户安装此客户端应用程序。他希望它在一个中心位置。所以我想你不能只创建一个C#应用程序并将其扔到网络上并让多个人打开它并使用它吗?

这可能吗?我不是客户端开发人员,所以我认为逻辑上这是可能的,但后来我认为如果它是一个网络应用程序,那么打开此应用程序的一个用户会锁定其他用户?我个人不喜欢网络化这个应用程序(基于网络)的想法,对我而言,成为一个网络应用程序真的没有意义。

思想/想法?

更多信息(编辑)

嗯,我想我应该包含更多信息。文件夹是通过一些数据库数据创建的。所以它不能是批处理文件或脚本。最终用户必须从下拉列表中选择一些条目,该值将成为父文件夹名称的值。

8 个答案:

答案 0 :(得分:7)

您是否考虑使用ClickOnce部署当前应用作为创建基于网络的应用的替代方案?这样可以大大简化安装。

另一个选项就是将此应用程序放在网络共享上,让用户从共享中运行。

答案 1 :(得分:2)

发现错误后你会怎么做?

当您拥有新功能时,您会怎么做?

使用Web应用程序,您无需重新部署到所有(已知)客户端,而是将其部署到一个中心位置。

答案 2 :(得分:1)

我对从网络共享运行.Net应用程序的问题有一些经验,虽然我确信有解决方案。 (我从来不需要费心去寻找那些解决方案。)大多数情况下,它们都是权限问题,在我看来,我需要编辑安全策略才能使它工作,这看起来像是一个黑客,所以我只是学会了更好地评估要求并避免这种情况。

然而,当我阅读这个问题时,我想知道.net是否适合这项工作?在我看来,这更像是一个可以在批处理文件的脚本中更容易处理的问题。

我讨厌编写脚本和批处理文件,因为它不是那么有趣,我宁愿使用.Net来处理所有事情,但是有一个适合这项工作的正确工具。 (我尽量避免让.net成为我的锤子,因为并非所有问题都是指甲。)

根据其他信息添加

啊..这有所不同。然后一个脚本仍然是可行的,但如果它是我,我会做一个客户端应用程序只是因为它更容易但我想绕过不想安装到这样的多个客户端。

黑客警告 - 这有效,但我可能会因为建议这样的黑客而受到打击。

由于.Net客户端应用程序通常不需要安装程序,并且可以通过xcopy部署复制,因此我已经完全按照您的情况执行此操作:

  • 将应用程序编写为控制台应用程序
  • 将网络共享上运行所需的所有文件放在文件夹中。
  • 写一个批处理文件
    • 在客户端的PC上创建一个文件夹(覆盖任何现有内容)
    • 将服务器上文件夹的内容复制到客户端的PC
    • 运行可执行文件。

这使得安装和更新以最简单的方式成为非问题。 Eaiser比ClickOnce更好(这很好,但对于这样的应用来说会有点过分)

批处理文件的示例:

C:\
cd \
md MyApp
copy \\SomeServer\SomeShare\*.* myapp
cd myapp
call myApp.exe

答案 3 :(得分:1)

对于这类事情,编写一个可以完成这项工作的简单Powershell脚本实际上会更好。

答案 4 :(得分:1)

我建议使用网络应用。除了oded的好处之外。这是一些。

为50位用户部署软件对于IT支持来说并不困难,但向50位用户发布新的Web应用程序将更加容易。此外,如果他们要为50个用户升级操作系统,那么在部署之前必须对您的应用进行彻底测试。这是您的IT支持必须要做的另一个额外的工作。

当您的客户端应用升级后,必须再次向所有用户推出。此外,升级应该检查任何个性化,然后保留它和它太多额外的工作。在Web应用程序中,您可以在服务器上进行升级。

使用.net功能,您可以非常轻松地管理安全性。

答案 5 :(得分:0)

是的 - 你的朋友是个疯子......

正如你所建议的那样,他不想只是将它放在网络上,而是想在他的机器上安装一个网络服务器,然后在网络服务器上安装你的应用程序,然后在本地调用它?

让你的朋友远离C#编译器 - 或任何其他人来......他们不喜欢他......

答案 6 :(得分:0)

你会使用WinForms还是WPF?我想如果你做WPF,你只需要将你的应用设为WPF Browser Application,我认为这就像是两者的混合。

答案 7 :(得分:0)

在我看来,如果只是创建Dir结构,你可以使用AutoIt v3。使用AutoIt v3,您可以编译.exe,无需外部库/安装。

使用脚本非常简单,只需使用DirCreate或类似内容即可。我想如果它只是简单的脚本,它甚至可能是10班轮。

  

创建目录/文件夹   DirCreate(“路径”)

     

参数:path要创建的目录的路径。

     

返回值   成功:退货1.
  失败:如果创建目录时出错,则返回0。   备注

     

此函数还将创建“path”中给出的所有父目录(如果它们尚不存在)。

使用C#就是这样做太过分了。您创建此脚本,将其编译为.exe放在网络共享上,用户将自己启动(或通过登录脚本或gpo)。多人可以从共享启动脚本而不会影响任何内容。

当然你也可以使用C#,它可以帮助多人启动它,但更简单,更简洁的方法是通过AutoIt v3中的脚本来实现,甚至是VBS,如果你更信任它。

Edit:
刚看到你的编辑,它涉及数据库。 AutoIt能够使用DB(也取决于哪个),但我想它比DirCreate更难:-)无论如何我是PRO WinForms,C#中的控制台应用程序然后是一个WEB APP。

多人可以从共享中立即启动它,并且没有问题。