Bài trước Tôi đã
giới thiệu lớp Web Asp.Net, bài này Tôi sẽ giới thiệu tiếp về Lớp Web Services và kết thúc loạt bài giới thiệu về .netTiers.
Web Services
.netTiers sẽ cho phép bạn tạo ra cung cấp dịch vụ Web cho thấy API dữ liệu. Rất có lợi nếu bạn cần sử dụng .netTiers trong ứng dụng máy chủ của client, hoặc nếu bạn chỉ cần để lộ dữ liệu cho bên thứ 3.
Cấu hình dịch vụ Web tự động
Khi bạn đã tạo ra solution, bạn sẽ muốn thay đổi cung cấp mặc định trên các ứng dụng của client. Trong App/web.config, bạn sẽ muốn thay đổi cung cấp mặc định đến WsNetTiersProvider trong netTiersServiceSection.
Cấu hình
Trong tập tin web.config của ứng dụng, thêm dòng sau để xác định node <netTiersService>. Thẻ <section> phải trên dòng.
<configuration>
<configSections>
<section name="netTiersService"
type="North.DataAccessLayer.Bases.NetTiersServiceSection,
North.DataAccessLayer" allowDefinition="MachineToApplication" restartOnExternalChanges="true"/>
</configSections>
...
</configuration>
Khi <netTiersService> đã được xác định, thêm nó vào tập tin web.config. Lưu ý rằng vị trí của nó là bên ngoài thẻ <system.web>.
<netTiersService defaultProvider="WsNetTiersProvider">
<providers>
<!--*** SqlClient Provider ***
connectionStringName: sqlclient connection string to the db
useStoredProcedure: if trueindicates that we use the stored procedures, otherwise, we use parametrized queries that are embedded.
-->
<add name="SqlNetTiersProvider" type="Northwind.Data.SqlClient.SqlNetTiersProvider, Northwind.Data.SqlClient" connectionStringName="netTiersConnectionString" useStoredProcedure="false"
providerInvariantName="System.Data.SqlClient" entityFactoryType="Northwind.Entities.EntityFactory" enableEntityTracking="true" />
<!--
*** WebserviceClient Provider ***
The url parameter indicates the webservices url (ex: http://localhost/NorthWind/NorthWindServices.aspx)
-->
<add name="WsNetTiersProvider" type="Northwind.Data.WebServiceClient.WsNetTiersProvider, Northwind.Data.WebServiceClient" url="http://localhost/NorthwindServices/NorthwindServices.asmx" />
</providers>
</netTiersService>
Nếu đang xây dựng ứng dụng Windows Forms thì bạn sẽ đặt trong App.config
<configSections>
<section name="netTiersService" type="Northwind.Data.Bases.NetTiersServiceSection, Northwind.Data" allowDefinition="MachineToApplication" restartOnExternalChanges="true"/>
</configSections>
<netTiersService defaultProvider="WsNetTiersProvider">
<providers>
<!--
*** WebserviceClient Provider ***
The url parameter indicates the webservices url (ex: http://localhost/NorthWind/NorthWindServices.aspx)
-->
<add name="WsNetTiersProvider" type="Northwind.Data.WebServiceClient.WsNetTiersProvider, Northwind.Data.WebServiceClient" url="http://localhost/NorthwindServices/NorthwindServices.asmx" />
</providers>
</netTiersService>
Sử dụng cung cấp dịch vụ Web
Bây giờ bạn có solution được tạo ra, thực hiện Build, Control + B. Build sẽ thất bại, chỉ vì WebService client không có cập nhật của các lớp proxy để tham chiếu web. Bây giờ bạn có thể duyệt đến dịch vụ web và xem tất cả dữ liệu tiếp xúc với phương thức API:
Cập nhật Web Reference
Trong dự án của bạn duyệt đến dự án dịch vụ Web Client.
Sau đó, bạn chỉ cần cập nhật web Reference cho WsProxy bằng cách kích chuột phải chọn "Update Web Reference". Ngoài ra, hãy đảm bảo thuộc tính Web Reference URL là bản đồ Url chính xác cho thiết bị đầu cuối dịch vụ trên web.
Khi được cập nhật, hãy thêm Build, lúc này, không nên có lỗi biên dịch. Nếu bạn vẫn còn có lỗi, sao chép các file DLL từ thực thể và dữ liệu thư mục bin/debug cho client dịch vụ bin/debug.
Trên máy chủ, với dịch vụ thực tế thiết bị đầu cuối web, đó là web.config không thực sự sử dụng SqlNetTiersProvider. Điều này là chính xác và không nên được sửa đổi, bởi vì bây giờ bạn có thể trực tiếp giao tiếp với cơ sở dữ liệu SQL
Cập nhật các Reference khác
Nếu bạn đang xây dựng ứng dụng Windows Forms thì bạn sẽ muốn cập nhật Reference của dự án để trỏ đến các dữ liệu, các thực thể và các dự án WebServiceClient hoặc dll. Trong ví dụ này sẽ là "Northwind.Data", "Northwind.Entities", và "Northwind.Data.WebServiceClient".
Truy cập vào dữ liệu của bạn
Khi bạn đã hoàn thành các bước trên, bạn đang dễ dàng sử dụng SqlNetTiersProvider.
Ví dụ:
using Northwind.Data;
using Northwind.Entities;
using Northwind.Data.WebServiceClient;
TList<Orders> list = DataRepository.OrdersProvider.GetAll();
Gọi EntityProviderBaseCore.cs:
/// <summary>
/// Gets all rows from the DataSource.
/// </summary>
/// <returns>Returns a TList of Entity objects.</returns>
public TList<Entity> GetAll()
{
return GetAll(null);
}
Gọi WsOrdersProvider.generated.cs:
/// <summary>
/// Gets All rows from the DataSource.
/// </summary>
/// <param name="transactionManager"> object</param>
/// <param name="start">Row number at which to start reading.</param>
/// <param name="pageLength">Number of rows to return.</param>
/// <param name="count">out parameter to get total records </param>
/// <remarks></remarks>
/// <returns>Returns a TList<Northwind.Entities.Orders></returns>
public override Northwind.Entities.TList<Orders> GetAll(
TransactionManager transactionManager,
int start,
int pageLength,
out int count)
{
WsProxy.NorthwindServices proxy = new WsProxy.NorthwindServices();
proxy.Url = this._url;
WsProxy.Orders[] items =
proxy.OrdersProvider_GetAll(start, pageLength, out count);
return Convert(items);
}
Gọi dịch vụ web thông qua lớp proxy và trả về truy vấn. Nó sẽ chuyển đổi các item vào trong TList thay vì trả lại mảng của các Orders proxy.
Vậy là chúng ta đã tìm hiểu xong .nettiers.
Chúc bạn thành công!