Friday, August 29, 2014

ASP.Net WebAPI 2 සිංහලෙන් - හැඳින්වීම


ASP.Net Web API 2 සංස්කරණය නිකුත් වෙලත් දැන් ටික කාලයක්, ඉතින් කෝඩින් සිංහලෙන් (Coding Sinhalen) කණ්ඩායමේ අපි හිතුවා Web API සම්බන්ධව අපේ Blog එකේ ලිපි පෙලක් පළ කරන්න මේ හොදම කාලය කියල. මෙහිදී අපි ප්‍රධාන වශයෙන් අපි ASP.Net Web API සම්බන්ධව ඔබට අවශ්‍ය කරන මූලික දැනුමේ සිට ගැඹුරු සංකල්ප දක්වා ගමන් කරන්න බලාපොරොත්තු වෙනව. මම මෙම හැඳින්වීමේ ලිපියෙන් පහත සඳහන් කරුණු කාරනා ගැන අවධානය යොමු කරනව.

  • හැඳින්වීම
  • RESTful Service එකක් කියන්නේ මොකක්ද?
  • මොනවද අවශ්‍ය කරන software?
  • ASP.Net Web API හි විශේෂ ලක්ෂණ මොනවාද?
  • ASP.Net Web API 2 හි විශේෂ ලක්ෂණ මොනවාද?
  • ඔබ ASP.Net Web API තෝරාගත යුත්තේ ඇයි?
  • ASP.Net Web API, Web Services, WCF, WCF REST අතර වෙනස් කම් මොනවාද?

හැඳින්වීම

පරිඝණක පද්ධති (Computer Systems) පසුගිය දස වසර තුල පරිණාමය වී ඇති ආකාරය ඉතාමත්ම විශ්මයජනක වේ. එදා තනි තනිව (Stand Alone) ක්‍රියාත්මක වූ පරිඝණක පද්ධති අද එකට එකතු වී එදා මෙන් සිය දහස් ගුණයක සේවාවක් සපයයි. අද වන විට එවැනි තනිව ක්‍රියාත්මක වන පරිඝණක පද්ධති ඇත්තේ ඉතාමත් සීමිත ප්‍රමාණයක් පමණි. ඒ වාගේම විවිධ වූ ජංගම උපාංග (Mobile Devices) වලින් එම පරිඝණක පද්ධති හා සම්බන්ධ වීමේ පහසුකම් සපයා ඇත. එනම් අන්තර්ජාලය (Internet) හරහා හෝ ජංගම උපාංගයක ඇති App එකක් හරහා පරිඝණක පද්ධති පරිශිලනය කිරීමේ හැකියාව අද නැතුවම බැරි අංගයක් වී ඇත.

මෙසේ විවිධ වූ උපාංග හා පරිඝණක පද්ධති අතර දත්ත(Data) හුවමාරු කර ගැනීමේ අභිලාෂයෙන් බිහිවූ තාක්ෂණික ක්‍රම විශාල ප්‍රමාණයක් ඇත. Microsoft සමාගමේ .Net Framework එකත් සමග අපිට මෙවැනි ක්‍රම කිහිපයක්ම භාවිතා කිරීමේ පහසුකම් සලසා දී තිබෙනව.
  1. Web Services - ඉතාමත්ම පැරණි තාක්ෂණයකි.
  2. WCF (Windows Communication Foundation)
  3. WebAPI
මේ අතරින් web services දැන් කල් පැන ගිය තාක්ෂණයක් වන අතර WCF හා WebAPI කරට කර භාවිතා වේ. Web services සඳහා SOAP(Simple Object Access Protocol) නැමති XML(Extensible Markup Language) මත පදනම් වූ protocalය භාවිතා වේ. එමගින් HTTP(Hyper Text Transfer Protocol) හරහා ඉතා පහසුවෙන් දත්ත හුවමාරු කරගත හැකි විය. එපමනක් නොව .Net, Java වැනි Programming platform සමග සම්බන්ධවීමේ හැකියාව මෙම තාක්ෂණය සතු විය (Cross platform communication). නමුත් එය සතු දුර්වලතාද විය. ප්‍රධාන ලෙස දත්තයට අමතරව එම protocolයේ ක්‍රියාකාරීත්වය සඳහා රැගෙන යා යුතු දත්ත ප්‍රමාණය සාපේක්ෂව විශාල වීම සැලකිය හැකිය. එම නිසා bandwidth එක අඩු සන්නිවේදන මාර්ග හරහා දත්ත හුවමාරුව අපහසු විය. මෙය පරිඝණක පද්ධතියේ අවසාන කාර්යක්ෂමතාව කෙරෙහි ඉතා අහිතකර ලෙස බලපාන ලදී. එමෙන්ම web services භාවිතා කිරීමේදී භාවිතා කරන්නාගේ (Client) අන්තයේදී proxy එකක් හරහා දත්ත හුවමාරු කරගත යුතු වේ. එම නිසා service එකේහි වෙනසක් සිදු කොට නිසි ආකාරව proxy එක update නොකලහොත් මුළු පද්ධතියේම බිඳ වැටීමක් ඇති විය හැකිය. Web Services ක්‍රමයෙන් අභාවයට යද්දී Microsoft සමාගම සිය .Net 3.0 Framework නිකුතුවත් සමගම මේ සඳහා ආදේශකයක් ලෙස WCF හඳුන්වාදෙන ලදී.

