我正在将系统迁移到其2.0版本。
它正在升级,所以我想构建一个WCF
。这是我第一次使用WCF,所以这可能是基本的,但是,任何抬头都会非常感激。
现有系统由3层进程组成。
对于这个2.0版本,我想要实现的是将webforms放在后面,转向更加面向mvc的界面。并且,正如我已经说过的,使用某种Web服务来连接到我的数据库源。
问题如下。我一直在调查和阅读wcf/restful
,在Iservice.cs中,我可以看到界面,DataContract
和DataMembers
。抓头部分是我已经在其他层上定义了我的类。那么,这意味着什么呢?我应该逐个在WCF
内定义我的类吗?我不能只引用我的DAL/Object
图层并使用那里的可用资源吗?
我应该在现有的VS2010解决方案中添加另一个项目,还是应该单独保留wcf?
如果愿意的话,我也希望得到一些关于最佳实践的意见。
答案 0 :(得分:2)
如果REST真的是你所追求的,那么除了WCF之外还有其他选择。对于大多数情况,WCF通常都是过度杀伤,所以请考虑一下:
ASP.NET Web API
ServiceStack
这两个选项都适用于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引用仅适用于实体的元数据。
如果我错了,请回复我。