2011-04-10 60 views
2

有一些教我们直接一些ORM与数据库例如使用这么多的教程,但在现实生活中我不记得一个大的项目,该项目直接与数据库,而不是与服务工作,所以这些教程的数量对我来说似乎很陌生。
直接连接的应用程序在数据库和应用程序之间的数据转换的速度实实在在的好处,他们不具备的功能出现,因为服务层的限制(例如让我们实体框架和WCF数据服务(即使用相同的实体数据模型本身))。另一方面,服务解决方案更加安全和灵活,这就是为什么我(我认为许多其他程序员)通常选择它来构建具有某种通用业务逻辑的大型应用程序......但是!有时输速度可达10倍!这只是令人伤心的,应用程序的响应速度不如以往。
所以我要问的问题是:你可以分享自己构建企业应用程序,而与网络/服务层的经验,当它是一个好的选择吗?构建企业应用

回答

6

企业应用!= n层应用程序。这意味着您可以编写企业应用程序而无需创建单独的物理中间层(业务逻辑)。创建单独的中间层必须始终是需求的一部分,因为它会带来很多额外的复杂性=大量额外成本。

单独的中间层通常的要求是:

  1. 安全 - 有时Web服务器是在DMZ和中间层必须在安全的网络
  2. 可重用性 - 你想在一个以上的应用程序使用中间层,这也导致SOA要求
  3. 可扩展性 - 中间层可以更复杂,所以它可能是有用的独立扩展它在前端层。如果您想在多个应用程序中使用中间层,您还必须能够独立扩展它。可扩展性要求通常基于性能和可用性要求。

如果您没有任何这样的要求,您可以制作多层应用程序,其中前端业务逻辑和同一业务逻辑位于同一服务器上的相同进程中。

+1

非常好的答案。我通常不需要跨越多个应用程序的相同业务层。但安全..这是一个问题。客户端通常使用数据库关闭服务器,客户端计算机必须使用VPN才能直接访问。通过服务,我们可以将一台服务器放入VPN中,并通过“开放”网络与客户端计算机联系。安全始终影响速度。呃..客户需要更多的响应! Ok..ill尝试询问这样的解决方案合理的条件(如服务服务器和DB一个和良好的服务服务器之间良好的渠道与所有客户合作) – 0x49D1 2011-04-10 10:42:10

+0

但是,这不是一个很好的解决方案:保护自己免受客户的变化和未来的需求 - 构建n层应用程序(确定需要更多时间)?几乎所有客户都希望继续一些项目并添加一些功能 - 这可能会导致将2层更改为3或更多..似乎灵活性几乎总是一个好主意。 – 0x49D1 2011-04-10 10:47:58

+1

@nihi:这取决于您的开发方法和客户的真实世界体验。灵活性是一个好主意,但同时你不应该开发客户现在不想要的东西(敏捷学校),因为在同一时间你可以发现它是浪费,因为没有进一步的变化需要三层应用。 – 2011-04-10 10:54:18