wcf-ve-web-apinin-ferqleri-hansini-secmeli

WCF və Web APInin fərqləri. Hansını seçməli?

Bu məqaləmizdə çox maraqlı məsələlərdən biri olan, müsabiqə suallarında soruşulan suallardan bəzilərini müzakirə edəcəyik. Məqaləni bitirdikdən sonra aşağıdakı suallara rahatlıqla cavab tapa biləcəksiniz:

-WCF-ı öyrənməyə dəyərmi? WCF köhnəlibmi?

-WCF və Web APİ arasındakı fərqlər nələrdir?

-Nə zaman WCF, nə zaman Web APİ istifadə etməliyəm?

               .NET platformasında uzun illər servislərin yazılması ilə bağlı müxtəlif texnologiyalar olub. Bu texnologiyalar ilk vaxtlar .NET remoting, Web Services, Enterprise Services, Socket communication daxil olub. .NET-in inkişafı ilə əlaqədar sonrada bu texnologiyaların göüdükləri işlər WCF-də(WindoWs Comminucation Foundation)-də birləşdirilib. Amma son zamanlar REST servislərin daha geniş vüsət alması ilə əlaqədar olaraq Web APİ bir qədər WCF servisləri qabaqlayıb.

               Hazırda .NET platformasında ən populyar servis yazılma texnologiyaları sözsüz ki, Web APİ və WCF-dir.

               Bəs ASP.NET Web APİ olan yerdə, WCF-ı öyrənməyə dəyərmi?

-BƏLİ! WCF bir texnologiya olaraq köhnəlməyib! Sadəcə Microsoft firması öz texnologiyalarında inkişafın pik nöqtəsinə çatan zaman həmin texnologiyaya çox az hallarda yeni update-lər daxil edir. Bu taleyi WCF də yaşadığına görə çoxları Microsoftun bu texnologiyasının köhnəldiyini düşünürlər.

WCF sadəcə inkişafının pik nöqtəsinə çatmağının qurbanı olub deyə bilərik. Əlbəttəki mən öz şəxsi fikrimə görə WCF-də servislərin yazılmasını hər bir .NET developer öyrənməlidir. 3-cü sualı cavablayan zaman hansı hallarda WCF servisləri yazacağınızı qeyd edəcəm. İndilik isə 2ci sualı cavablandırmağa keçək..

WCF və Web APİ arasındakı fərqlər nələrdir?

-Bu sualla çox böyük ehtimalki müsabiqədə olan zaman rastlaşacaqsınız.

1) WCF hələlik sadəcə .NET mühitində tam funksionallı işləyir. Web APİ-nin isə WinOS-dan heç bir asılılığı olmadığına görə rahatlıqla .NET CORE muhitində realizə olunub.

PS: Araşdırmalarıma görə .NET CORE-a hələlik inteqrasiya etmək fikirləri yoxdur. .NET mühitində WCF clientdotnet-svcutil tool əlavə etsələr də bu WinOS-dakı WCF-i heç bir halda əvəzləmir.(Sadəcə WCF servislərdən SOAP əsasında datanı alıb Proksi klient generasiya işinə yarayır) Hər şey bəlkə də WCF-dəki “W” hərfinə(burada Windows sözü) görədir..

2) WCF bir neçə protokolla işləyə bilir(TCP,HTTP,custom ..), həmçinin çox rahatlıqla bir protokoldan başqasına keçməyə imkan yaradır. Amma ASP.NET Web APİ sadəcə HTTP protokolu ilə işləyə bilir.

3) 2-ci bəndddən irəli gələrək deyə bilərik ki, WCF protokol baxımından daha abstraktdır,çünki protokoldan asılı olmayan realizasiyaya malikdir(protocol independent architecture) . WEB APİ isə protokol asılı olaraa realizə olunub.

4) WCF SOAP protokolu ilə işləyir və bağlı olaraq da WSDL generasiya edərək servisin daxilin strukturunu təsvir edir. Bunun hesabına klient proksi klasları generasiya olunur. Amma WEB APİ-də bunu adətən avtomatik generasiya olunmuş köməkçi html səhifələrlə edirlər.

5) WCF biristiqamətli,dubleks mesajlaşma prinsipini dəstəkləyir, WEB APİ isə sadəcə request-response prinsipini dəstəkləyir. Əlavə mesajlaşma şablonları üçün şəkildə SignalR və ya Web socketlər istifadə etməlidir.

6) WCF WS-*(dablyu-es-star) standartına əsasən daha yuxarı səviyyəli protokolları(Transactions, Realiable Messaging) dəstəkləyir. Web APİ isə bunların heç birini dəstəkləmir.

7) WCF servislər müxtəlif encoding formatlarını dəstəkləyir( MTOM, binary etc) amma Web APİdə bunlar media formatlarla əvəzlənib( json, xml və.s)

8) WCF WEB APİyə nisbətən daha nəhəng, daha geniş imkanlara malik servis yaratma texnologiyasıdır.

9) WCF SOAP ilə işləsə də müəyyən konfiqurasiyalar istifadə edərək REST servislər də yazmaq olar.

10) WCFdən fərqli olaraq WEB APİnin klient aspekti daha genişdir, daha çox klient qurğuları ilə RAHAT işləmə imkanına malikdir.

11) Web APİ servis interfeysi olaraq URL patternlər və HTTP metodlar istifadə edir. Amma WCF servis interfeys olaraq servis kontraktlar istifadə edir.

12) WEB APİnin cache mexanizmi HTTP protokolu ağırlıqlı aparılır, WCF-də isə cache ,yazılan servis tərəfindən handle olunur.

13) WEB APİ WCFdən fərqli olaraq heç bir konfiq və heç bir data kontrakt tələb etmir. WCF qəbul edib geri qaytaracağı kompleks tiplər üçün data kontrakt tələb edir.

14) Web APİ WCFə nisbətən daha sürətlidir.

15) Əgər performans və tez development prosesi bizimçün maraqlıdırsa ozaman WEB APİ ən yaxşı seçimdir.


-Nə zaman WCF, nə zaman Web APİ istifadə etməliyəm?

1) Əgər protokoldan asılı olmayan servis yazmaq lazımdırsa ozaman WCF ən yaxşı variantdır. Beləki bir servisin 2 klienti müxtəlif protokollarla müxtəlif formada data alaraq WCF-lə işləyə bilər. Bu imkan WEB APİdə yoxdur.

2) Əgər enterprise sistemlər üçün servis yazmaq lazımdırsa WCF ən yaxşı seçimdir.

3) Mobil qurğular və device oriented servis yazmaq üçün ən yaxşı variant Web APİdir.

4) WEB APİ WCF-ə nisbətən daha asan, daha az konfiqurasiya tələb edən öyrənilməsi daha asan texnologiyadır.

5) Əgər işlədiyiniz iş yerində WCFdə yazılmış sevis varsa,( ki böyük ehtimal olacaq) onu müşayiət etmək üçün mütləq WCF-i bilmək lazımdır.

 

Tural

Tural Süleymani

Süleymani Tural Microsoft-un MCSD statuslu mütəxəssisidir, 2008-ci ildən bu yana proqramlaşdırma üzrə tədris aparır

Müəllifin bu dildə ən son postları

Bu yazıları da bəyənə bilərsiniz