我习惯用N层架构,即数据访问层,业务逻辑层,等发展
任何人都可以提供有关我的业务逻辑的最佳位置的任何意见或链接?
难道我把所有这一切都为阶级我Silverlight应用程序的模型文件夹中?
保罗
我习惯用N层架构,即数据访问层,业务逻辑层,等发展
任何人都可以提供有关我的业务逻辑的最佳位置的任何意见或链接?
难道我把所有这一切都为阶级我Silverlight应用程序的模型文件夹中?
保罗
业务逻辑,以及其中的数据,典型地是在MVVM模型层的一部分。 视图是视觉效果,并且视图模型是“胶水”,让你与业务特定的逻辑和数据工作。
任何特定于域或企业应该是可重复使用由其他应用程序,使用其他架构。
这是一个很好的问题,答案将部分是项目的复杂性和开发者的喜好问题。
有些MVVM项目,我已经看到了把一切都放在虚拟机的一部分,所以查看的的.cs文件是空的(因为大家都知道“后台代码”是邪恶的</嘲讽>)和模型文件包含被动的“存储类”(即,C与封装结构基本上)。
它可以是一些简单的项目(如几乎没有任何逻辑观众)一个不错的选择。 但它会导致试图做的一切,这是无法控制的,如果你的项目有任何复杂的斑点状的视图模型。
里德科普塞的回答(业务逻辑/数据访问应该去耦查看/视图模型的)可以与任何显著的复杂项目的最佳解决方案。
我面临着同样的问题,决定走这条路:我创建类,如控制器在MVC(我的模型来进行一些动作),我在所有的ViewModels与他们合作。
例如:我们的应用程序有一个书单。 我们需要添加/编辑/删除它们。
因此,我们有一个模型:
public class Book
{
public int BookId { get; set; }
public string Title { get; set; }
public string Author { get; set; }
}
然后我们有一个控制器类:
public class BookController
{
string dbPath = ...;
public void AddBook(string title, string author)
{
var book = new Book() { Title = title, Author = author };
AddBook(book);
}
public void DeleteBook(int id)
{
using (var db = new SQLiteConnection(dbPath))
{
db.Delete<Book>(id);
}
}
public void DeleteBook(Book book)
{
using (var db = new SQLiteConnection(dbPath))
{
DeleteBook(book.BookId);
}
}
public List<Book> GetAllBooks()
{
using (var db = new SQLiteConnection(dbPath))
{
return db.Table<Book>().ToList();
}
}
public Book FindBook(string title, string author, int id)
{
.....
}
}
现在,只要我们需要,例如,我们可以用它:
public class BookListViewModel : ViewModelBase
{
public BookListViewModel()
{
GetData();
}
private void GetData()
{
BookController bc = new BookController(); // here we start using our controller.
_books = new List<Book>();
_books = bc.GetAllBooks();
}
}
这种方法帮助我们: