Giả sử chúng tôi có một dự án sẽ xử lý nhiều dữ liệu (nhân viên, lịch biểu, lịch .... và nhiều hơn nữa). Ứng dụng khách là Windows App, phía máy chủ là WCF. Cơ sở dữ liệu là MS SQL Server. Tôi đang bối rối về cách tiếp cận để sử dụng. Tôi đọc vài bài báo và blog tất cả đều có vẻ đẹp nhưng tôi bối rối. Tôi không muốn bắt đầu với một cách tiếp cận và sau đó hối tiếc không lựa chọn cách khác. Dự án sẽ có khoảng 30-35 loại đối tượng khác nhau. Rất nhiều dữ liệu lấy để cư báo cáo khác nhau ... vvthiết kế nào tốt hơn cho dự án máy khách/máy chủ với nhiều chia sẻ dữ liệu
Cách tiếp cận 1:
// classes that hold data
public class Employee
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
.....
}
public class Assignment
{
public int Id { get; set; }
public int UserId { get; set; }
public DateTime Date { get; set; }
.....
}
.....
lớp Rồi Helper để đối phó với tiết kiệm dữ liệu và thu lấy:
public static class Employees
{
public static int Save(Employee emp)
{
// save the employee
}
public static Employee Get(int empId)
{
// return the ugly employee
}
.....
}
public static class Assignments
{
public static int Save(Assignment ass)
{
// save the Assignment
}
.....
}
FYI, The các lớp đối tượng như Employees và Assignment sẽ nằm trong một Assembly riêng biệt được chia sẻ giữa Sever và Client. Dù sao, với cách tiếp cận này, tôi sẽ có một đối tượng sạch hơn. Các lớp Helper sẽ làm hầu hết công việc.
Phương pháp 2:
// classes that hold data and methods for saving and retrieving
public class Employee
{
// constructors
public Employee()
{
// Construct a new Employee
}
public Employee(int Id)
{
// Construct a new Employee and fills the data from db
}
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
.....
public int Save()
{
// save the Employee
}
.....
}
public class Assignment
{
// constructors
public Assignment()
{
// Construct a new assignment
}
public Assignment(int Id)
{
// Construct a new assignment and fills the data from db
}
public int Id { get; set; }
public int UserId { get; set; }
public DateTime Date { get; set; }
.....
public int Save()
{
// save the Assignment
}
.....
}
.....
Với phương pháp này, Mỗi đối tượng sẽ làm công việc riêng của mình .. dữ liệu vẫn có thể được chuyển từ WCF để khách hàng dễ dàng kể từ WCF sẽ chỉ chia sẻ tài sản.
Cách tiếp cận 3:
Sử dụng Entity Framework .. bên cạnh thực tế là tôi không bao giờ làm việc với nó (đó là tốt đẹp kể từ khi tôi phải học một cái gì đó mới) Tôi sẽ cần phải tạo POCOs để truyền dữ liệu giữa máy khách và WCF ..
Bây giờ, cái nào tốt hơn? lựa chọn khác?
Câu hỏi hay, nhưng có lẽ phù hợp hơn cho người lập trình. – jwiscarson