我正在编写一个相当简单的MVC3应用程序,它允许用户检索和修改WCF服务所拥有的一些配置数据。配置数据不会经常更改,但需要由用户维护。 一旦用户对配置感到满意,他们将从UI或计划执行VB脚本启动一些处理。
我对WCF很新,甚至比MVC3更新,但我想在服务RESTful中进行所有通信。这是一件好事吗?
我一直计划从MVC控制器执行服务通信。这将使HTTP Get请求检索当前配置,并使HTTP Post应用修改后的配置。我还使用Get请求启动处理。
有人可以提供一个例子(或指向我的方向)我应该如何做到这一点吗?
答案 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);
}