天生我才

常用链接

统计

最新评论

在WebLogic上运行ASP.NET应用程序比您想像的更容易!

  当WLDJ想让某人谈谈对Visual MainWin for J2EE的第一印象时,我们找到了互操作性方面的专家Laurence Moroney——他最近与人合著了一本主题为Web services安全性的书,即将出版,他还是纽约市内一家主要金融服务机构的高级架构师。在评估该产品的过程中,Laurence实际上与它背后的Mainsoft公司的关系变得越来越密切——最终,他成为该公司的一员。所以,本文应该是揭露了不少基本的内幕新闻。

  当WebLogic Workshop最初被构思出来并公之于众时,人们是将其作为相当流行的Visual Studio.NET开发环境的替代方案。比较而言,WebLogic Workshop非常易于使用,而且功能毫不逊色,因为它允许构建包括EJB在内的J2EE应用程序,其难度仅相当于一个VB程序员构建一个基于Windows的对象。

  然而,许多企业都拥有现成的.NET资产,使用C#进行构建,它们不得不使用Workshop把这些代码全部转换为Java,实际上放弃了本希望在WebLogic J2EE平台上运行的现有投资。这变成在平台之间进行迁移的巨大障碍,而且到现在为止仍然是这样。除此之外,WebLogic Workshop 8.1的一个实际优点在于它能够轻松构建EJB,轻松构建工作流应用程序,并把它们公开为服务。在前端,它拥有非常有用的页面流技术,可用于构建消费这些服务的用户界面,但是很多人会说,与Visual Studio.NET中的ASP.NET相比,它没有为前端Web应用程序带来更好的生产力。如果可以使用WebLogic来实现它最擅长的中间件EJB和工作流,而使用ASP.NET实现它最擅长的前端,这将会达到非常理想的效果。

  现在,出现了一种实现这种理想的方法:Mainsoft提供了Visual MainWin for J2EE产品(dev.mainsoft.com),它可以为此用途提供独有且具有革新性的解决方案。简而言之,该产品(又称为Grasshopper)采用由.NET生成的微软中间语言(Microsoft Intermediate Language,MSIL),并将其转换为Mono库的Java端口支持的Java字节码。这样就可以编译C#代码,并在J2EE应用服务器(比如Windows、Linux或所支持的其他操作系统上的WebLogic)上运行它们。这是一种很好的方法,既可以有效地利用Visual Studio.NET,又可以获得WebLogic的运行时可靠性和特性。

  本文将简要介绍它如何把现有的ASP.NET前端部署到WebLogic 8.1上,并与已经运行在该平台上的资产(比如EJB)协同工作。

工作方式
  隐藏在这种产品背后的理念十分简单,但是却十分有效。Mainsoft是Mono项目的主要捐献者,他们已经使用自己的工具把Mono源代码转换为Java。这提供了对命名空间的支持,以便可以在Java中调用ASP.NET命名空间。然后,它采用C#或VB.NET代码,并把由.NET框架编译器生成的MSIL交叉编译为Java字节码。这是一种纯Java的解决方案,运行在J2EE应用服务器之上。他们还支持使用Java Reference和EJB。

  开发应用程序时,只需创建一个ASP.NET应用程序,然后使用他们的向导将其转换为J2EE即可,或者在安装之后,使用Visual Studio.NET中新的项目类型创建一个C#/VB.NET for J2EE应用程序。

  余下的工作——开发、调试、代码完成、intellisense等等——均可以在Visual Studio.NET中顺利地进行。这非常有说服力,而且如果您或者您团队的任何成员使用这个开发环境,就会惊讶于它平滑的集成。在WebLogic上编写C#程序、运行和调试该程序时,您可以使用一些非常酷的功能,其容易程度就像在IIS上一样。

  起步——一个非常简单的例子
这第一个例子采用了一个标准的C# Web表单,给它添加了一个EJB引用,从而让它在WebLogic 8.1服务器之外也能够使用EJB,然后编译该Web表单,以便运行EJB。

  一开始,需要使用WebLogic Workshop创建一个简单的EJB,该EJB实现了以下方法:

/**
* @ejbgen:remote-method
*/
public String echoHelloWorld(String strIn)
{
return "Hello World, " + strIn;
} 

  它十分简单,仅仅返回了“Hello World”和调用者的名称。

  需要安装Visual MainWin for J2EE的企业版才能继续,因为只有企业版支持BEA WebLogic您可以在dev.mainsoft.com上找到此类信息。这个工具还有一个支持Tomcat的免费工具。下载并安装该工具之后,就可以运行Visual Studio.NET,然后创建一个如图1中所示的简单Web表单。

