Java .NET-vs EJB

Java .NET-vs EJB,java,.net,ejb,Java,.net,Ejb,在.net中,EJB(企业Java Beans)的可比技术是什么?许多EJB功能在.net中已经是本机的(即数据库事务),但也有企业服务名称空间提供了许多功能。WCF在.net 3.5中是最相似的,只要您不尝试使用CMP。虽然它允许SOAP类型的东西使用服务端点,但它也允许二进制远程处理。人们可以很容易地认为Spring.NET Spring正在成为Java方面的标准,或者是JavaEE/EJB之外的标准,或者是完全取代它。Spring中的许多概念与JavaEE/EJB非常相似,但只是更好。显然

在.net中,EJB(企业Java Beans)的可比技术是什么?

许多EJB功能在.net中已经是本机的(即数据库事务),但也有企业服务名称空间提供了许多功能。

WCF在.net 3.5中是最相似的,只要您不尝试使用CMP。虽然它允许SOAP类型的东西使用服务端点,但它也允许二进制远程处理。

人们可以很容易地认为Spring.NET

Spring正在成为Java方面的标准,或者是JavaEE/EJB之外的标准,或者是完全取代它。Spring中的许多概念与JavaEE/EJB非常相似,但只是更好。显然,Spring.NET是它的.NET实现

除此之外,我无法提出任何其他建议,因为我已经多年没有积极使用.NET了……

术语的定义很重要 进行比较时,术语的定义很重要。EJB是一种 组件模型。它定义了持久性、事务、远程处理、激活和 在内部运行的组件的安全功能(可能还有其他功能) 集装箱

您可以在.NET中查看类似的技术,如果您是这样的话 后-组件模型的技术能力

另一方面,一些人使用“EJB”作为一个术语来松散地引用 J2EE(或JavaEE?)。在这种情况下,它不仅指组件模型,还指 到一组通常与服务器端关联的相关Java技术 应用程序,包括组件模型。这甚至可能包括工具集,当然是 仅与零部件模型相切。如果是这样的话 相比之下,它更适合描述为“J2EE vs.NET”

还有一些人可能会使用更模糊的定义来定义EJB 包括web服务功能、REST/XML通信或 其他严格超出JavaEE或EJB范围的内容。换句话说,当他们说“将EJB与.NET进行比较”时,他们真正的意思是将“服务器端Java平台与服务器端.NET进行比较”。在我看来,后者比比较组件模型更为实际

在进行比较时,重要的是要弄清楚到底是什么 正在进行比较

EJB——组件模型 在EJB中定义一个对象并将其标记为会话Bean或实体 豆子。还有消息驱动Bean的后期添加。三 EJB中组件的风格。会话Bean如何获得激活 在资源紧张时启动并可能“钝化” 服务器/容器上的争用。SB还可以获得安全性和安全性 远程服务

基本思想是定义一个对象,然后将属性附加到该对象, 通过部署描述符或代码内属性, 在Java中为其调用的模拟

最接近EJB会话Bean的是.NET对象。在任何.NET中 应用程序中,您可以使用事务属性标记对象,只需 像某人一样。如果愿意,可以使用.NET使其远程化 远程处理和更多属性。在COM+之外,没有钝化技术 .NET。NET只是忽略了池作为一个普遍有趣的事情 在内存对象中,因此没有像EJB那样在.NET中进行激活/钝化的方法


侧边栏1:这不完全正确。在.NET中,工作流功能提供了一种工具,使长期运行的活动能够并且将被钝化和重新激活。但是,工作流是与“服务器端对象”或“服务”不同的隐喻,后者是大多数使用.NET的服务器端应用程序体系结构的中心点


侧边栏2:过去,服务器端平台的设计者认为,为了提高效率,每个人都希望使用对象池。现在,事实证明JVM和.NET CLR在创建对象方面速度足够快,内存也足够充足,因此,一般来说,对象池没有实际用途。对于一般情况来说,它不再有趣,尽管它仍然为昂贵的对象(如数据库连接)带来了良好的回报


与EJB一样,在.NET中,您可以附加安全性 属性,以允许对象根据 呼叫者的身份或其他“证据”

实体豆是另一种动物。而持久性和远程处理可以 结合起来,在大多数实用指南中,建议 实体bean不公开远程接口。相反,该建议要求 会话bean调用实体bean。让我们来考虑一下EB 持久对象

在.NET中,这里有许多替代方案。linqtosql给出了一个例子 选项-使用ORM和持久性服务。ADO.NET实体 框架可能是一种更具可比性的技术。当然还有其他的 NET中的服务-事务安全和远程处理等-也可以 应用于使用ADO.NET实体框架或LINQ的对象

另一方面,这取决于您的重点在EJB中的位置 伞,可能有更好的可比性。如果您主要将EJB用于 远程处理——随着REST、SOAP和其他轻量级应用的出现 据我所知,几乎没有人再这样做了-然后 在.NET中比较好的是WCF

最后,与EJBMDB类似的是.NET排队组件

EJB远程处理 所有这些类型的类似EJB的远程接口都有一些共同的方面。实际上,大多数架构师建议不要分发EJB。换句话说,他们不鼓励人们使用人们经常讨论的远程处理方面。相反,servlet应该调用本地EJB,而不是调用远程机器上的EJB。这是:不要分发对象

另一方面,有时你必须这样做。
WCF是.NET中的通信框架,是.NET中与EJB远程处理最相似的方面。但他们