所以我目前正在用Xamarin.Forms开发一个应用程序。 Xamarin Forms使用MVVM模式,我觉得使用这种模式有点舒服,但是我确实有一些问题。为了简单起见,我将使用一个单页面应用程序的例子。这是我到目前为止已经构建它:我应该在哪里将验证逻辑放入我的MVVM移动应用程序中?
MainView.xaml //View
MainView.xaml.cs //Code behind
MainViewModel.cs //ViewModel
DataAccessHelper //DAL layer helping me communicate with a REST-API & DB
Models
Other util classes
所以对于喜欢在哪里放置逻辑用于填充与来自REST的API数据视图中使用的藏品东西;这很清楚。我为此使用ViewModel,ViewModel与我的DataAccessHelper进行通信来完成任务。虽然ViewModel应该包含表示逻辑,但这很自然。但是,如何认证?这不是以任何方式与屏幕上显示的数据相关。但显然,这是在我能够做任何其他请求之前必须完成的必要步骤。
所以这是我的问题:
应该认为我DataAccessHelper直接沟通?比方说,在代码隐藏的构造函数中,我直接调用DataAccess帮助器进行身份验证,然后如果没有问题,我继续使用ViewModel的方法来获取数据并填充我的组件?或者我也应该在ViewModel中放置一个视图用于验证的方法?
I.e.这样的:
public partial class MainPage
{
private MainPageViewModel ViewModel
{
get { return BindingContext as MainPageViewModel; }
}
public MainPage()
{
ViewModel.Authenticate();
ViewModel.LoadCountries();
ViewModel.LoadCities();
InitializeComponent();
}
}
对战这样的:
public partial class MainPage
{
private MainPageViewModel ViewModel
{
get { return BindingContext as MainPageViewModel; }
}
public MainPage()
{
var dataAccessHelper = new DataAcessHelper();
dataAccessHelper.Authenticate();
ViewModel.LoadCountries();
ViewModel.LoadCities();
InitializeComponent();
}
}
或者都不是?这里最好的做法是什么?甚至可能创建一个可以使用的Authentication对象。这个对象将包含用于与DAL进行通信的包装器方法,以及诸如持久化/获取用于认证请求中的用户凭证之类的东西?
想法?
这就是我最终做的。我在“根”上创建了所有服务的新实例,并将它们从需要的位置注入到需要的位置。我也结束了与选项A.所以我想它会变好:) – Ajaco 2015-02-16 13:43:18