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

编码 .NET 2.0;构建 Java;运行 Linux

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2007 年 7 月 5 日

10分钟阅读

viewsIcon

21864

我们都了解并喜爱 Microsoft Visual Studio,但您知道吗,您可以用它来构建可在 Linux 和其他支持 Java EE 的平台上运行的服务器和 Web 应用程序?以下是操作方法……

这是我们对 The Code Project 赞助商的展示性评测。这些评测旨在为您提供我们认为对开发人员有用且有价值的产品和服务信息。

引言


Click for enlarged image

图 1:利用您的 Visual Studio 技能为 Linux 创建应用程序。

您的公司可能刚刚与一家 Java 公司合并,或者您的公司可能希望在整个企业中运行您广受欢迎的 ASP.NET 2.0 应用程序,而该企业恰好运行在 Java Enterprise Edition (EE) 上。事实上,您可能只是对 Linux 平台感到好奇。您有哪些选择?您可能会决定学习 Java 和 JSF 框架,或者 PHP,或者 Ruby,并准备重写现有应用程序。

一个引人注目的替代方案是使用 Grasshopper 2.0 和 Visual Studio 开发环境,将您的代码和技能扩展到 Linux 和其他支持 Java 的平台。使用 Grasshopper,您可以继续使用 Visual Studio(您首选的 IDE),并保持高开发效率。事实上,从 Visual Studio 的角度来看,为 Linux 开发与为 Windows 开发非常相似。是的,有一些微小的差异,但它们都不涉及您尚未使用过的技能。例如,使用 Grasshopper 创建 Java 应用程序时,您实际上会使用 Visual C# for Java EE 或 Visual Basic for JavaEE 项目类型中的四种项目模板之一:类库、ASP.NET Web 服务、ASP.NET Web 应用程序或控制台应用程序。这些项目的工作方式与它们的 .NET 对应项目非常相似,因此您真正要做的就是选择正确的项目类型。您的应用程序将不再使用内置的 Web 服务器,而是依赖 Grasshopper 提供的 Tomcat 服务器,但当您想测试应用程序时,仍然单击“调试”。能够随时构建一个在 Linux 下运行的应用程序是不是很棒?您可以使用 Visual Studio IDE 创建一个测试应用程序,如图 1 所示,并在 10 分钟内将其运行在 SUSE Linux 上!

Click for enlarged image

图 2。使用 Grasshopper 轻松部署您的应用程序。

它真的非常简单

您使用 Mainsoft 随 Grasshopper 安装提供的本地 Tomcat 副本在本地使用 Grasshopper 测试您的应用程序。执行此本地测试后,您将设置项目属性以生成 Web 应用程序归档 (WAR) 文件(它位于 Grasshopper 为您添加到 Visual Studio 的 Java 选项卡上,如图 2 所示),并像往常一样选择“构建”命令以创建应用程序包。您将获得一个完全符合 Java 平台规范的应用程序,并且可以作为自包含部署包在任何支持 Java 的服务器上使用。

此时,您可以将 WAR 文件交给管理员,管理员使用 Tomcat Web Admin 控制台(也称为 Manager)来部署 WAR 文件。现在,该应用程序可供所有人从 Linux 服务器使用。就这么简单。请注意,您没有更改任何 ASP.NET 编码实践。您像往常一样编写代码,让 Grasshopper 处理细节。

使用 Grasshopper 可以做什么

以下是一些更有趣的事实和功能,它们使使用 Visual Studio IDE 和 Grasshopper 创建新的 Java EE 应用程序或在 Java 服务器上运行现有ASP.NET 应用程序变得容易。

利用所有 ASP.NET 2.0 生产力功能

Grasshopper 2.0 包含在您的应用程序中使用 ASP.NET 2.0 功能所需的所有功能。这个新的 ASP.NET 版本意味着您现在可以创建依赖于主页、主题和皮肤、站点导航、登录控件、数据绑定控件以及 ASP.NET 2.0 安全性和个性化(通过 Grasshopper 纯 Java 成员资格、角色和配置文件提供程序,无需您进行任何设置工作)等省时功能的 Web 应用程序。您还可以使用所有新的 ASP.NET 2.0 控件,WebParts 除外。

除了 ASP.NET 2.0 功能之外,您还会发现 Grasshopper 现在完全支持新的 C# 2.0 语言功能,包括部分类、迭代器、yield、可空类型、匿名方法和泛型。这些功能通过降低复杂性并使代码重用显著更容易来改善您的编程体验。例如,由于您可以访问泛型,因此您只需为任何支持的数据类型定义一次类,而不是通过使用重写来处理数据类型。使用泛型不仅可以减少编码时间;它还可以减少错误,因为该类获得了强数据类型支持。

使用基于角色的安全性保护您的应用程序

