【问题标题】:Creating and Consuming WCF using MVC3使用 MVC3 创建和使用 WCF
【发布时间】:2012-03-02 05:34:57
【问题描述】:

我有一个空的 MVC3 项目。我没有添加控制器或任何视图。我在 MVC 项目中添加的唯一内容是 Model->Employee.cs

我在这个类中有这些属性:

    [Display(Description="The admin systems group number")]
    public string GroupNumber { get; set; }


    [Display(Description = "The Tax ID for the group (No Dashes)")]
    public string  TaxId { get; set; }

现在我想通过 WCF 服务添加该员工的记录。我在同一个解决方案中创建了另一个项目,名为:EmployeeHost

这些是我在 IService1.cs 中的 ServiceContract 和 DataContract:

    namespace EmployeeHost
{
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        string GetData(int value);

        [OperationContract]
        Employee AddEmployee(Employee emp);

        [OperationContract]
        Employee UpdateEmployee(Employee emp);
    }

    [DataContract]
    public class Employee
    {
        [DataMember]
        public string GroupNumber { get; set; }


        [DataMember]
        public string TaxId { get; set; }


    }
}

这就是我的界面中的内容:Service1.cs

 namespace EmployeeHost
{
    public class Service1 : IService1
    {
        public string GetData(int value)
        {
            return string.Format("You entered: {0}", value);
        }

       public void AddEmployee(Employee emp)
        {
           //Add something to DB for emp.
        }

        public void UpdateEmployee (Employee emp)
       {
            //Update something for employee emp.
       }
    }
}

这是我目前所拥有的。现在我想使用 DBContext (EF) 添加一条记录。我的下一个流程应该是什么?

【问题讨论】:

  • 只是一个想法,但是 WCF 层和 MVC 应用程序会部署在同一个生产服务器中吗?因为如果他们愿意,您不需要同时使用 WCF 和 MVC:只需 a) 创建一个标准模型/业务/存储库类,它将处理 EF 调用,因此避免创建 WCF 服务,或者 b) 使用 WCF REST 和 JSON,并通过 javascript 代码直接从客户端调用 WCF。
  • 我需要通过 WCF 添加。

标签: c# wcf asp.net-mvc-3 model-view-controller c#-4.0


【解决方案1】:

更简单的方法是:

WCF:

  1. AddEmployee 调用插入EmployeeHost.Employee 所需的任何EF 代码。

MVC:

  1. 创建一个用于显示表单页面的视图。
  2. 在控制器上添加一个用于显示视图的操作。
  3. 在控制器上添加一个操作,用于处理视图中发布的数据。
  4. 通过首先将 Model.Employee 转换为 EmployeeHost.Employee,使最后一个操作调用 WCF。

同样,正如我在评论中所说,恕我直言,这没有多大意义 - 除非 WCF 是远程服务,部署在与 Web 应用程序不同的服务器中。

【讨论】:

  • 我无法像这样在我的服务中添加:public class Service1 : IService1, DbContext
  • @Raj 为 DbContext 创建一个不同的类,不应该那样使用 WCF 服务...抱歉,我会尝试查找有关 EF 的更多信息,我以为您已经知道如何处理那个。 :)
  • 你看过ScottGu's blog吗?您要尝试的基本上是使用 MVC 的代码优先 EF 方法。请记住,您还有一层:不要让控制器操作调用 EF 实体,而是让它调用 WCF,然后 WCF 调用 EF 实体...
  • 感谢 Rseena。我去看看。
猜你喜欢
  • 1970-01-01
  • 2013-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多