如果决定使用WebAPI创建用于各种客户端的服务层.构建Web客户端的最佳方法是什么?
由于WebAPI对Web友好,因此可以使用javascript直接从客户端使用它.但是我担心这会很快变得混乱,并且javascript不是最简单的单元测试技术.
另一种方法是使用HttpClient类从MVC控制器调用REST服务.这是一种有效的方法吗?
我想上面的两种方法可以合并,但我担心这会变得混乱.你是否同意采用一种方法或另一种方法更好?
对不起,我看过很多关于是否使用WebAPI或MVC的帖子,但没有关于两者的结合.
思考?
我正在尝试使用MVVM Light框架实现Metro风格的Grouped Items页面,遵循此博客文章中的示例,但使用ViewModelLocator提供可混合性:
http://mikaelkoskinen.net/post/winrt-tutorial-mvvm-gridview-semanticzoom.aspx
我有这个工作,不幸的是网格本身没有出现在设计师(这是我使用MVVM光的点).我没有问题绑定标题所以我知道viewmodel绑定正确.
有什么想法吗?
我有一个需要很长时间才能初始化的对象。因此我能够在应用程序启动时开始初始化。任何对类上方法的后续调用都需要有一个延迟机制来等待类完成初始化。
我有几个潜在的解决方案,但我对它们中的任何一个都不完全满意。第一个在 while 循环中使用 Task.Delay,第二个使用 SemaphoreSlim 但涉及一些不必要的阻塞。我觉得这一定是一个相当普遍的要求,有人可以就如何最好地管理这个问题提供一些建议吗?
哦顺便说一句,这是一个 Metro 应用程序,所以我们的 API 有限
这是伪代码:
public class ExposeSomeInterestingItems
{
private InitialisationState _initialised;
private readonly SemaphoreSlim _waiter =
new SemaphoreSlim(0);
public async Task StartInitialize()
{
if (_initialised == InitialisationState.Initialised)
{
throw new InvalidOperationException(
"Attempted to initialise ActiveTrackDown" +
"loads when it is already initialized");
}
_initialised =
InitialisationState.StartedInitialisation;
new TaskFactory().StartNew(async () =>
{
// This takes some time to load
this._interestingItems =
InterestingItemsLoader.LoadItems();
_waiter.Release();
_initialised = InitialisationState.Initialised;
});
}
public InterestingItem GetItem(string id) …
Run Code Online (Sandbox Code Playgroud)