在当今充满黑客的计算环境中,创建安全的应用程序至关重要。幸运的是,Grasshopper 将开箱即用的 ASP.NET 2.0 身份验证和基于角色的安全性带到 Java 运行时。无需任何特殊的编码工作,您就可以使用基于开源 Apache Derby [链接到:http://db.apache.org/derby](IBM 推广的纯 Java 嵌入式数据库)的默认 Grasshopper 成员资格和角色提供程序。Grasshopper 完成所有必要的工作,以在 Java EE 运行时环境中强制执行您在 ASP.NET 2.0 应用程序中描述的安全性。

Click for enlarged image

图 3。创建您需要的应用程序类型,使迁移变得容易。

依赖您所期望的所有项目支持

Grasshopper 提供了许多项目模板,您可以使用它们将应用程序迁移到 Linux,如图 3 所示。请注意,您可以构建类库、Web 应用程序、Web 服务或控制台应用程序。所有这些应用程序类型都提供了您创建企业级应用程序所需的支持,弥合了您拥有的资源与另一个组织的资源之间的差距。







Click for enlarged image

图 4:现在您可以从应用程序中访问任何您想要的 Java 代码。

在 C# 或 VB 项目中利用 Java 库

Grasshopper 不仅仅提供从 Visual Studio 到 Java 平台的应用程序代码单向传输。大多数合并都涉及让两个不同的应用程序协同工作,以便企业可以处理两个前公司的所有数据。在许多情况下,您会发现需要使用现有的 Java 类库。

您确实需要使用与本地 Windows 资源略有不同的过程来与 Java 资源进行交互。右键单击“解决方案资源管理器”中的“引用”文件夹,然后从上下文菜单中选择“添加 Java 引用”。Grasshopper 会为您添加此条目。您将看到一个“添加 Java 引用”对话框,如图 4 所示。无论您需要使用的 Java 代码位于何处,您都可以将其添加到您的应用程序中。事实上,您可以使用此技术将常见的 Java 库(如 log4J 或 Lucene)添加到测试应用程序中。

像往常一样调试您的应用程序

调试您的应用程序可能是一个问题,因为假设 Java 等效项不会使用标准的 Visual Studio 调试器。幸运的是,Grasshopper 也使调试无缝衔接。您像往常一样按 F5 启动应用程序。Visual Studio IDE 依赖于相同的用户界面来设置断点和查看变量数据。事实上,在调试时您根本不会看到任何差异。当您拥有所需的源代码时,您甚至可以调试您的 Java 代码。特别重要的是,一旦您的 .NET 应用程序部署到您的 Java 服务器中,您还可以通过将 Visual Studio 调试器接口附加到您的远程 Tomcat 服务器 VM 来调试您的 .NET 应用程序。因此,您可以在发生错误的服务上执行调试,而不仅仅在开发环境中。

使用常见数据库

一个组织由其拥有的数据定义。事实上,您的系统存储和管理的数据远比系统中的其他任何东西都更有价值。因此,开发人员有充分的理由担心 ASP.NET 应用程序的数据库支持。Grasshopper 为 System.Data 类提供全面支持。您可以轻松使用 Microsoft SQL Server、Oracle、IBM DB2、Sybase、Derby、PostgreSQL 或 MySQL。请记住,您可以使用 Grasshopper 使用任何 Java 库,这意味着如果您在此列表中没有找到特定的数据库,您总是可以使用所需的 Java 库访问它。

Grasshopper ADO.NET 可以运行在任何支持 Java 数据库连接 (JDBC) 的数据库上。JDBC 是 Java 中与 Windows 中的开放数据库连接 (ODBC) 相对应的替代方案。如果数据库具有 JDBC 驱动程序,您可以使用 Grasshopper ADO.NET API 访问它。您只需要连接字符串中的驱动程序类属性,如产品文档中所述。Sun 网站提供了大量数据库的JDBC 驱动程序,包括:SQL Server、Oracle、DB2、Cloudscape、PostgreSQL 和任何支持 JDBC 的数据库。

值得注意的是,JDBC 实际上提供了比 ODBC 更多的免费下载驱动程序,这个简单的差异可能为您提供了一个很好的理由,让您依赖 JDBC 而不是 ODBC 来满足您的数据库需求!即使仅仅为了确保您可以访问所有可能的数据库而无需担心驱动程序,您也可能希望使用 Grasshopper!

在命令行执行任务

许多开发人员更喜欢在命令行工作,而不是依赖 IDE 为他们执行任务。在命令行工作的需求对于无人值守的夜间构建尤为重要。Grasshopper 通过支持 MSBuild 实用程序让您按照自己的方式工作。您所需要做的就是将 .NET Framework 添加到您的 PATH 环境变量中,并创建一个 VMW_HOME 环境变量以指向您系统上的 Grasshopper 文件夹。事实上,Grasshopper 提供了一个命令提示符,它设置了这些值,您可以在 Grasshopper Version 2.0 程序组中找到它。

Grasshopper 如何工作?

现在,您一定想知道 Grasshopper 是如何完成所有这些事情的。这看起来像是魔法,但 Mainsoft 实际上是基于非常扎实的计算机科学。Grasshopper 交叉编译器获取 Visual Studio 编译器生成的中间语言 (IL) 文件,并将其转换为 Java 字节码。不再像往常一样使用公共语言运行时 (CLR) 执行代码,您现在可以使用 Linux 机器上的 Java 虚拟机 (JVM) 执行它。

当然,您的应用程序 IL 文件不包含运行它所需的所有内容。如果您查看系统上的 \WINDOWS\assembly 文件夹,您会看到 .NET 赖以使您的应用程序工作的大量程序集。Grasshopper 提供了与服务器端应用程序相关的程序集的 Java 字节码等效项,以便您的应用程序在 Linux 下运行时找到它所需的内容。就您的应用程序而言,没有任何改变——它使用的是通常会使用的相同资源。

值得注意的是,Grasshopper 使用标准化技术执行所有所谓的魔法。Mainsoft 是Visual Studio 行业合作伙伴 (VSIP) 计划的一部分,该计划确保跨平台技术满足附加组件的最高要求。所有附加功能均符合ECMA 标准 335。Grasshopper 的 C# 部分符合ECMA 标准 334 要求。Grasshopper 生成的所有 Java 字节码均符合 Java 虚拟机 (JVM) 规范。

结论

如您所见,Grasshopper 是一款基于标准的产品,易于使用,并大大降低了在 Linux 和其他支持 Java 的平台上转换 .NET 项目的复杂性。通过下载软件来了解 Grasshopper 如何为您服务。在开始安装之前,请务必获取免费的激活密钥。您只需要注册并开始使用!

© . All rights reserved.