想在桌面上使用我正在进行的asp.net网站

时间:2014-07-28 09:24:43

标签: c# asp.net visual-studio-2010 web-applications sql-server-express

我是asp.net的新手。事实上我知道直到约会是通过网络:) 我已经建立了一个工作正常的网站。但现在由于某些原因我必须将其转换为桌面应用程序。 我希望他们两个都在工作。 我的问题: a)我如何将其转换为桌面应用程序? b)我将使用哪个服务器,因为我已经在goaddy服务器上有一个网站? c)我是否必须在每个窗口PC上安装桌面应用程序才能使用?还有其他选择吗? d)我希望我的桌面应用程序与网站的工作方式非常相似..是否有像离线网站这样的东西?

任何帮助将不胜感激。 提前谢谢你:)

3 个答案:

答案 0 :(得分:0)

您需要重构一些代码,以便在asp.net Web应用程序和winforms桌面应用程序之间共享它 - 您可能希望核心项目在两者之间共享代码。您的桌面应用程序可以与Web应用程序联系相同的数据库,但您可能需要考虑桌面客户端与Web上的数据库之间的连接数和延迟。您需要在PC上安装它以使应用程序正常工作,如果您在网络上,您的系统管理员可以通过组策略来执行此操作。

有一些东西,如本地存储等,可以与网站进行离线/间歇性连接,我认为这不会对您的情况有所帮助。

答案 1 :(得分:0)

a)您需要学习WinForms。网站(或者我认为它将是一个Web应用程序)与WinForm应用程序的构建方式截然不同。

b)您的Web应用程序将继续使用GoDaddy; c)您需要在将使用WinForms版本的Web应用程序的每个桌面上安装它。

b)+ c)但如果您正确构建WinForms应用程序,则可以使用GoDaddy数据库作为数据源。

d)网络应用可以脱机。在办公环境中,您可能拥有可用作Web服务器的中央服务器。您可以在那里安装您的Web应用程序,并且知道您可以访问它的中央服务器的名称,例如

http://myinternalserver:8080/mywebapp/

或通过IP地址

http://192.168.5.255/mywebapp/

这样,如果您的外部互联网连接中断,Web应用程序仍然可以工作(除非您有外部依赖关系)。如果你走这条路,有许多不同的方法可以让它发挥作用。

在我个人看来,您最好在办公室环境中使用1台服务器来托管Web应用程序,以便办公室中的所有桌面计算机都可以访问。它比在其他地方拥有托管帐户便宜。这可以让您更好地控制,更快速的更新,无需担心硬件问题。您可以挂钩所有服务器的安全性和登录功能。基本上它比WinForms更酷,更有趣:D

希望这有帮助。

答案 2 :(得分:0)

我解决了这个问题:

创建一个在托盘中运行(或最小化)的小型winforms应用程序。
从mono-project获取组件Mono.WebServer。
将其添加为Web应用程序的引用,将localcopy设置为true。

将您的网络应用程序放入文件夹c:\ whatever \ YourWebApplication
在winforms应用程序中引用相同版本的mono.webserver。
让应用程序从端口开始> 10000(因此不需要管理员权限)
使用system.diagnostics.process.start打开您选择的浏览器:http:// localhost:yourport(您可以使用xcopy google-chrome并在没有管理员权限的情况下使用它)
并将Web应用程序用作桌面应用程序。
如果使用Firebird,则可以在Web上使用Firebird,并在桌面上嵌入Firebird。
如果您使用MySQL,您可以使用MariaDb(只需将zip-deploy复制到您选择的文件夹中,然后在启动应用程序之前启动数据库)。
如果您使用PostgreSQL,则可以在启动应用程序之前使用Postgresql Portable和xcopy deploy。


如果你使用SQL-Server,你就搞砸了,因为SQL-Server express需要安装......

public static void Main (string[] args)
{
    int Port=18080;

    string path=@"c:\wherever\YourWebApplication";

    XSPWebSource websource=new XSPWebSource(IPAddress.Any,Port);

    ApplicationServer WebAppServer=new ApplicationServer(websource);

    //"[[hostname:]port:]VPath:realpath"

    string cmdLine=Port+":/:"+path;

    WebAppServer.AddApplicationsFromCommandLine(cmdLine);

    WebAppServer.Start(true);

    Console.WriteLine("Mono.WebServer running. Press enter to exit...");

    System.Diagnostics.Process.Start("iexplore http:// localhost /:" + Port.ToString());

    Console.ReadLine();

    WebAppServer.Stop();
}

如果您希望数据位于中央服务器上,则需要使用Web服务(JSON / JSONP)和http-post来更新和检索数据。但是,这不是很离线。

以任何方式,避免不惜一切代价维护2个单独的应用程序。

您还可以在离线版和在线版之间同步dbs。 您将需要一个同步两者之间的数据(和架构)的Web服务。
如果在表中使用GUID(PostgreSQL中的uuids),则可以在离线数据库中将新条目与在线数据库相对轻松地同步。

删除或更改条目时,问题就开始了 您需要处理“如果在您同步并离线后其他人改变了会发生什么情况,并且您在同一行中更改了相同的字段,但是更改了不同的值?”
你如何检测删除?
在您离线后可能添加了一个新行,因此您不能再删除不在您的offline-db中的任何行...

一个简单的解决方案是:
阻止改变&在离线模式下删除