WCF, web services වලට වඩා ආරක්ෂිත, පහසු හා පරිණත දත්ත හුවමාරු මාධ්‍යයක් සපයාදෙන ලදී. එමෙන්ම WCF වල විශේෂ පහසුකමක් ලෙස එය HTTP හැරුණු විට වෙනත් protocol සඳහා ඉතා පහසුවෙන් configure කර ගත හැකි වීම සඳහන් කළ හැකිය (HTTP, TCP, IPC සහ Message Queues). එමෙන්ම WCF භාවිතයෙන් අපිට REST(Representational State Transfer) services ද ගොඩනගා ගත හැකි අතර ඒවා WCF REST නමින් හඳුන්වයි (RESTful Services ගැන අපි පසුවට කතා කරමු). WCF RESTful services වල ප්‍රධාන අවාසියක් ලෙස විශාල වශයෙන් configurations අවශ්‍ය වීම දැක්විය හැකිය. නමුත් ඔබට one way messaging, message queues සහ duplex communication වැනි තාක්ෂණයන් භාවිතා කිරීමට අවශ්‍ය නම් අදටත් ඔබට WCF service එකක් භාවිතා කිරීමට සිදුවනු ඇත.

ASP.Net WebAPI යනු මෑත කාලීනව භාවිතයට පැමිණි RESTful service සාදාගත හැකි framework එකකි.එ එහි ප්‍රධානම වාසිය වනුයේ ඉතා පුළුල් වූ සේවාලාභීන් (Clients) සඳහා සේවාව සැපයීමේ හැකියාවයි, එය web browser වල සිට ඔබේ smart phone එක දක්වා විහිදී යියි. ASP.Net WebAPI MVC framework එකේ කොටසක් නොවේ, නමුත් එය MVC ව්‍යාපෘති (Projects) වලදීද Web Forms හෝ standalone web service වලදී වුවද යොදා ගත හැකිය. මෙහිදී database සමඟ දත්ත හුවමාරුව සඳහා අපිට Entity Framework යොදා ගත හැකිවේ. 


RESTful Service එකක් කියන්නේ මොකක්ද?

අපි මීලගට RESTful Service (Representational State Transfer) ගැන කතා කරමු. සරලව මේ ගැන කියනවානම් එය HTTP මත ක්‍රියාත්මක වන distributed environment එකක් හරහා දත්ත හුවමාරු කරගැනීම සඳහා සැකසුණු protocol එකකි. මෙහිදී අපගේ service එක resource එකක් ලෙස සලකා ඒ මත විවිධ වූ ක්‍රියාකාරකම් HTTP හරහා සිදු කිරීම විශේෂ වේ. HTTP methods කිහිපයක් මේ සඳහා භාවිතා වේ.


  • GET - මෙය දත්ත ලබා ගැනීම සඳහා වේ.
  • PUT - දත්ත යාවත්කාලීන (Update) කිරීම සඳහා භාවිතා කරයි.
  • POST - දත්ත තැන්පත් (Create) කිරීම සඳහා යොදා ගනියි.
  • DELETE - දත්ත මකා දැමීම සඳහා වේ.
WCF, RESTfull service එකක් ලෙස සකස් කර ගැනීමට හැකි වුවද එය යම් ප්‍රමාණයකට සංකීර්ණ වූ ක්‍රියාවලියකි. නමුත් ඔබ WebAPI මේ සඳහා යොදාගනී නම් එය වඩාත් සරල සේ දැනෙනු ඇත.

