Được đề xuất trong nhiều sách kiến trúc phần mềm là bạn không nên đặt bất kỳ logic nghiệp vụ nào trong mã bộ điều khiển (API) của mình. Giả sử bạn thực hiện nó đúng cách, ví dụ mã Controller của bạn hiện đang truy cập logic nghiệp vụ thông qua một lớp Service hoặc facade, gợi ý của tôi là bạn sử dụng lại cùng một lớp Service/facade cho mục đích đó, thay vì đi qua cửa trước '(vì vậy bằng cách thực hiện các cuộc gọi JSON từ mã đằng sau)
đối với cơ bản và naieve dụ:
public class MyController1: ApiController {
public string CreateFile() {
var appService = new AppService();
var result = appService.CreateFile();
return result;
}
}
public class MyController2: ApiController {
public string CreateFile() {
var appService = new AppService();
var result = appService.CreateFile();
return result;
}
}
lớp AppService đóng gói logic kinh doanh của bạn (và không sống trên lớp khác) và làm cho nó dễ dàng hơn cho bạn truy cập vào logic của bạn:
public class AppService: IAppService {
public string MyBusinessLogic1Method() {
....
return result;
}
public string CreateFile() {
using (var writer = new StreamWriter..blah die blah {
.....
return 'whatever result';
}
}
...
}
Nguồn
2012-04-24 23:16:31
Ý anh là gì bởi "code-behind"? – SLaks
@SLaks Giả sử tôi có nút asp:. Trên sự kiện bấm của nó (phía máy chủ/mã-đằng sau), tôi muốn làm một vài thứ và sau đó gọi hành động Web API của tôi (createfile). Hy vọng tôi rõ ràng. – Rivka
Xin vui lòng kiểm tra ví dụ mã của tôi. Có lẽ một chút ngây thơ và cơ bản, nhưng nó chỉ dành cho bạn 2 có được ý tưởng. –