WCF和N层架构

3
我正在开发一个应用程序,该应用程序使用n层应用程序架构进行设计。该应用程序是在.NET平台上开发的,利用了C#,VB.NEt,Framework 3.5,Dataset,WCF,asp.net update panel,JavaScript,Josn和第三方工具。 我的当前建议布局如下: 演示层->业务逻辑->WCF->DAL->数据访问
重点是: 上述布局是构建SOA系统的正确方法吗?
像往常一样,非常感谢您的建议。
3个回答

8
这取决于您的定义,参见Fowler的评论
通常来说,为了从SOA中获得最大的好处,您的服务应该被设计成可被多个用户重复使用。这意味着将业务逻辑放置在WCF层下面。然后,您可以拥有一个Silverlight客户端、WPF客户端等,它们都使用相同的服务和业务逻辑。
更改您的方案如下:
多个演示层 -> WCF -> 业务逻辑 -> 数据访问层 -> 数据访问

我可以使用Oracle应用程序或Java应用程序来共享相同的服务和业务逻辑吗? - kathy
是的,Kathy。该架构允许您从几乎任何客户端使用服务。您只需要确保您的服务是使用其他系统可以理解的格式创建的。我唯一担心的是.NET数据集如何进行序列化。 - Greg Levenhagen
实际上,我正在使用一个数据集和一个数据表来从数据库中获取存储过程的数据。这会引起任何问题吗? - kathy
你只需要确保 DataSet/DataTable 序列化的方式符合你的要求。我认为使用一个简单的 DataSet 和一个 DataTable 应该没有问题,但你需要在你的环境中进行检查。我是在提醒当 DataSet 有多个带关系的 DataTables 的情况下要小心。 - Greg Levenhagen

4
看起来这可能是正确的,尽管我会在您的Pres和Biz层之间加上WCF。此外,不要害怕为您的SOA架构设置非线性路径(例如,具有从您的N-Tier路径侧面出现的“EmailService”和“WeatherDataService”等侧面服务)。显然,WeatherDataService将来自于您的DAL侧面,但EmailService可能来自您的Biz层侧面。 以下是一些很棒的链接:
- 使用WCF进行N-Tiers - WCF和Datasets与N-Tiers - N-Tier with WCF,MVC和LINQ

0

你的服务应该是业务操作,而不是数据操作。更好的设计版本应该是:展示层 -> WCF -> 业务逻辑 -> 数据访问。

N层/分层是一个相当过时的概念。它总是会崩溃。相反,把你的软件看作是一组交互服务。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接