图1 一个简单的ASP.NET Web应用程序

  为EJB添加引用是非常简单的——如果惯于在Visual Studio.NET中使用Web服务,整个过程看起来将很熟悉。如果在solution explorer中右击References节点,您会注意到两个新项——Add Java Reference和Add EJB Reference。前者允许使用JAR文件,并在ASP.NET中使用它们;后者的功能也类似于此,只不过对象换成了EJB。如果将EJB(如上所述)部署到WebLogic上,而应用服务器正在运行,就可以使用Add EJB引用,而且将看到如图2中所示的对话框。

图2 添加一个EJB引用

  添加EJB引用有两种方法,一是使用通向包含它的JAR文件的路径,再就是使用JNDI。

  一旦创建了EJB引用,Visual Studio.NET和Visual MainWin for J2EE就会创建一个代理类,用于与该EJB引用对话。这将允许您使用Visual Studio.NET的所有高效特性(比如自动完成)进行J2EE编码。

  在先前创建的简单ASP.NET UI上,现在可以添加以下代码(在这段代码中,文本框应该称为txtName,而标签则应该称为lblResp):

localhost.ejbhwRemote myEjb = new localhost.ejbhwRemote();
string strTest = myEjb.echoHelloWorld(txtName.Text);
lblResp.Text = strTest; 

  使用WebLogic工作流
WebLogic Workshop 8.1最强大的功能之一就是强大的工作流引擎。这允许以图形化的方式设计工作流和流程,并将其与诸如Web service或EJB之类的外部组件连接起来。从许多方面来看,它是企业服务总线的基础。在这部分内容中,您将了解到如何使用Web Reference把ASP.NET用户界面与这些工作流联系起来,以及如何把工作流和用户界面部署到WebLogic上。

  首先,需要创建一个简单的工作流,如图3所示。需要把应用程序设置为运行在WebLogic中的一个集成域上,以便让它正常工作。

图3 一个示例工作流/流程项目

  这个例子十分简单,它使用了一个控件,该控件是一个对XMethods延迟股票报价Web服务的引用。该流程使用一个用户输入的参数,并将其发送给服务。当服务作出应答时,应答值被发送给客户端。WebLogic流程引擎支持非常复杂的交互,包括连接到Web Service、EJB和其他流程,以及决策树、事务等等。如果您不熟悉它,那么有必要对它做一番研究,而且它是一种功能十分强大的引擎。

  在这个例子中,流程是线形的,它使用了一个Client Request with Response节点。Request接受一个字符串,而Response则发出一个浮点数。其间使用了一个Control Send with Return(同步的)。这使用了来自XMethods的公开可访问的股票报价Web服务,而XMethods的WSDL位于:http://services.xmethods.net/soap/urn:xmethods-delayed-quotes.wsdl。执行这个流程时,就可以获得BEA测试用具,如图4所示。

图4 运行工作流/流程

  因为这个流程公开了一个WSDL端点,现在可以把整个流程当作Visual Studio.NET中的一个Web Reference来使用。如果您希望运行时环境是基于Java的,并且想利用现有的ASP.NET技能或资产,那么这实际上是很有用处的。

结束语
  许多拥有分别专攻.NET和Java的开发团队的公司,无论是小型的还是大型的,都面临着这样的典型部署环境场景:任务关键型应用程序运行在J2EE应用服务器上,而前端GUI应用程序运行在.NET上。Visual Studio.NET在生产力方面的突出优势使得它有利于开发这些Web应用程序。然而,当想在此类场景中使用EJB时,您可能会面临一个挑战,因为您不得不围绕它们构建一个包装器,或许以Web服务的形式出现,以便GUI层可以对其进行处理。在本文中,我们扫视了来自Mainsoft的Visual MainWin for J2EE产品,该产品允许您使用一种“取二者之长”的方法。通过使用该工具,可以让.NET开发人员在WebLogic 8.1上运行他们的代码,并直接使用EJB和WebLogic流程应用程序。它可以帮助您有效地利用您的开发人员,并精简部署过程。您可以拥有一个基于WebLogic的统一数据中心,而不是混合的数据中心,用于运行所有的应用程序——ASP.NET、Java和J2EE应用程序,这样有利于让管理过程变得更为轻松。它的优点如此突出,以至于有时让人难以相信。以我的经验来说,我发现它可以管理代码的自动部分,包括数据访问,而不用做太多改动。它是一种值得使用的工具,您可以从dev.mainsoft.com下载评估版本。

原文出处:Running ASP.NET Applications on WebLogic Easier Than You May Think! http://wldj.sys-con.com/read/138266.htm

posted on 2006-02-08 09:20 天生我才 阅读(1055) 评论(0)  编辑  收藏 所属分类: J2EE


只有注册用户登录后才能发表评论。


网站导航: