我应该如何使用MVC3使用WCF服务

时间:2011-11-14 16:58:02

标签: wcf asp.net-mvc-3 rest

我正在编写一个相当简单的MVC3应用程序,它允许用户检索和修改WCF服务所拥有的一些配置数据。配置数据不会经常更改,但需要由用户维护。 一旦用户对配置感到满意,他们将从UI或计划执行VB脚本启动一些处理。

我对WCF很新,甚至比MVC3更新,但我想在服务RESTful中进行所有通信。这是一件好事吗?

我一直计划从MVC控制器执行服务通信。这将使HTTP Get请求检索当前配置,并使HTTP Post应用修改后的配置。我还使用Get请求启动处理。

有人可以提供一个例子(或指向我的方向)我应该如何做到这一点吗?

3 个答案:

答案 0 :(得分:1)

请按照以下链接获取一些示例代码,以构建RESTful WCF服务以及客户端如何访问该服务。

创建RESTful服务的链接:here

创建使用RESTful服务的.NET客户端的链接:here

希望这些信息可以帮助你。

答案 1 :(得分:1)

如果您是Web服务的所有者,您可以直接在mvc项目中引用服务的实现,并在没有Web引用的情况下使用它。你可以这样写:

// example of ws
public class Service1 : IService1
 {
        public string GetData( int value )
        {
            return string.Format( "You entered: {0}", value );
        }

        public CompositeType GetDataUsingDataContract( CompositeType composite )
        {
            if( composite == null )
            {
                throw new ArgumentNullException( "composite" );
            }
            if( composite.BoolValue )
            {
                composite.StringValue += "Suffix";
            }
            return composite;
        }
 }

// example of mvc action
public class HomeController : Controller
 {
        public ActionResult Index()
        {
            IService1 service = new Service1();

            service.GetDataUsingDataContract(....)

            ViewBag.Message = "Welcome to ASP.NET MVC!";

            return View();
        }
 }

答案 2 :(得分:1)

我发现的最简单的答案是here:,使用渠道工厂。

我仍然不知道这是否是最好的方式,但它让我的代码看起来足够干净。以下是我的控制器的示例。

    public ActionResult Index()
    {
        SettingsModel config = null;

        // Set up a channel factory to use the webHTTPBinding
        using (WebChannelFactory<IChangeService> serviceChannel = 
            new WebChannelFactory<IChangeService>(new Uri(baseServiceUrl )))
        {
            IChangeService channel = serviceChannel.CreateChannel();
            config = channel.GetSysConfig();
        }

        ViewBag.Message = "Service Configuration";

        return View(config);
    }
相关问题