මොනවද අවශ්‍ය කරන software?

  1. ඔබට මේ tutorial එක සඳහා Microst Visual Studio 2013 සංස්කරණය අවශ්‍ය වේ. (Express edition එක වුවද ප්‍රමාණවත්ය). http://www.visualstudio.com/en-us/products/visual-studio-express-vs.aspx
  2. Microsoft SQL Server 2014 (Express edition එක වුවද ප්‍රමාණවත්ය). http://www.microsoft.com/en-us/download/details.aspx?id=42299

ASP.Net Web API හි විශේෂ ලක්ෂණ මොනවාද?

  1. HTTP ප්‍රතිචාර වල Accept Header සහ HTTP status code අන්තර්ගත වීම.
  2. HTTP ප්‍රතිචාර WebAPI හි MediaTypeFormatter මගින් JSON, XML හෝ ඔබ ඊට ඇතුලත් කරන format එකකට format කිරීම.
  3. PDF හෝ Images වැනි objects නොවන දෑ සඳහාද WebAPI සහය දැක්වීම.
  4. IIS(Internet Information Services) වල හෝ Application හි ස්ථාපිත කිරීමේ හැකියාව.
  5. MVC ලක්ෂණ වන routing, controllers, action results, filter, model binders සඳහා සහය දැක්වීම.

ASP.Net Web API 2 හි විශේෂ ලක්ෂණ මොනවාද?

  1. Attribute Routing.
  2. CORS - Cross Origin Resource Sharing.
  3. OWIN(Open Web Interface for .Net) self hosting.
  4. IHttpActionResult.
  5. Web API OData(Open Data Protocol).

ඔබ ASP.Net Web API තෝරාගත යුත්තේ ඇයි?

  1. ඔබට SOAP based service එකක් අනවශ්‍ය විටකදී හොඳම විසඳුම වීම.
  2. ඉතා කරදරකාරී configuration වලින් තොර වීම.
  3. සරලව RESTfull Service එකක් සාදා ගත හැකි වීම (Http මත පමණක් පදනම් වී ඇති නිසා).
  4. Light weight architecture එකක් නිසා අඩු bandwidth එකක් ඇති ජංගම උපාංග සඳහාද හිතකර වීම.
  5. WebAPI, Open Source වීම.

ASP.Net Web API, Web Services, WCF, WCF REST අතර වෙනස් කම් මොනවාද?

  • Web Service සහ WCF, SOAP මත පදනම් වන අතර දත්ත XML ලෙස හුවමාරු කර ගනී.
  • Web Service HTTPට පමණක් සහය දක්වන අතර WCF TCP, HTTP, HTTPS, Named Pipes සහ MSMQ protocols වලට සහය දක්වයි.
  • Web Service,WCF සහ WCF REST, open source නොවන අතර WebAPI open source වෙයි.
  • Web Service හා WCF REST IIS වල පමණක් host කල හැකි අතර WCF හා WebAPI IIS වල හෝ application එක තුල host කල හැකිය.
  • WCF REST, HTTP Get හා Post verbs වලට සහය දක්වද්දී WebAPI HTTP හි සියළුම features භාවිතා කරයි (URIs, request/response headers, cashing, versioning, content formats).
  • WebAPI MVC features වන routing, action results, controllers, model binders වැනි දේ සඳහාද සහය දක්වයි.
  • Web Services හා WCF හි ප්‍රතිචාර XML format එකෙන් ලැබෙන අතර WCF REST XML, JSON සහ ATOM යන format වලයට සහය දක්වයි. WebAPI හිදී ඔබට MediaTypeFormatter මගින් ඔබට අවශ්‍ය ආකාරයට format එක වෙනස් කර ගත හැකිය.
Microsoft සමාගමේ WebAPI ගැන ඔබට යම් දුරකට අවබෝධයක් මෙයින් ලැබෙන්න ඇති, ගොඩක් ගැටළුත් ඇති, ඔබලාගේ අදහස්, යෝජනා, චෝදනා හා ගැටළු comment මගින් මේ ලිපියට යොමු කරන්න එය මී ලග ලිපිය සඳහා මහගු පිටුවහලක් වනවා ඇති.

ආශ්‍රිත ලිපි :


2 comments:

  1. GET AND POST METHOD also use data send - get= via url speed , post = hide data sending and aslo slow

    ReplyDelete
    Replies
    1. Actually it is not recommened to send data using GET methods, in URL we only pass parameters which are required to get data. If sending data to save some where (database) you should use POST method.

      Delete