gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 10:27:57 29 4
gpt4 key购买 nike

所以我目前正在使用 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com