2013-06-05 18 views
7

Tôi quen thuộc với phương pháp web là gì. Bây giờ tôi đã có một gợi ý để sử dụng API web thay vì phương pháp web. Tôi đã làm một bản demo của ASP.NET web API nó gần hơn với một kiến ​​trúc MVC MVC sáng sử dụng phát triển web asp.net cổ điển. Tôi không muốn làm hỏng bộ điều khiển (khái niệm MVC) với sự phát triển cổ điển.Lợi thế của việc sử dụng API web trên phương thức web trong ASP.NET

Phương pháp web của tôi:

[WebMethod] 
public static string GetName(int id) 
{ 
    return "testName"; 
} 

My điều khiển Web API:

public class MyController : ApiController 
{ 
[HttpGet] 
public string GetName(int id) 
{ 
    return "testName"; 
} 
} 

sáng thực sự bối rối về vấn đề này bất kỳ một có một ý tưởng tốt hơn trên cùng.

Đề xuất của bạn về cùng một lựa chọn nào tốt hơn?

Làm cách nào tôi có thể so sánh, nếu cả hai có cùng một mã?

Trả lời

13

ASP.NET WebServices cổ điển (những gì bạn gọi là WebMethod) là một công nghệ không dùng nữa. Không còn bất kỳ sự phát triển tích cực nào nữa. ASP.NET Web API là một viết lại hoàn toàn của ngăn xếp web từ Microsoft, trong đó bạn có quyền kiểm soát lớn hơn nhiều để tạo ra các dịch vụ web RESTful. Điều này không có nghĩa là bạn nên chọn giữa cái này hay cái kia. Ngoài ra còn có ServiceStack. Nếu bạn đang bắt đầu một dự án mới, bạn nên tránh xa các dịch vụ web cổ điển. Nếu chúng vẫn còn hiện diện trong .NET framework, nó là vì các lý do tương thích với mã kế thừa.

3

Bổ sung câu trả lời của Darin, nếu bạn muốn kiểm tra phương thức của mình từ ApiController, bạn có thể tiêm phụ thuộc của đối tượng bằng cách sử dụng vùng chứa DI (http://www.asp.net/web-api/overview/extensibility/using-the-web-api-dependency-resolver). Việc tiêm phụ thuộc được thực hiện tự động.

Tuy nhiên, với webmethods, bạn không thể sử dụng DI theo cách đó vì webmethods phải là static. Nếu bạn nhấn mạnh trong việc sử dụng DI, bạn cần phải nhanh chóng và gọi container trực tiếp trong mỗi webmethods để có được các phụ thuộc để làm việc trên.