Cách tạo WCF Service trả về JSON dùng cho Mobile App
Trong kỉ nguyên smartphone và cloud lên ngôi, các ứng dụng mobile giờ đây không những đòi hỏi giao diện đẹp, chất lượng tốt mà khả năng đồng bộ hóa với đám mây và giữa các thiết bị với nhau đã trở thành một xu thế tất yếu. Nếu bạn đang bắt tay xây dựng các ứng dụng kiểu này thì lời khuyên của tôi là hãy quan tâm đến các công nghệ xây dựng service đồng bộ dữ liệu ngay từ bây giờ.
Hiện nay có rất nhiều các công nghệ xây dựng service khác nhau nhưng trong bài viết này tôi sẽ hướng dẫn các bạn chi tiết các bước để có thể tạo ra các service sử dụng được trên các mobile app hoặc client khác như desktop app, web app… sử dụng công nghệ WCF của .NET Framework.
Tạo WCF service dạng REST
Để bắt đầu chúng ta sẽ tạo một WCF service dạng REST trả về JSON đơn giản để sử dụng được từ ứng dụng mobile, web, desktop… Cách tạo gồm 5 bước chi tiết như sau:
Trong Visual Studio 2013 chúng ta tạo mới 1 project web
Thêm Item mới cho project và chọn WCF Service
Xóa gen code mặc định của Visual Studio và bổ sung 2 method GetMessage và PostMessage như bên dưới
namespace Tungnt.NET.WCFRestDemo { [ServiceContract] public interface IWCFRestDemo { [OperationContract] string GetMessage(); [OperationContract] string PostMessage(string userName); } }Để sử dụng WCF service dạng REST thì trên Interface của WCF service ta cần cấu hình attribute cho 2 method này sử dụng WebGet (chỉ dùng GET dữ liệu) hoặc WebInvoke (dùng để GET hoặc POST dữ liệu)
(Lưu ý: 2 attribute này nằm trong System.ServiceModel.Web.dll nên ta cần add reference dll này trước)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
namespace Tungnt.NET.WCFRestDemo
{
[ServiceContract]
public interface IWCFRestDemo
{
[OperationContract]
[WebGet(RequestFormat=WebMessageFormat.Json, ResponseFormat=WebMessageFormat.Json)]
//Tương tự [WebInvoke(Method="GET", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
string GetMessage();
[OperationContract]
[WebInvoke(Method="POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
string PostMessage(string userName);
}
}Bước cuối cùng là Implement Interface để xử lý 2 hàm Get/Post Message như sau:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
namespace Tungnt.NET.WCFRestDemo
{
public class WCFRestDemo : IWCFRestDemo
{
public string GetMessage()
{
return "Welcome to tungnt.net from GetMessage() WCF REST Service";
}
public string PostMessage(string userName)
{
return string.Format("Welcome {0} to tungnt.net from PostMessage() WCF REST Service", userName);
}
}
}Cấu hình WCF REST Service
Ở phần trên chúng ta đã tạo ra được WFC REST service nhưng để sử dụng được thì chúng ta còn cần cấu hình service này để có thể trả về được dạng JSON thay vì trả về dạng mặc định là SOAP (XML).
Ở bước này chúng ta sẽ cấu hình WCF sử dụng webHttpBinding để cho phép WCF service trả về dạng REST (json).
Để biết về sự khác nhau giữa các loại service như WCF Service và WCF REST service các bạn hãy xem bài viết: Sự khác nhau giữa Web Service, WCF, WCF REST, Web API
Ta chỉnh sửa web.config như sau: Thêm endpoint dùng webHttpBinding và restBehavior (bật helpEnabled để phục vụ quá trình phát triển như ở bên dưới sẽ nói đến)
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="restBehavior">
<webHttp helpEnabled="true"/>
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
<services>
<service name="Tungnt.NET.WCFRestDemo.WCFRestDemo">
<endpoint name ="RESTEndPoint" contract ="Tungnt.NET.WCFRestDemo.IWCFRestDemo" binding ="webHttpBinding" address ="rest" behaviorConfiguration ="restBehavior"/>
</service>
</services>
</system.serviceModel>Đến đây WCF REST service đã sẵn sàng để sử dụng, ta hãy kiểm tra xem WCF REST service có chạy thật hay không
Right click vào WCFRestDemo.svc trong project explorer và chọn View In Browser như hình dưới
Thêm rest vào cuối URL như cấu hình endpoint address trong web.config và nhấn Enter chúng ta sẽ thấy kết quả như hình dưới đây:
Click service help page (do đã cấu hình helpEnabled = true trong web.config ở trên) để xem các phương thức rest có trong service này. Như vậy là chúng ta đã tạo và cấu hình thành công WCF REST Service để có thể sử dụng được trên các ứng dụng web/mobile.
Kết luận
Trong bài viết này tôi đã hướng dẫn các bạn cách thức để có thể tạo ra các WCF REST service trả về dạng JSON để có thể sử dụng trên các ứng dụng web (qua JavaScript hoặc ứng dụng mobile như iOS, Android, Windows Phone… Đây là một định dạng đang rất phổ biến hiện nay trong thế giới Web/Mobile vì sự đơn giản và nhẹ nhàng cùng tính khả chuyển (cross-platform) cao vì vậy việc nắm được cách sử dụng nó đã trở thành một nhu cầu rất thiết thực của các lập trình viên web/mobile.
Hy vọng bài viết này sẽ giúp ích được cho các bạn trong quá trình xây dựng các ứng dụng của riêng mình. Trong các bài viết kế tiếp chúng ta sẽ cùng tìm hiểu cách thức sử dụng service này trên Web, Windows Phone, Windows App…
Sử dụng WCF Service trên Windows Phone 8.1
Nếu bạn có bất kì câu hỏi hay kinh nghiệm nào hãy chia sẻ bằng comment bên dưới bài viết nhé. Nếu thấy hay hãy chia sẻ cho bạn bè của bạn nữa.
Happy coding. Stay tuned.
P/s: Source code example các bạn có thể download tại đây: WCFRESTDemo










