使用现有DAL的WCF / RESTful

时间:2013-11-05 12:29:54

标签: c# visual-studio-2010 wcf rest

我正在将系统迁移到其2.0版本。 它正在升级,所以我想构建一个WCF。这是我第一次使用WCF,所以这可能是基本的,但是,任何抬头都会非常感激。

现有系统由3层进程组成。

  1. 基于WebForms的UI。
  2. 业务层。
  3. DAL。
  4. 对于这个2.0版本,我想要实现的是将webforms放在后面,转向更加面向mvc的界面。并且,正如我已经说过的,使用某种Web服务来连接到我的数据库源。

    问题如下。我一直在调查和阅读wcf/restful,在Iservice.cs中,我可以看到界面,DataContractDataMembers。抓头部分是我已经在其他层上定义了我的类。那么,这意味着什么呢?我应该逐个在WCF内定义我的类吗?我不能只引用我的DAL/Object图层并使用那里的可用资源吗? 我应该在现有的VS2010解决方案中添加另一个项目,还是应该单独保留wcf?

    如果愿意的话,我也希望得到一些关于最佳实践的意见。

2 个答案:

答案 0 :(得分:2)

如果REST真的是你所追求的,那么除了WCF之外还有其他选择。对于大多数情况,WCF通常都是过度杀伤,所以请考虑一下:

  1. ASP.NET Web API
  2. ServiceStack
  3. 这两个选项都适用于ASP.NET MVC和ASP.NET WebForms,尽管大多数ASP.NET Web API示例都将与ASP.NET MVC一起使用,这就是您希望在其中使用它的场景听起来像。

    您可以将ASP.NET Web API或ServiceStack视为架构中的另一层,并将其作为业务或数据访问层的引用,作为解决方案中的单独项目。

答案 1 :(得分:1)

更好的方法是,为WCF服务添加另一个单独的层,给它DAL引用,同时也给BAL提供DAL引用。并且不要将WCF项目引用给任何一个,因为你希望它是RESTFULL(即只能通过HTTP访问,ftp类协议)

这里Iservice.cs只是将方法暴露给外部世界的界面,它描述了什么数据,以什么形式和在哪里找到它们。只需将该接口实现到WCF项目中的任何存储库类,这将进一步从DAL获取数据。商务层是唯一将与服务层对话的层。

向BAL添加DAL引用仅适用于实体的元数据。

如果我错了,请回复我。