2012-03-21 78 views
1

我非常喜欢MVC4发布的新功能Web API。用于Web开发和可能的移动的MVC4 Web API

我目前正在研究一个Web应用程序,我希望将其扩展到移动应用程序。

使用此功能的最佳方式是什么?

  1. 计划它像有没有Web API,并且当我准备开发移动应用程序,然后使用此功能(复制和粘贴控制器功能然后编辑返回值和错误处理价值?

  2. 或者我应该从Web开发的开始使用Web API使用JavaScript调用函数和处理errros这个apporach的问题是我对JS不太熟悉,并且代码看起来不太干净Views)

An Ÿ意见?

谢谢

回答

2

恕我直言,Web API不应被视为特定于移动应用程序开发的功能。它是一个工具,可让您轻松地通过HTTP公开RESTful API。这些API可以从桌面应用程序,Web应用程序,移动应用程序等中使用......每种类型的应用程序的接口当然都是使用特定的框架和工具开发的(WPF,ASP.NET/MVC,WP7/iOS/Android,...)。

Web API只允许您以可互操作的方式公开您的业务数据和服务,以便不同的客户端可以使用它们。

+0

这是非常有意义的,...是的...知道了。但展望未来,WebAPIController如何为移动设备,rss提供什么 - 控制器如何影响传统MVC View控制器的存在(或不存在)? MVC Views应该被视为WebAPI提供的另一种可能的格式吗?很多 – justSteve 2012-03-22 18:10:02

0

我宁愿使用第二种方法。

在一开始,我也认为.ajax调用可能会混淆视图。 (没有人喜欢在视图中添加很长的<script>部分。)但是在问我关于Stackoverflow的问题后,我很高兴在这里找到一些专家为这些javascript使用一些“代码隐藏”。

的做法是:

创建一个单独的JS文件夹来存储所有的“代码隐藏” js文件。 (默认Scripts文件夹只包含第三方包,比如knockout.jsjquery.js和等)

对于每个视图,生成.js文件,像home.index.jsform.add.js等只要按照统一的规则。将会创建很多js文件。最棒的是在MVC4中,我们可以将这个文件夹下的所有.js文件合并在一起,并生成一个缩小的,组合的单个文件,并在_Layout视图中只加载一次。

做到这一点的方法是:

在_layout视图,<head>部分:

<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/JavaScripts/js")" type="text/javascript"></script> 

Global.asaxApplication_Start,注册捆绑:

var bundle = new Bundle("~/JavaScripts/js", new JsMinify()); 
     bundle.AddDirectory("~/JavaScripts", "*.js", true); 
     BundleTable.Bundles.Add(bundle); 
     BundleTable.Bundles.EnableDefaultBundles(); 
     //BundleTable.Bundles.RegisterTemplateBundles(); 

那么你是好走。视图仍然干净。所有的.js文件都是有组织的。并且不需要在每个单独的视图上导入不同的.js文件。

Leaning JS不是问题。由于它可能是唯一的客户端编程语言,现在我们有必要学习新的东西。我觉得现在更容易,因为我们有jQuery。现在是升级我们的知识的时候了。我对使用这些新工具可以完成的事情感到高兴和兴奋。