2012-02-29 49 views
25

tôi sẽ được làm việc trên một dự án có liên quan đến một số yếu tố: trang webWCF Service hoặc Web API

  • ASP.NET MVC
  • C# console ứng dụng
  • iPhone App

Để có được tất cả các ứng dụng riêng biệt này nói chuyện với cơ sở dữ liệu, ý kiến ​​trước mắt của tôi là sử dụng Dịch vụ WCF.

Tuy nhiên, bây giờ tôi cần thêm API vào trang web để cho phép bên thứ ba chọn, chèn và cập nhật bản ghi từ ứng dụng của riêng họ.

Trong đầu, tôi chỉ cần tạo một điểm cuối dịch vụ RESTful riêng biệt trên Dịch vụ WCF sẽ bị khóa bằng xác thực và chỉ cấp quyền truy cập vào các phương thức nhất định.

Tuy nhiên, tôi đã đọc hôm nay về tính năng API Web trong MVC 4 có nghĩa là điều mới nhất cho API RESTful?

Tôi có nên sử dụng API Web không? hoặc vì các ứng dụng khác của tôi cần dịch vụ web, tôi có nên sử dụng Dịch vụ WCF không?

+0

thể trùng lặp của [WCF vs ASP.NET Web API] (http://stackoverflow.com/questions/9348639/wcf-vs-asp-net-web-api) – nawfal

Trả lời

16

Nếu bạn định làm phát triển RESTful thì chắc chắn bạn sẽ muốn sử dụng ASP.Net Web Api (ban đầu được gọi là WCF Web Api và được tạo với mục tiêu "Làm REST một công dân hạng nhất trong .NET".

Một điều cần xem xét là bộ khởi động WCF REST Starter là no longer supported.

Lưu ý rằng việc sử dụng Web Api không có nghĩa là bạn phải sử dụng ASP.Net MVC hoặc IIS ngay cả khi nó có thể là self hosted.

Đối với các hoạt động xử lý không có CRUD, tôi khuyên bạn nên Googling "REST non-CRUD". Tôi tìm thấy bài đăng trên blog này RESTful URLs for non-CRUD operations (và đặc biệt là các nhận xét thú vị). Nếu bạn quyết định bạn CẦN phải có các cuộc gọi RPC thì những người đó có thể phải được thực hiện với WCF. Điều đó nói rằng kể từ WCF REST đang bị giết tôi không chắc chắn những gì các giải pháp tốt nhất là có được. Có cả hai có lẽ là câu trả lời tốt nhất nhưng đồng thời nó không nhất thiết phải là một câu trả lời tốt.

Một giải pháp thay thế khác sẽ là Dịch vụ ODF của WCF nhưng tôi không chắc chắn liệu nó có được hỗ trợ từ iPhone hay không.

Một điểm cuối cùng để thực hiện (có thể bị xóa trong thời gian tới vì đây là thời điểm nhạy cảm)

Microsoft đã cung cấp một giấy phép Go Live với phiên bản beta có nghĩa là nó được hỗ trợ bởi Microsoft và bạn không nên không có vấn đề gì khi nâng cấp lên tập tin RTM.

+0

Cảm ơn bạn đã bình luận. Chắc chắn vì tôi sẽ sử dụng dịch vụ/api cho trang web MVC của tôi, tôi sẽ không muốn toàn bộ dịch vụ/api được RESTful? Điều đó có thể thực hiện được với API Web không?Tôi biết với Dịch vụ WCF, bạn có thể có các điểm cuối riêng biệt cho RESTful –

+0

Đã thêm thông tin bổ sung để đăng. –

+0

Tôi không hiểu đầy đủ thông tin bổ sung của bạn. Một giải pháp có thể được sử dụng một dịch vụ WCF mà tôi có thể tham khảo từ trang web MVC của tôi. Sau đó, tôi có thể sử dụng một Web API (với xác thực) mà cũng giao tiếp với các dịch vụ WCF để có được dữ liệu? –

6

Service Stack cũng giống như một tùy chọn.

Bản trình diễn, tổng quan, ví dụ là available here.

+2

1 đề cập đến Dịch vụ ngăn xếp, mà tôi chưa bao giờ nghe nói đến. Tuy nhiên, nhìn vào khuôn khổ của họ, ấn tượng đầu tiên của tôi là mục tiêu của họ về "không có mã-gen" cho khách hàng không hoàn toàn chính xác. Code-gen (rõ ràng là thủ công) vẫn được yêu cầu nếu bạn không có quyền truy cập vào các DTO dịch vụ, đây là một kịch bản rất có khả năng cho một API công khai. Tuy nhiên, khung làm việc có vẻ đầy hứa hẹn, vì vậy tôi chắc chắn sẽ nghiên cứu nó. Cảm ơn các liên kết! – Randolpho

+0

Không có mã-gen như bạn có thể tái sử dụng cùng một DTO của bạn xác định các dịch vụ web của bạn với. Vì vậy, bạn sẽ có được một máy khách dịch vụ chung được đánh máy, gọn gàng, sử dụng serializes nhanh, có thể phiên bản end-to-end. Ngay cả các ngoại lệ C# là thành ngữ và gõ https://github.com/ServiceStack/ServiceStack/wiki/Validation – mythz

+0

@mythz và nếu bạn không có quyền truy cập vào .DLL đã định nghĩa các DTO? Đây là một kịch bản phổ biến với các dịch vụ web có thể truy cập công khai. – Randolpho

4

Không có câu trả lời đúng ở đây. Bạn chắc chắn có thể làm khá tốt với một dịch vụ WCF RESTful. Hoặc bạn có thể sử dụng ASP.NET MVC. Cả hai đều hoàn toàn hợp lệ, và cả hai đều có điểm mạnh và điểm yếu.

Cuối cùng, tôi khuyên bạn nên đi với bất kỳ thứ gì mà bạn cảm thấy dễ bảo trì nhất.

Tôi muốn lưu ý rằng MVC 4 đang trong giai đoạn thử nghiệm, vì vậy, hãy chú ý đến các lỗi và không phát hành trực tiếp cho đến khi hết thời gian thử nghiệm.

1

Tôi sẽ được nhấn mạnh để xem xét những gì có hỗ trợ tốt nhất trên tất cả các nền tảng mà bạn sẽ sử dụng, tôi nghi ngờ ứng dụng iPhone có thể sẽ dẫn đến sự lựa chọn của bạn.

Nếu nó thuần túy. Tôi vẫn có xu hướng nới lỏng dịch vụ SOAP - nó không được coi là mát mẻ trong những ngày này nhưng thường sẽ làm những gì bạn cần trên hầu hết các nền tảng mà không cần phải cuộn giải pháp tùy chỉnh.

EDIT

ASP.NET Web API có nghĩa là NET hiện nay cung cấp một khuôn khổ tuyệt vời cho việc phát triển một API yên tĩnh, tôi sửa lại câu trả lời của tôi nói rằng tôi bây giờ sẽ nghiêng về phía này - tiến bộ là rất tốt!

1

Vì bạn sẽ tạo một trang web ASP.NET MVC, nó sẽ khá thoải mái khi sử dụng ASP.NET Web API cũng vì mô hình lập trình rất giống nhau và các giải pháp đó ít nhiều tích hợp với nhau.

0

Tôi có cùng một câu hỏi.

Trong trang web MSDN, http://msdn.microsoft.com/en-us/library/jj823172(v=vs.110).aspx

Tìm thấy một video hướng dẫn mà họ nói rằng cho máy cosumption như iPhone hoặc khách hàng ứng dụng web của JSON hoặc xml, web API được lựa chọn khuyến khích. Nó xung quanh phần cuối của video.

Trong khi máy phức tạp hơn để liên lạc máy, WCF thích hợp hơn.

http://channel9.msdn.com/Series/Building-Web-Apps-with-ASP-NET-Jump-Start/Building-Web-Apps-with-ASPNET-Jump-Start-04-Building-a-Service-Layer-with-ASPNET-Web-API

Đây là ảnh chụp màn hình từ bản trình bày của họ.

enter image description here

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