65.9K
CodeProject 正在变化。 阅读更多。
Home

ASP.NET TimeTracker 入门套件从 Windows 移植到 Linux (Race to Linux)

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.84/5 (9投票s)

2005年9月24日

5分钟阅读

viewsIcon

72938

downloadIcon

388

使用 Mainsoft 的 Grasshopper 将 ASP.NET TimeTracker 入门套件从 Windows 移植到 Linux

ASP.NET TimeTracker 入门套件从 Windows 移植到 Linux

引言

场景是将一个 ASP.NET 入门套件从 Windows 移植到 Linux,使用您选择的跨平台工具(如 Grasshopper、Mono、PHP、Macromedia 等)。我们可以使用现有的 SQL Server(ASP.NET TimeTracker 已经支持)或任何其他数据库,如 MySQL、PostgreSQL 等。

我的选择

在 4 个选项中,我决定选择 Grasshopper。尽管 Mono 也是一个非常好的选择。

TimeTracker 入门套件已被证明可以与 SQL Server 配合使用,我不想在它没坏的时候去修复它。我选择使用托管 SQL Server,而不是迁移到 MySQL、PostgreSQL 等。

该项目使用 SQL Server 2000 和 ASP.NET(可以使用 C#,也可以使用 VB.NET)。

问题所在

有些情况下,ASP.NET 项目必须迁移到 Linux。一些公司似乎遇到了这种情况。典型的解决方案是,他们获取 .NET 项目代码,然后将其转换为 Java 代码,以便可以在 Linux 上运行,如下所示。
Problem

解决方案(Grasshopper 从底层思考)

为每个项目将 .NET 代码转换为 Java 代码是一个解决方案。但是 Grasshopper 的开发者像蚱蜢一样思考(从地面开始寻找——蚱蜢通常在地面上)。他们的解决方案非常好。任何 .NET 代码都可以编译成 .NET 程序集,它依赖于 .NET 库。他们用 Java 编写了 .NET 的库。他们利用这些库直接将 .NET 代码转换为 Java 字节码,从而使其易于在 Linux 上运行。
Solution

Grasshopper 设置

  1. http://dev.mainsoft.com/Default.aspx?tabid=28 下载并安装 Grasshopper。Tomcat 作为 Grasshopper 安装的一部分进行安装。
  2. http://dev.mainsoft.com/Default.aspx?tabid=28 下载并安装“Directory Services”和“Drawing”的 Beta 组件文件。别忘了 使用 System.DirectoryServices 模块更新 Grasshopper 运行时。虽然它们是 Beta 版,但对我来说它们工作得相当好。这样做可以节省一些在构建过程中查找错误的时间。虽然 Directory Services 对此项目不是必需的,但可能对未来项目有用,因此您可以考虑下载它。

TimeTracker 入门套件设置

  1. http://www.asp.net/Default.aspx?tabindex=8&tabid=47 下载并安装 ASP.NET TimeTracker 入门套件。
  2. 在安装 TimeTracker 入门套件时,请选择默认选项。

我们的 Windows 到 Linux 移植

  1. 启动 Tomcat(转到“开始”-->“所有程序”-->“Visual MainWin for the J2EE(TM) platform”,然后单击“Start Tomcat”)。
  2. 打开 TimeTracker 入门套件 Visual Studio 解决方案(转到“开始”-->“所有程序”-->“ASP.NET 入门套件”-->“ASP.NET TimeTracker (CSVS)”,然后单击“ASP.NET TimeTracker Starter Kit (CSVS).sln”)。
  3. 右键单击 TimeTrackerCSVS 项目,然后单击“Generate J2EE project”。将打开一个向导,请按照以下步骤操作...
    • 单击“Next”按钮。
    • 选中“Save a copy of the original solution file”,然后单击“Finish”按钮。
    • Grasshopper 需要几分钟时间,请耐心等待完成。
  4. 一个新项目(TimeTrackerCSVS.J2EE)将被添加到当前解决方案中。
  5. 右键单击 TimeTrackerCSVS.J2EE 项目,然后单击“Build”,等待 Java 转换完成(大约一两分钟)。
  6. 现在您可能会注意到一些警告,会有一些小问题,我们将在下面讨论。一旦我们全部修复,我们将重新构建解决方案以使应用程序正常工作。

挑战(我喜欢称之为问题)

我们将解决 Windows 到 Linux 移植过程中出现的问题。实际上,我们在构建和测试时发现并解决了所有问题。对于这个项目,最简单的问题是构建时错误或警告。

  1. 幸运的是,没有构建时错误,但我们有 3 个警告。
    warning JC8000: Not Implemented Element 'customErrors'
    warning JC8000: Not Implemented Element 'sessionState'
    warning JC8000: Not Implemented Element 'pages'
    
    所有这些警告都来自 web.config 文件,原因是 customErrors、sessionState 和 pages 是不受支持的元素。解决方案是在 web.config 中注释掉它们。
  2. 现在一切似乎都已成功编译,当我运行应用程序时,我看到一个“JDBC”错误。我的连接字符串如下...
    <add key="ConnectionString" value="server=localhost;Trusted_Connection=true;database=TimeTracker" />
    
    问题似乎是我的入门套件安装在 web.config 的 ConnectionString 属性中使用了“localhost”作为服务器。我必须将其更改为“HOME”(我的家庭 PC)。然后我发现它在使用“Trusted connection”时遇到连接问题,因为我的 SQL Server 没有提供任何权限。我将连接字符串更改为使用用户名/密码而不是 Trusted connection,如下所示...
    <add key="ConnectionString" value="server=HOME;Trusted_Connection=true;database=TimeTracker;user id=sa;password=" />
    
    问题 #2 已修复。注意:似乎每次更改 web.config 中的 connectionString 时都必须重新构建,否则应用程序不会识别它。
  3. Global.asax.cs 文件的第 54 行有一个警告。这只是一个警告,警告不会造成损坏,但最好修复它。代码是…
    catch (Exception ex)
    {
    	Thread.CurrentThread.CurrentCulture = new CultureInfo("en-us");
    }
    
    删除或注释掉 (Exception ex) 以消除警告。结果代码应如下所示…
    catch // (Exception ex)
    {
    	Thread.CurrentThread.CurrentCulture = new CultureInfo("en-us");
    }
    
  4. 错误:它抱怨找不到 System.DirectoryServices。右键单击 TTWebCSVS.J2EE 项目,单击“Add Java Reference”,双击 System.DirectoryServices.jar,然后单击“OK”按钮。

打包和部署

  1. 右键单击 TTWebCSVS.J2EE 项目,然后单击“Deployment Packager”,grasshopper 将创建一个 WAR 文件(J2EE 部署文件)。由于大小限制,我没有包含部署包(您可以自己生成)。选择图像所示的选项...
    Creating the WAR file in Visual Studio .NET.
    我的项目有两个 WAR 文件(ASPNET.StarterKit.Reports.war 和 TTWebCSVS.J2EE.war)和一个 TTWebCSVS.J2EE.deployWar 文件,在 bin_Java 文件夹中。
  2. 可以使用 Tomcat 管理控制台上传和部署 WAR 文件来安装应用程序。根据您的项目所关联的应用程序服务器,Grasshopper 可以自行部署应用程序。
我可以在 IIS 中看到我的应用程序,地址是 https:///TTWebCSVS/Default.aspx,在 Tomcat 中地址是 https://:8080/TTWebCSVS/Default.aspx
© . All rights reserved.