C# WCF/RESTful与现有DAL

C# WCF/RESTful与现有DAL,c#,visual-studio-2010,wcf,rest,C#,Visual Studio 2010,Wcf,Rest,我正在将系统迁移到其2.0版。 它正在升级,所以我想建立一个WCF。这是我第一次与WCF合作,所以这可能是一种基本的,但是,任何提示都将非常感谢 现有系统由三层流程组成 基于WebForms的用户界面。 业务层。 达尔。 对于这个2.0版本,我希望实现的是将webforms抛在脑后,转向更面向mvc的界面。而且,正如我已经说过的,为了连接到我的数据库源,我们需要使用某种web服务 问题如下。我一直在调查和阅读wcf/restful,在Iservice.cs中,我可以看到接口及其DataContr

我正在将系统迁移到其2.0版。 它正在升级,所以我想建立一个WCF。这是我第一次与WCF合作,所以这可能是一种基本的,但是,任何提示都将非常感谢

现有系统由三层流程组成

基于WebForms的用户界面。 业务层。 达尔。 对于这个2.0版本,我希望实现的是将webforms抛在脑后,转向更面向mvc的界面。而且,正如我已经说过的,为了连接到我的数据库源,我们需要使用某种web服务

问题如下。我一直在调查和阅读wcf/restful,在Iservice.cs中,我可以看到接口及其DataContract及其DataMembers。令人头痛的是,我已经在其他层上定义了我的类。那么,这意味着什么呢?我是否也应该在WCF中逐个定义我的类?我不能引用我的DAL/对象层并使用那里可用的资源吗? 我应该在现有VS2010解决方案中添加另一个项目,还是不使用wcf


如果可以的话,我也很想获得一些关于最佳实践的信息。

更好的方法是,为WCF服务添加另一个单独的层,并向其提供DAL参考,同时也向BAL提供DAL参考。不要给任何一个WCF项目引用,因为您希望它是RESTFULL的,也就是说,只能通过HTTP、类似ftp的协议进行访问

在这里,Iservice.cs只是一个向外部世界公开方法的接口,它描述了什么样的数据、以什么形式以及在哪里可以找到这些数据。只需将该接口实现到WCF项目中的任何存储库类,它将进一步为您从DAL获取数据。业务层是唯一与服务层对话的层

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


如果我错了,请回复我。

如果REST确实是您所追求的,那么除了WCF之外,还有其他选择。大多数情况下,WCF通常都是多余的,所以考虑一下:

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


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

我想我没有那么清楚。我不打算使用asp.NETMVC。我打算转向一个更具mvc的系统。我们的想法是使用简单的html页面,基本上使用Ember和Ajax。我认为这将是一个更有效率和时间成本的计划,因为我对asp.net mvc不太精通。@DanielSh.-好吧,我还是坚持我的答案。出于好奇,你有没有因为什么特别的原因选择了Ember.js而不是KnockoutJS/BackboneJS/AngularJS?老实说,是把手。这是我比较熟悉的模板引擎,在阅读了你提到的每个插件之后,我认为Ember是一个逻辑选择。我是一个人,因为这是一家小公司,我所做的就是自学阅读和自己编码。到目前为止,我多少理解了余烬背后的逻辑,但我愿意尝试其他方式。谢谢,我同意卡尔的看法。如果基础系统很复杂,而新系统很简单,那么熟悉不会让你走得很远FWIW,我们的组织正在从WCF转向MVC,以提供我们的服务,即使是非MVC的服务。也许有悖常理,但这就是问题所在。@DanielSh。-太棒了,对你有好处。我以前没有用过灰烬,因为时间和发展已经淘汰,时间是不容易获得的。一个好的模板引擎肯定会让生活更轻松。:-祝你的项目好运。谢谢阿伦,如果我做对了,请告诉我。我需要创建我要使用的类,因为它们存在于我的BOL中,在我的WCF项目中的存储库文件中。因此,通过这种方式,它可以接受来自DAL/Business层的响应。ohkk..然后这种方法就可以了。