Mavzu: xml veb server xizmatlarini dasturlash modeli



Yüklə 23,36 Kb.
tarix19.04.2023
ölçüsü23,36 Kb.
#100531
modeli 1


MUSTAQIL ISH


Mavzu: XML veb server xizmatlarini dasturlash modeli

DataSet ob'ekti hech qanday manbalarga bog'lanmagan, bu esa Internet orqali ma'lumotlarni uzatishni qisman soddalashtirishga imkon beradi. Ma'lumotlar to'plami "seriyalashtiriladi", chunki u XML veb-xizmatlaridan mijozga va undan mijozga ma'lumotlar to'plami tarkibini oqimlash uchun qo'shimcha kodlashsiz kirish yoki chiqish sifatida belgilanishi mumkin. Ma'lumotlar to'plami bilvosita DiffGram formati yordamida XML oqimiga aylantiriladi, tarmoq orqali yuboriladi va keyin XML STREAM dan qabul qiluvchi tomonda ma'lumotlar to'plami sifatida tiklanadi. Bu XML veb-xizmatlari yordamida relyatsion ma'lumotlarni uzatish va qaytarish uchun oddiy va moslashuvchan usulni taqdim etadi. DiffGram formati haqida ko'proq ma'lumot olish uchun DiffGrams-ga qarang.


Quyidagi misol relyatsion ma'lumotlarni (shu jumladan o'zgartirilgan ma'lumotlarni) uzatish va barcha yangilanishlarni asl ma'lumotlar manbasiga qaytarish uchun DataSet-dan foydalanadigan veb-xizmat va XML mijozini qanday yaratishni ko'rsatadi.
Eslatma
XML veb-xizmatiga qo'ng'iroqlarning bir qismi sifatida DataSet yoki DataTable misollarini uzatish, agar kirish ishonchli bo'lmasa, xavfsiz emas. Qo'shimcha ma'lumot olish uchun DataSet va DataTable uchun xavfsizlik qo'llanmasiga qarang. Shuningdek, XML veb-xizmatini yaratishda har doim xavfsizlik oqibatlarini hisobga olishingizni tavsiya qilamiz. XML veb-xizmatini himoya qilish haqida ma'lumot olish uchun ASP.NET bilan yaratilgan XML veb-xizmatlarini himoya qilish-ga qarang.
XML veb-xizmatini yarating.
Ushbu misol ma'lumotlarni, bu holda Northwind ma'lumotlar bazasidan mijozlar ro'yxatini qaytaradigan XML veb-xizmatini yaratadi va XML veb-xizmati dastlabki ma'lumotlar manbasiga qaytaradigan ma'lumotlar yangilanishlari bilan ma'lumotlar to'plamini oladi.
XML veb-xizmati ikkita usulni taqdim etadi: mijozlar ro'yxatini qaytarish uchun GetCustomers va ma'lumotlar manbasiga yangilanishlarga ruxsat berish uchun UpdateCustomers. XML veb-xizmati DataSetSample.asmx nomli veb-serverdagi faylda saqlanadi. Quyidagi kod DataSetSample.asmx faylining mazmunini tavsiflaydi.
<% @ WebService Language = "C#" Class = "Sample" %>
using System;
using System.Data;
using System.Data.SqlClient;
using System.Web.Services;


[WebService(Namespace="http://microsoft.com/webservices/")]
public class Sample
{
public SqlConnection connection = new SqlConnection("Data Source=(local);Integrated Security=SSPI;Initial Catalog=Northwind");


[WebMethod( Description = "Returns Northwind Customers", EnableSession = false )]
public DataSet GetCustomers()
{
SqlDataAdapter adapter = new SqlDataAdapter(
"SELECT CustomerID, CompanyName FROM Customers", connection);


DataSet custDS = new DataSet();
adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
adapter.Fill(custDS, "Customers");


return custDS;
}
[WebMethod( Description = "Updates Northwind Customers",
EnableSession = false )]
public DataSet UpdateCustomers(DataSet custDS)
{
SqlDataAdapter adapter = new SqlDataAdapter();


adapter.InsertCommand = new SqlCommand(
"INSERT INTO Customers (CustomerID, CompanyName) " +
"Values(@CustomerID, @CompanyName)", connection);
adapter.InsertCommand.Parameters.Add(
"@CustomerID", SqlDbType.NChar, 5, "CustomerID");
adapter.InsertCommand.Parameters.Add(
"@CompanyName", SqlDbType.NChar, 15, "CompanyName");


adapter.UpdateCommand = new SqlCommand(
"UPDATE Customers Set CustomerID = @CustomerID, " +
"CompanyName = @CompanyName WHERE CustomerID = " +
"@OldCustomerID", connection);
adapter.UpdateCommand.Parameters.Add(
"@CustomerID", SqlDbType.NChar, 5, "CustomerID");
adapter.UpdateCommand.Parameters.Add(
"@CompanyName", SqlDbType.NChar, 15, "CompanyName");
SqlParameter parameter = adapter.UpdateCommand.Parameters.Add(
"@OldCustomerID", SqlDbType.NChar, 5, "CustomerID");
parameter.SourceVersion = DataRowVersion.Original;


adapter.DeleteCommand = new SqlCommand(
"DELETE FROM Customers WHERE CustomerID = @CustomerID",
connection);
parameter = adapter.DeleteCommand.Parameters.Add(
"@CustomerID", SqlDbType.NChar, 5, "CustomerID");
parameter.SourceVersion = DataRowVersion.Original;


adapter.Update(custDS, "Customers");


return custDS;
}
}


