如何在MVC3(razor)模型中使用WCF参考?

时间:2011-06-07 14:23:08

标签: asp.net-mvc wcf asp.net-mvc-3 wcf-client service-reference

我有一个WCF Service和一个MVC3(razor)网站。我的所有数据都来自WCF Service。 我有我的控制器和视图,但是,如何使用具有此结构的模型?

现在,我使用DataController从服务中调用我的方法,然后在控制器中调用它们。

更好的解决方案?

3 个答案:

答案 0 :(得分:2)

您想从模型中访问WCF服务吗?哎哟...

坚持控制器。控制器与服务交互,模型不与服务交互。

答案 1 :(得分:1)

1.您创建了对您的服务的Web引用 - 并且实体是根据服务数据合同生成的。这个实体是你的模型。

2.如果您需要通过某些ASP.NET MVC特定属性来装饰它 - 您可以创建具有相同属性的其他实体,创建从服务获取数据的存储库并将其转换为您的实体并仅提供所需的方法 - 这很好实践。

3.另外,如果你进行一些转换并有一些业务规则 - 你可以创建业务逻辑类,调用存储库方法,检查和执行业务规则。但是,如果您只显示来自服务的数据 - 请勿创建逻辑业务类。

4.您从控制器调用逻辑/存储库方法并将其传递给视图。 View仅负责显示模型,永远不会从中调用服务!

答案 2 :(得分:0)

更好的解决方案 - 创建服务和存储库类。例如,如果您获得了Person模型,则创建PersonRepository类,该类将执行与调用wcf服务和获取数据相关的所有工作。 PersonService类将用作业务逻辑容器,当需要来自存储库的某些数据时,它将引用Repository类。在这种情况下,您的模型,业务逻辑和wcf服务存储库之间会有很大的松散耦合。 PersonService类将用作验证器,业务逻辑容器等