使用服务而不是组件有啥优点和缺点?
Posted
技术标签:
【中文标题】使用服务而不是组件有啥优点和缺点?【英文标题】:What is the advantages and disadvantages of using services over components?使用服务而不是组件有什么优点和缺点? 【发布时间】:2010-11-01 16:49:00 【问题描述】:从过去几个月开始,我一直在从事最新的点网框架中的项目。
我觉得在最新的 dot net 版本中,“服务”比组件更受鼓励。对吗?
我在 Silver Light 中看到(我是 Silver Light 的初学者)所有 DB 层操作都暴露为服务。不知道现在组件程序也有吗?
有什么优势?如果所有层都公开为服务而不是 DLLS,性能会怎样?
请通过对这个主题的一些了解,我应该从哪里开始正确理解这个概念?
谢谢
SC
【问题讨论】:
好吧,在 Silverlight 的情况下,您的 UI/应用程序在浏览器内外的客户端计算机上运行,而您的业务逻辑在远程服务器上。使用点击在一起的组件无法真正做到这一点 - 服务(跨越机器边界)确实是到达这里的唯一途径。 【参考方案1】:这确实与面向服务的架构有关——这种架构已经流行了一段时间并且非常流行。
这个想法是,不同的操作彼此分离,因此它们可以被重用和修改,而无需重新编译使用它的应用程序。无需在任何地方修改和复制 DLL 中的一段代码,而是可以部署一个服务来代表特定处理或信息源的单一访问点。
假设您有一个信用卡验证组件。您可以编写此代码并将其编译为 DLL,然后开始将其包含在您的所有应用程序中。除非您注意到错误或 CC 验证规则的更改,否则这没有任何问题。或者,也许您想升级它以对照黑名单进行检查。如果不重新编译使用它的应用程序,您将无法执行任何这些操作。
但是,如果您的信用卡验证作为一项服务公开,您可以进行更改并部署到一个位置。如果签名相同(相同的参数和响应),应用程序甚至不必知道它已更改。
使用服务而不是组件的另一个优点是服务可以托管在任何地方。它们可以在本地服务器上,也可以在世界的另一端。
话虽如此,您应该根据具体情况决定架构。虽然信用卡验证是服务何时有用的一个很好的例子,但提供服务来呈现 html 控件并没有多大意义。
【讨论】:
【参考方案2】:需要考虑的其他事项——仅仅因为功能作为“服务”公开并不意味着它必须托管在某个地方或作为网络服务公开。
您可以直接在内存中访问服务。
将相关功能公开为服务更多的是关于应用程序各个部分之间的交互。它没有说明您如何部署/访问这些部分。
【讨论】:
【参考方案3】:“跨语言”兼容性是另一个优势。您可以在 C#.net 中编写服务,也可以从 Java 访问该服务。因此,重用超出了编程语言的使用范围。
有什么优势?怎么样呢 如果所有层都是 公开为服务而不是 DLLS?
我会在这里注意这一点。 “所有层”是什么意思?应用层,例如业务和数据访问层??我怀疑这可能有用(当然这取决于您的上下文),但通常服务是可以在许多不同上下文中重用的东西。一个示例可以是用于验证 Fiscal 代码的服务。然后,您将从应用程序的业务层调用此服务。我无法想象将业务层公开为单独的服务而将数据访问层公开为另一个单独的服务的情况。通常它们对于您正在开发的应用程序非常具体。可能是您有一个应用程序,例如可以通过 Web 访问(作为 Web 应用程序),并且通过 Web 服务有另一个入口点,其他应用程序可以使用(某种 API)。这是有道理的,但是您不会直接公开您的业务层,而是创建某种“网关”,即您的 Web 服务(委托给您的业务逻辑类的轻量级外观)。
【讨论】:
以上是关于使用服务而不是组件有啥优点和缺点?的主要内容,如果未能解决你的问题,请参考以下文章