我检查了很多多层应用程序指南,没有人谈到如何使用wcf来托管图层。我计划制作一个测试项目并且生成一个表示层/业务层/数据层以及业务对象。由EF(数据库优先)自动生成的类。
问题是,在现实世界中,业务层和数据层是否都可以通过wcf主机(即2个主机)访问?或者只有一位主持人?
数据和业务层之间1 1在业务层和演示层之间
答案 0 :(得分:1)
为了清楚起见,
一个图层可能只是另一个项目,但在同一个框中。
Tier是代码在不同服务器上的物理分离。
无论您是使用图层还是层,或者它们的混合取决于需求。当我在一家同时处理付款信息的医疗公司工作时,他们正在为高水平的PCI合规性而拍摄,所以我们有各种各样的层次。
我的[括号]是物理障碍,例如服务器和路由器。
[Front end -> MVC] -> [Firewall] -> [WCF -> Business layer servers] -> [Firewall] -> [WCF -> Database access] -> [Databases]
他们还有另一组层来处理PCI数据,特别是从业务层分支出来的。
这对您的情况是否理想?这实际上取决于项目的要求。如果您的数据不需要高度安全,那么您可以坚持使用图层。如果您计划拥有一些前端组件,如移动平台和网站,那么您可以拍摄..
[Front end -> MVC] -> [WCF/WebAPI -> Business Layer -> Data access Layer] -> [Database]
这将允许您在共享公共业务层和数据时使用多个前端。同样,这完全取决于您的需求。我希望这会有所帮助。
编辑:安全性不是层级,可访问性和性能的唯一原因。如果您是一个重型攻击应用程序,具有多个层与服务器场使用它们将允许一些优势。如果您的业务层位于30台服务器的服务器场中,您将拥有宽带宽和更强的处理能力。这些层可以分布在全国或全世界,并具有规则设置,以便用户访问最近的服务器。在开发层时需要考虑很多因素,从层开始将允许您在以后需要时将它们物理地分成层。如果你很好地设计代码,移动就是将附加服务层WCF / WebAPI添加到层,以允许它访问分离的层,然后更新调用端以直接使用服务而不是程序集。
答案 1 :(得分:0)
通常,您只托管业务逻辑。如果您同时托管业务和数据访问层,则每个操作都有3个网络跃点:演示到业务到数据访问数据库。通过网络进行的每次传输都需要一些时间,因此您运行的跳数越少,应用程序的执行效果就越好。
从架构的角度来看,最重要的是将应用程序的功能分层,每个层都用于特定目的(关注点分离)。但是,基础结构视图是不同的,因此这并不意味着每个层都必须托管在服务器上。如果您有一个小型Intranet应用程序,则可能只需将应用程序分层并在UI过程中运行所有这些应用程序即可。如果需求发生变化,您可以稍后以不同的方式布置图层。