Công cụ: Mvc4, Máy chủ Sql, NhibernateMvc4: Kiến trúc bậc N
Tôi đang học kiến trúc Ntier và lập kế hoạch để tìm hiểu điều này với một ví dụ nhỏ. Đây sẽ là một đơn đăng ký học sinh sẽ có một mẫu đơn cho a. tên đầu tiên b. họ: c. địa chỉ d. Id Học sinh Đơn đăng ký sẽ có thể a. Lấy học sinh theo Id b. Nhận tất cả học sinh c. Đăng ký học sinh mới/Lưu học sinh d. Chỉnh sửa một học sinh e. Xóa một sinh viên
tôi dự định có tầng sau
lớp Presentation (dự án riêng biệt MVC 4 ứng dụng)
--- html cho hình thức sinh viên tại đây. Tôi có thể sử dụng jquery etc tại đây --- bộ điều khiển của tôi sẽ gọi cho dịch vụ
Lớp dịch vụ (dự án riêng biệt: dự án thư viện lớp .Trong trường hợp này chỉ có web là khách hàng của tôi. Tôi sẽ học cách sử dụng webAPI hoặc wcf cho sau này trong một dự án khác)
--- StudentService đây
--- IstudentService đây
lớp kinh doanh: (riêng dự án: dự án thư viện lớp) ??
Lớp dữ liệu: (dự án riêng biệt: dự án thư viện lớp) ??
Cơ sở dữ liệu: (cơ sở dữ liệu máy chủ sql)
Bây giờ tôi đã nhầm lẫn và câu hỏi của tôi là: (? Mà lớp)
nơi tôi sẽ tạo ra mô hình sinh viên của tôi
gì sẽ Tôi đang viết trong lớp kinh doanh của tôi cho ví dụ sinh viên này tôi có.
Điều gì sẽ xảy ra trong lớp dữ liệu của tôi? Tôi sẽ viết những phương pháp nào? Có phải chúng là phương pháp sẽ giao tiếp trực tiếp với cơ sở dữ liệu ?
Một số ví dụ sẽ tuyệt vời. Tôi sẽ tìm một container IOC tốt.
Đây là mẫu mã bên dưới:
public interface IStudentService
{
IEnumerable<Student> GetStudents();
Student GetStudentById(int id);
void CreateStudent(Student student);
void UpdateStudent(Student student);
void DeleteStudent(int id);
void SaveStudent();
}
public class StudentService : IStudentService
{
private DataContext _datacontext;
public StudentService()
{
_datacontext = new DataContext();
}
public IEnumerable<Student> GetStudents()
{
var students = _datacontext.Students;
return students;
}
public Student GetStudentById(int id)
{
return _datacontext.Students.Find(id);
}
public void CreateStudent(Student student)
{
_datacontext.Students.Add(student);
_datacontext.SaveChanges();
}
public void UpdateStudent(Student student)
{
_datacontext.Entry(student).State = EntityState.Modified;
//_datacontext.Entry(student).State = EntityState.Modified;
_datacontext.SaveChanges();
}
public void DeleteStudent(int id)
{
var student = _datacontext.Students.Find(id);
_datacontext.Entry(student).State = EntityState.Deleted;
_datacontext.SaveChanges();
}
public void SaveStudent()
{
_datacontext.SaveChanges();
}
}
Tôi không chắc Kiến trúc Onion là một điều tốt cho một người nào đó vừa học, vì các bài viết khác nhau có xu hướng giả định rất nhiều kiến thức. Tôi nghĩ rằng viêm khớp là một "bước thứ hai" tốt sau khi thực hiện một lớp 3 tầng truyền thống. –
IoC container đã được đề cập, vì vậy tôi cho rằng một số mức độ kiến thức. Tôi nhớ mình đã học được những điều này. Tôi đã làm một mớ hỗn độn của ứng dụng 3 lớp "cổ điển". Nhưng khi tôi đã thử OA, mọi thứ đã diễn ra đúng chỗ và tất cả đều diễn ra tốt đẹp. – trailmax
Có, nhưng thực tế là bạn đã học được rất nhiều từ "mớ hỗn độn" khiến OA có ý nghĩa với bạn.Tôi cảm thấy rằng viêm khớp là rất nhiều "Làm điều này bởi vì tôi đã nói như vậy" nếu bạn chưa học được những vấn đề mà OA đề cập đến. –