Odatdagi stsenariyda UpdateCustomers usuli optimistik parallellik buzilishini aniqlash uchun yozilgan. Oddiylik uchun, bu misolda bu ko'rsatilmagan. Optimistik parallellik haqida ko'proq ma'lumot olish uchun qarang.


XML Web Service proksi-serverini yarating.


XML Web Service mijozlari taqdim etilgan usullardan foydalanish uchun SOAP brokerini talab qiladi. Ushbu broker Visual Studio muhiti yordamida yaratilishi mumkin. Agar siz Visual Studio ichidan mavjud veb-xizmatga veb-ma'lumotnomani o'rnatsangiz, ushbu bosqichdagi barcha qadamlar muammosiz bo'ladi. Agar siz proksi-klassni o'zingiz yaratmoqchi bo'lsangiz, ushbu bo'limda o'qing. Biroq, ko'p hollarda Visual Studio yordamida mijoz ilovasi uchun proksi-klass yaratish kifoya.


Broker WSDL vositasi yordamida yaratilishi mumkin. Misol uchun, agar XML veb-xizmati http://myserver/data/DataSetSample.asmx URL manzilida ochilgan bo'lsa, WebData.DSSample nom maydoni bilan Visual Basic .NET proksi-serverini yaratish uchun quyidagi buyruqni bajaring va uni namunada saqlang. vb.


XML veb-xizmati mijozini yarating.


Agar siz Visual Studio-ning Web Service Proksi-klassini yaratishini istasangiz, shunchaki mijoz loyihasini yarating va Solution Explorer-da loyihani o'ng tugmasini bosing va Qo'shish>Xizmat ma'lumotnomasini tanlang. Xizmat havolasini qo'shish dialog oynasida Kengaytirilgan va keyin Veb havolasini qo'shish-ni tanlang. Mavjud veb-xizmatlar ro'yxatidan veb-xizmatni tanlang (bu veb-xizmat joriy yechimda yoki joriy kompyuterda mavjud bo'lmasa, veb-xizmatning so'nggi nuqtasi manzilini ko'rsatishni talab qilishi mumkin). Agar siz XML veb-xizmati proksi-serverini o'zingiz yaratsangiz (oldingi bosqichda tasvirlanganidek), uni mijoz kodiga import qilishingiz va XML veb-xizmati usullaridan foydalanishingiz mumkin.


Quyidagi kod misoli proksi-kutubxonani import qiladi, mijozlar ro'yxatini olish uchun GetCustomers usulini chaqiradi, yangi mijoz qo'shadi va keyin UpdateCustomers bilan DataSet-ni qaytaradi.


Ushbu misolda DataSet.GetChanges tomonidan qaytarilgan ma'lumotlar to'plami UpdateCustomers-ga uzatiladi, chunki UpdateCustomers-ga faqat o'zgartirilgan qatorlar o'tkazilishi kerak. UpdateCustomers hal qilingan ma'lumotlar to'plamini qaytaradi, keyinchalik ruxsat etilgan o'zgarishlar va yangilanishdagi har qanday qator xatosi tafsilotlarini kiritish uchun mavjud ma'lumotlar to'plamiga birlashtirilishi mumkin. Quyidagi kod veb-havolani yaratish uchun Visual Studio dan foydalanganingizni va veb-havolani qo'shish dialog oynasidagi veb-havolani DsSample deb o'zgartirganingizni taxmin qiladi.


using System;
using System.Data;


public class Client
{
public static void Main()
{
Sample proxySample = new DsSample.Sample(); // Proxy object.
DataSet customersDataSet = proxySample.GetCustomers();
DataTable customersTable = customersDataSet.Tables["Customers"];


DataRow row = customersTable.NewRow();
row["CustomerID"] = "ABCDE";
row["CompanyName"] = "New Company Name";
customersTable.Rows.Add(row);


DataSet updateDataSet = new DataSet();


updateDataSet =
proxySample.UpdateCustomers(customersDataSet.GetChanges());


customersDataSet.Merge(updateDataSet);
customersDataSet.AcceptChanges();
}
}


Agar siz o'zingizning vositachi sinfingizni yaratsangiz, quyidagi qo'shimcha bosqichlarni bajarishingiz kerak. Misolni kompilyatsiya qilish uchun yaratilgan proksi kutubxonaga (sample.dll) va bog'langan .NET kutubxonalariga ishora qiling. client.vb faylida saqlangan Visual Basic .NET misolining versiyasini kompilyatsiya qilish uchun quyidagi buyruqni bajaring.

Yüklə 23,36 Kb.

Dostları ilə paylaş:




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin