mvvm - 我应该将身份验证逻辑放在我的 MVVM 移动应用程序中的什么位置?

标签 mvvm xamarin xamarin.forms

所以我目前正在使用 Xamarin.Forms 开发一个应用程序。 Xamarin Forms 使用 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 的数据填充 View 中使用的集合的逻辑放在哪里的东西;这很清楚。为此,我使用 ViewModel,ViewModel 与我的 DataAccessHelper 进行通信以执行操作。虽然 ViewModel 应该包含表示逻辑,但这样做是很自然的。但是,身份验证呢?无论如何,这与屏幕上显示的数据无关。但显然,这是在我可以执行任何其他请求之前必须完成的必要步骤。

所以这是我的问题:

View 是否应该直接与我的 DataAccessHelper 通信?比如说,在代码隐藏的构造函数中,我直接调用我的 DataAcess 助手进行身份验证,然后如果没问题,我继续使用 ViewModel 的方法来获取数据并填充我的组件?或者我还应该在 ViewModel 中放置一个 View 用来进行身份验证的方法?

IE。这:
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();
    }
}

或者两者都不是?这里的最佳做法是什么?甚至可能创建一个可以使用的身份验证对象。该对象将包含用于与 DAL 通信的包装方法,以及诸如持久化/获取身份验证请求中使用的用户凭据之类的东西?

想法?

最佳答案

肯定是选项 A。始终让您的虚拟机通过命令/方法与您的服务/存储库对话。实际上,您应该将 AuthenticationService 注入(inject)到 ViewModel 中,但那是另一个主题。

关于mvvm - 我应该将身份验证逻辑放在我的 MVVM 移动应用程序中的什么位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28464308/

相关文章:

xamarin.forms - Xamarin 表单 UWP : Exception thrown: 'System.TypeLoadException' in System. Private.CoreLib.ni.dll

ios - 如何在内部将模型数据发送到单元格?

WPF DataGrid 单个列内的不同编辑控件

c# - 传递给操作结果时如何绑定(bind)可变数量的列表项

ios - 在 RxSwift 中从 ViewModel 获取字符串到 View

android - Xamarin Forms - Webview 未显示在我的 StackLayout 中

xamarin - 图像大小,在 Xamarin Forms Labs 的图像按钮中的位置

c# - Xamarin.Android 上的 JsonSerializationException 'Unable to find a constructor'

android - Visual Studio 编辑并继续 Xamarin 开发

xamarin - Xamarin Studio 中的 "Execution Failed"错误