2009-07-23 41 views
8

Tôi mới thiết lập WCF, tôi có nó trong dự án của tôi, nhưng tôi có 5 dịch vụ khác nhau trong dự án WCF của tôi và tôi tự hỏi liệu tôi có đang làm đúng không . Các dịch vụ của tôi bây giờ là 1-1 cho các bảng cơ sở dữ liệu của tôi. Tôi sẽ có một cái gì đó như:WCF một dịch vụ hoặc nhiều dịch vụ

public class Projects : IProjects 
{ 
    public List<Project> GetAll() 
    { 
     return (from p in Connection.Data.Projects 
       select new Project {ID = p.id, Name = p.name}).ToList(); 
    } 

    public Project GetByID(int id) 
    { 
     return (from p in Connection.Data.Projects 
       where p.id == id 
       select new Project {ID = p.id, Name = p.name}).First(); 
    } 

    public Project AddProject(string name) 
    { 
     var project = new Data.Projects {name = name}; 
     Connection.Data.AddToProjects(project); 
     Connection.Data.SaveChanges(); 

     return new Project {ID = project.id, Name = project.name}; 
    } 

    public void DeleteProject(int id) 
    { 
     var project = (from p in Connection.Data.Projects 
         where p.id == id 
         select new Project {ID = p.id, Name = p.name}).First(); 

     Connection.Data.DeleteObject(project); 
     Connection.Data.SaveChanges(); 
    } 
} 

Tôi có một lớp tương tự cho mỗi bảng trong dự án của tôi. Tôi có nên tìm cách sử dụng 1 kết nối dịch vụ với các lớp con hoặc giữ nó như là một lớp dịch vụ cho mỗi bảng?

Trả lời

8

"Phụ thuộc!" :-) Câu trả lời tiêu chuẩn cho tất cả các câu hỏi về CNTT và lập trình :-)

Tôi không thấy điều gì sai trái khi có 5 dịch vụ riêng biệt đó - bạn không thực sự đạt được điều gì bằng cách hợp nhất chúng lại với nhau thành một dịch vụ lớn, Tôi sẽ nói. Tôi muốn giữ chúng riêng biệt và "nạc".

Nếu bạn có năm dịch vụ riêng biệt, bạn cũng có thể quản lý những thứ như quyền truy cập cho từng dịch vụ riêng biệt, ví dụ: cho phép một số nhóm người dùng sử dụng một dịch vụ, trong khi không phải một dịch vụ khác.

Một lần nữa: Tôi nghĩ bạn đang làm điều đó tốt - Tôi không thấy bất kỳ lý do thuyết phục hoặc lợi ích nào từ việc có một dịch vụ lớn so với năm dịch vụ nhỏ hơn, nhỏ hơn. Hãy suy nghĩ về điều đó - thay đổi thực sự duy nhất tôi có thể đề xuất là cố gắng thiết kế các dịch vụ của bạn sao cho phù hợp hơn với những gì ứng dụng của bạn muốn thực hiện (tức là các hoạt động bạn mong đợi ứng dụng của bạn và do đó dịch vụ của bạn xử lý), thay vì mô hình hóa chúng quá chặt chẽ với cơ sở dữ liệu. Cố gắng nghĩ "hướng theo nhiệm vụ" hoặc về mặt hoạt động, chứ không phải là cửa hàng cơ bản nơi họ sẽ lưu trữ dữ liệu của họ.

Marc

+1

tuyệt vời, cảm ơn người đàn ông! –

+0

Đồng ý về cách tiếp cận dựa trên nhiệm vụ. Tốt hơn là không nghĩ về một dịch vụ như một kho lưu trữ mà là nhiều hơn một bộ điều khiển ca sử dụng IMO. Tôi sẽ chỉ ra rằng mặc dù có 5 dịch vụ riêng biệt có lẽ là một đóng gói tốt hơn, đôi khi nó làm tăng chi phí cấu hình/bảo trì/triển khai. Không phải lúc nào cũng đáng nhớ. – Stimul8d

Các vấn đề liên quan