Presentation is loading. Please wait.

Presentation is loading. Please wait.

فصل دو : Web API و Web Service فصل دو : Web API و Web Service دوره SOA استانداری قم - جواد تقی زاده.

Similar presentations


Presentation on theme: "فصل دو : Web API و Web Service فصل دو : Web API و Web Service دوره SOA استانداری قم - جواد تقی زاده."— Presentation transcript:

1 فصل دو : Web API و Web Service فصل دو : Web API و Web Service دوره SOA استانداری قم - جواد تقی زاده

2 Web Service یا Web API روشی برای ارتباط بین ابزارهای الکترونیکی در اینترنت می باشد A Web service is a method of communication between two electronic devices over the World Wide Web In other words, a web service helps to convert your application into a web-based application.

3 دوره SOA استانداری قم - جواد تقی زاده نمونه Web API یا سرویس وب سایت جستجوی لزوم داشتن API Key JSON son son JSON-P son&jsoncallback=mycallback son&jsoncallback=mycallback XML ml ml RSS ss ss

4 دوره SOA استانداری قم - جواد تقی زاده نمونه موتورهای جستجوهای Web API یا وب سرویس Web Service Search Engine:

5 دوره SOA استانداری قم - جواد تقی زاده Seekda.Com Shutdown

6 دوره SOA استانداری قم - جواد تقی زاده Programmableweb.Com API News API Directory Mashup جستجو در API

7 دوره SOA استانداری قم - جواد تقی زاده Programmableweb.Com نگهداری API های مدل مختلف : –AIM (OSCAR) –Atom –Blogger –DTC-XML –GData –hCalendar –iCal –JavaScript –JSON-RPC –REST –RSS –SMS –SOAP –XML-RPC –XMP

8 دوره SOA استانداری قم - جواد تقی زاده Web Service markup languages There are a number of web services that use markup languages: JSON-RPC JSON-WSP Web template Web Services Description Language (WSDL) from the W3C Web Services Description LanguageW3C XML Interface for Network Services (XINS) provides a POX-style Web service specification format XML Interface for Network ServicesPOX Web Services Conversation Language (WSCL) Web Services Conversation Language Web Services Flow Language (WSFL) (superseded by BPEL) Web Services Flow LanguageBPEL WS-MetadataExchange Representational state transfer (REST) versus remote procedure call (RPC) Representational state transferremote procedure call XML-RPC - XML Remote Procedure Call XML-RPC

9 دوره SOA استانداری قم - جواد تقی زاده Web APIs رشد Significant growth of Web APIs > 5,400 Web APIs on ProgrammableWeb (including SOAP and REST APIs) [end of 2009: ca. 1,500 Web APIs] > 6,500 Mashups on ProgrammableWeb (combining Web APIs from one or more sources) SOAP services are only a small part of the overall available public services 9

10 دوره SOA استانداری قم - جواد تقی زاده تاریخچه Web services Web Services have evolved through three distinct Phases. PhasePeriodDescription Set timeline for the adoption of Web Services. Many Web Services development tools delivered from Microsoft, IBM, Sun, Software AG, Oracle and many others Business Web Services start to appear in large numbers. Adoption of UDDI Registries in % of financial services transactions leveraged in Web Services models >A number of issues of previous phases are addressed. These include: Quality of Service (QoS); network reliability; transaction recovery; real-time messaging; security; and billing mechanisms. Adapted dynamic Web Services. Organizations changed not only their business processes, but also their business models as they move to real-time collaboration and integration of processes both within and between enterprises..

11 دوره SOA استانداری قم - جواد تقی زاده

12 Stubs چیست؟ A stub is a small program routine that substitutes for a longer program, possibly to be loaded later or that is located remotely. The stub accepts the request and then forwards it (through another program) to the remote procedure. When that procedure has completed its service, it returns the results or other status to the stub which passes it back to the program that made the request.

13 دوره SOA استانداری قم - جواد تقی زاده

14 WEB Services REST Services SOAP XML-RPCJSON Semantic Web Services انواع پروتکل وب سرویس

15 دوره SOA استانداری قم - جواد تقی زاده مقایسه CORBA با وب سرویسها Corba شی محور است در حالیکه وب سرویس پیام محور Corba اتصال قوی است در حالیکه وب سرویس ها اتصال ضعیف هستند در Corba محتوای باینری CDR منتقل می شود در حالیکه در وب سرویس XML منتقل می شود Corba دارای State است ولی وب سرویس بدون State است مخزن سرویس در Corba، Corba Naming Service است در وب سرویس UDDI است

16 دوره SOA استانداری قم - جواد تقی زاده XML-RPC

17 دوره SOA استانداری قم - جواد تقی زاده XML-RPC چیست؟ XML-RPC is a remote procedure call protocol using XML as data format and HTTP as transport protocol.

18 دوره SOA استانداری قم - جواد تقی زاده مقایسه SOAP و XML-RPC FeatureXML-RPCSOAP basic scalarsyes structsyes arraysyes named structs and arraysnoyes detailed fault handlingyes short learning curveyesno Developers specified character set no yes (US-ASCII, UTF-8, UTF-16) Developer defined data types noyes Can specify recipientnoyes require client understanding noyes message specific processing instructions noyes

19 دوره SOA استانداری قم - جواد تقی زاده معماری XML-RPC

20 دوره SOA استانداری قم - جواد تقی زاده XML-RPC Where to use XML-RPC XML-RPC may be suited for simple applications or situations where clients implemented in different technologies need to interact with a server with simple read-write operations where a more complex middleware technology would be overkill. XML-RPC is a solution to integrate different platforms with a simple middleware. XML-RPC is very simple so it can be implemented also for platforms without open source or commercially available XML-RPC libraries

21 دوره SOA استانداری قم - جواد تقی زاده XML-RPC Data Types NameTag ExampleDescription array 1404 Something here 1 ArrayArray of values, storing no keys base64 eW91IGNhbid0IHJlYWQgdGhpcyE= Base64Base64-encoded binary data boolean 1 BooleanBoolean logical value (0 or 1) date/time T14:08:55 Date and time in ISO 8601 formatISO 8601 double Double precisionDouble precision floating point number integer 42 Whole number, integerinteger string Hello world! or Hello world! String of characters. Must follow XML encoding.XML encoding struct foo 1 bar 2 Associative array nil Discriminated null valueDiscriminated null value; an XML-RPC extensionextension

22 دوره SOA استانداری قم - جواد تقی زاده XML-RPC نحوه فراخوانی متد و دریافت پاسخ XML-RPC Request examples.getStateName 40 XML-RPC Response South Dakota XML-RPC Fault faultCode 4 faultString Too many parameters. XML-RPC Fault faultCode 4 faultString Too many parameters.

23 دوره SOA استانداری قم - جواد تقی زاده پیاده سازی XML-RPC Python xmlrpclib Renamed xmlrpc.client in Python 3.xmlrpc.client C++ Libiqxmlrpc Ultra lightweight XML-RPC library for C++ XML-RPC for C and C++ XmlRpc++ XmlRpc C++ client for Windows gSOAP toolkit for C and C++ supporting XML-RPC and more libmaia: XML-RPC for Qt/C++ XML-RPC Client S60: XML-RPC for Symbian/C++ Objective-C / GNUstep / Cocoa XMLRPC Framework Erlang XML-RPC for Erlang

24 دوره SOA استانداری قم - جواد تقی زاده پیاده سازی XML-RPC Groovy XML-RPC Module Java Apache XML-RPCApache XML-RPC: Open source library for Java XML-RPC Delight Redstone XML-RPC LibraryRedstone XML-RPC Library: Redstone's Open Source Library – XML-RPC implementation in Java XML-RPC Library for Java MEXML-RPC Library for Java ME: Open source client-side library for Java ME aXMLRPCaXMLRPC: Open source XML-RPC client library for Java and Android JavaScript XML-RPC for Node.jsXML-RPC for Node.js: Open source JavaScript XML-RPC client and server for node.js Mimic XML-RPCMimic XML-RPC: Open source JavaScript XML-RPC client cross-browser. XMPP pyJabberXMLRPCpyJabberXMLRPC: Python classes for XMPP Jabber-RPCJabber-RPC: Over the Extensible Messaging and Presence Protocol protocolExtensible Messaging and Presence Protocol

25 دوره SOA استانداری قم - جواد تقی زاده پیاده سازی XML-RPC PHP XmlRpc in Zend_Framework 2.2XmlRpc in Zend_Framework 2.2: XmlRpc Server and Client in Zend_Framework 2 Perl RPC::XMLRPC::XML: A set of Perl classes for core data, message and XML handling Frontier::RPCFrontier::RPC: Another set of Perl modules for XML-RPC client/server implementation XML::Compile::RPCXML::Compile::RPC: RPC extension to XML::CompileXML::Compile Other JSON/XML-RPC Client and ServerJSON/XML-RPC Client and Server: Abstract away the differences between JSON-RPC and XML-RPC RemObjects SDKRemObjects SDK Delphi and.NET package for XML-RPC, in addition to SOAP and othersSOAP RealThinClient SDKRealThinClient SDK: For Delphi/C++ XML-RPC for ActionScriptXML-RPC for ActionScript: For Flash ActionScript 2.0 as3-rpclibas3-rpclib: For Flex/Actionscript 3 XML-RPC.NETXML-RPC.NET: Open source library for.NET clients and servers XmlRpc-LightXmlRpc-Light: Client and server library for OCaml S-XML-RPCS-XML-RPC: Client and server library for Common Lisp clj-xmlrpcclj-xmlrpc: XML-RPC client for Clojure necessary-evilnecessary-evil: XML-RPC Client and Ring-based Server for Clojure HaXRHaXR: Client and server library for Haskell Ruby XML-RPC libraryRuby XML-RPC library: For Ruby XML-RPC interface to LuaXML-RPC interface to Lua: For LuaLua android-xmlrpcandroid-xmlrpc: A light XML-RPC client for Google Android XML-RPC for TclXML-RPC for Tcl: A Tcl implementation of XML-RPC providing client and server support RebXRRebXR: a full client/server XML-RPC implementation for REBOL

26 دوره SOA استانداری قم - جواد تقی زاده Asp.net XML-RPC Statename.rem: public class StateNameService : XmlRpcService { [XmlRpcMethod("examples.getStateName", Description="Return name of state given its number")] public string getStateName(int stateNum) { if (stateNum == 41) return "South Dakota"; else return "Don't know"; } Web.Config

27 دوره SOA استانداری قم - جواد تقی زاده JSON-RPC

28 دوره SOA استانداری قم - جواد تقی زاده JSON-RPC چیست؟ روش فراخوانی تابع از راه دور(RPC) است شباهت زیادی به XML-RPC بالاخص سادگی و قابلیت استفاده در Client ها ساختار پیام های ارسالی و دریافتی به جای XML مبتنی JSON (Javascript Object Notation) می باشد پشتیبانی از UTF-8 سایت رسمی:

29 دوره SOA استانداری قم - جواد تقی زاده JSON نمونه ای از ساختمان داده { "firstName": "John", "lastName": "Smith", "address": { "streetAddress": "21 2nd Street", "city": "New York", "state": "NY", "postalCode": }, "phoneNumbers": [ " ", " " ] } Name/Value Pairs Number data type String Array Child properties

30 دوره SOA استانداری قم - جواد تقی زاده JSON Data Types Primitive types: string Sequence of 0..n Unicode characters, enclosed in quotation marks. Example: hello world number Numerical value (represention as used in most programming languages). Examples: 3.45, 5E3 boolean true / false value null Null value (= no object or no value) Structured types: Array Ordered sequence of 0..n values. Example: [1,3,4] Object Unordered collection of 0..n name:value pairs. Name = string Value = string, number, boolean, null, object, array. Example: {"jsonrpc": "2.0", "method": "update", "params": [1,2,3,4,5]}

31 دوره SOA استانداری قم - جواد تقی زاده JSON Data Structures

32 دوره SOA استانداری قم - جواد تقی زاده JSON vs. XML JSONXML Data Structure No validation systemXSD No namespacesHas namespaces (can use multiples) Parsing is just an eval Fast Security issues Parsing requires XML document parsing using things like XPath In JavaScript you can work with objects – runtime evaluation of types In JavaScript you can work with strings – may require additional parsing Security: Eval() means that if the source is not trusted anything could be put into it. Libraries exist to make parsing safe(r) Security: XML is text/parsing – not code execution.

33 دوره SOA استانداری قم - جواد تقی زاده JSON-RPC انواع پیام ها: 1.Request: Method invokation with arguments encoded in JSON. 2.Response: Reply to method invokation containing the return argument encoded in JSON. لزوم استفاده شناسه پیام (requestid) برای پیام های درخواست 3. Notification: Asynchronous request without response. اختیاری بودن برای پیام های اعلان(Notification)

34 دوره SOA استانداری قم - جواد تقی زاده مثال های JSON-RPC RPC call with parameters: فراخوانی تابع تفاضل با مقدارهای 84 و 42 و شماره پیام 1 Request: {"jsonrpc": "2.0", "method": "subtract", "params": [84, 42], "id": 1} Response: {"jsonrpc": "2.0", "result": 42, "id": 1} RPC call with named parameters: Request: {"jsonrpc": "2.0", "method": "subtract", "params": {"subtrahend": 42, "minuend": 84}, "id": 3} Response: {"jsonrpc": "2.0", "result": 42, "id": 3} Notification: بروز رسانی Request: {"jsonrpc": "2.0", "method": "update", "params": [1,2,3,4,5]} RPC call with invalid JSON: Request: {"jsonrpc": "2.0", "method": "foobar, "params": "bar", "baz] } Response:3 {"jsonrpc": "2.0", "error": {"code": , "message": "Parse error."}, "id": null}

35 دوره SOA استانداری قم - جواد تقی زاده کاربردهای JSON-RPC 1- مدیریت ابزارها و سخت افزار (Device) بر بستر اینترنت (مناسبتر از پروتکل SNMP یا Simple Network Management Protocol که توسط فایروالها فیلتر می گردد ) 2- امکان Server Push ، به علت مبتنی بودن بر جاوااسکریپت و امکان اجرا جاواسکریپت بر روی کلاینت ها امکان بروز کردن وضعیت کلاینت ها وجود دارد Web application where the web server needs to update the client (server push). JSON-RPC, as its name implies, was derived from Javascript. The client side of the application is usually Javascript based (e.g. AJAX).

36 دوره SOA استانداری قم - جواد تقی زاده پیاده سازی JSON-RPC NameDescriptionLanguage(s) JSON-RPC.NET A fast, open-source JSON-RPC 2.0 server. Supports sockets, pipes, and HTTP with ASP.NET. Requires Mono or.NET Framework 4.0..NET jsonrpc-cC library for JSON-RPC on TCP sockets (server only)C Jsonrpc Transport-independent JSON-RPC server with parameters validation via jansson C libjson-rpc-cpp Open source JSON-RPC framework for C++, including client/server support via HTTP and a stub generator C++ JsonRpc-CppOpen source JSON-RPC implementation in C++C++ Superobject (was JSON Toolkit) An implementation for DelphiDelphi corn-gate JSON-RPC 2.0/HTPP, REST/HTTP supporting framework that runs on WEB Application servers. POJO, Spring, EJB like objects can be easily exposed. Java Jsonrpc4j Java implementation JSON-RPC 2.0 supporting streaming as well as HTTP servers. It also has support for spring service exporter\consumer. Java jsonrpcjs JavaScript client library for JSON-RPC 2.0, supports call batching has no dependency on external libraries. JavaScript easyXDM Library for cross-domain messaging with a built-in RPC feature. The library supports all web browsers by using a mix of postMessage, nix, frameElement, window.name, and FIM, and is very easy to use. JavaScript

37 دوره SOA استانداری قم - جواد تقی زاده JSON&Jquery&Asp.net لیست وابسته $(document).ready(function() { $("#ddlStates").change(function() { $("#ddlCities").html(""); var StateID = $("#ddlStates > if (StateID != 0) { $.getJSON('LoadCities.ashx?StateID=' + StateID, function(cities) { $.each(cities, function() { //$("#ddlCities").append(" " + this['City'] + " "); $("#ddlCities").append($(" ").val(this['ID']).html(this['City'])); }); } }); using System; using System.Web; using System.Text; public class LoadCities : IHttpHandler { public void ProcessRequest (HttpContext context) { string StateID = context.Request.QueryString["StateID"]; StringBuilder strCities = new StringBuilder(); if (StateID == "1") { strCities.Append("["); strCities.Append("{"); strCities.Append("\"City\":\"Chennai\","); strCities.Append("\"ID\":\"1\""); strCities.Append("},"); strCities.Append("{"); strCities.Append("\"City\":\"Coimbatore\","); strCities.Append("\"ID\":\"2\""); strCities.Append("}"); strCities.Append("]"); } context.Response.ContentType = "application/json"; context.Response.ContentEncoding = Encoding.UTF8; context.Response.Write(strCities.ToString()); context.Response.End(); } public bool IsReusable { get { return false; } استفاده از HttpHandler

38 دوره SOA استانداری قم - جواد تقی زاده Asp.Net JSON Web Service $.ajax({ type: 'POST', url: 'WebService.asmx/GetCities', data: "{}", contentType: "application/json; charset=utf-8", dataType: "json", error: function (jqXHR, textStatus, errorThrown) { alert(jqXHR.responseText); }, success: function (data) { var cities = data.d; $.each(cities, function (index, cities) { alert("City Name: " + cities.Name + "\nID: " + cities.ID); }); } }); using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; using System.Runtime.Serialization.Json; using System.Web.Script.Services; [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [ScriptService] public class WebService : System.Web.Services.WebService { public WebService() { } [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public CityList GetCities() { CityList oBoCityList = new CityList() { new City { Name = "New Delhi", ID = 1 }, new City { Name = "Kanpur", ID = 2 }, new City { Name = "Gurgaon", ID = 3 } }; return oBoCityList; } public class City { public City() { } public string Name { get; set; } public Int32 ID { get; set; } } public class CityList : List { public CityList() { } } استفاده از ScriptService

39 دوره SOA استانداری قم - جواد تقی زاده JSONP

40 دوره SOA استانداری قم - جواد تقی زاده JSONP JSONP or "JSON with padding" is a communication technique used in JavaScript programs which run in Web browsers. It provides a method to request data from a server in a different domain, something prohibited by typical web browsers because of the same origin policy.JSONJavaScriptsame origin policy In July 2005 George Jempty suggested an optional variable assignment be prepended to JSON. [9][10] The original proposal for JSONP, where the padding is a callback function, appears to have been made by Bob Ippolito in December 2005 [11] and is now used by many Web 2.0 applications such as Dojo Toolkit, Google Web Toolkit, [12] and Web services. [9][10] [11]Web 2.0Dojo ToolkitGoogle Web Toolkit [12]Web services Under the same origin policy, a web page served from server1.example.com cannot normally connect to or communicate with a server other than server1.example.com. A few exceptions include the HTML element. Exploiting the open policy for elements, some pages use them to retrieve JavaScript code that operates on dynamically generated JSON-formatted data from other origins. This usage pattern is known as JSONP. Requests for JSONP retrieve not JSON, but arbitrary JavaScript code. They are evaluated by the JavaScript interpreter, not parsed by a JSON parser.HTML

41 دوره SOA استانداری قم - جواد تقی زاده XINS XML Interface for Network Services

42 دوره SOA استانداری قم - جواد تقی زاده XINS API specification file My first XINS API function definition Greets the indicated person. The name of the person to be greeted. The constructed greeting.

43 دوره SOA استانداری قم - جواد تقی زاده XML Interface for Network Services(XINS) std&_function=SayHello&firstName=John&lastName=Doe Result: Hello John Doe!

44 دوره SOA استانداری قم - جواد تقی زاده مقایسه مدل سنتی RPC با وب سرویس

45 دوره SOA استانداری قم - جواد تقی زاده

46 HTTP& RSOA RFC 2616: Http Methods: RFC 2616 OPTIONS GET HEAD POST PUT DELETE TRACE CONNECT HTTP Methods How are you manipulating a resource?

47 دوره SOA استانداری قم - جواد تقی زاده HTTP& RSOA GET a representation of a resources GET /people HTTP/1.1 POST a new representation of a resource POST /people HTTP/1.1 Content-Type: application/x-www-form-urlencoded fn=Bradley+Holt&url=http%3A%2F%2Fbradley- holt.blogspot.com%2F PUT a modi!ed representation of a resource PUT /people/bradley-holt HTTP/1.1 Content-Type: application/x-www-form-urlencoded fn=Bradley+Holt&url=http%3A%2F%2Fbradley- holt.blogspot.com%2F

48 دوره SOA استانداری قم - جواد تقی زاده HTTP& RSOA DELETE a resource. DELETE /people/bradley-holt HTTP/1.1 پاسخ ها HTTP/ OK HTTP/ Created HTTP/ Accepted HTTP/ Moved Permanently HTTP/ Found HTTP/ Bad Request HTTP/ Unauthorized HTTP/ Forbidden HTTP/ Not Found HTTP/ Method Not Allowed:Allow: GET, PUT, DELETE HTTP/ Conflict HTTP/ Internal Server Error HTTP/ Service Unavailable

49 دوره SOA استانداری قم - جواد تقی زاده

50 SOAP Web Service

51 دوره SOA استانداری قم - جواد تقی زاده سال 1998 ارائه شد SOAP is a communication protocol SOAP is for communication between applications SOAP is a format for sending messages SOAP communicates via Internet SOAP is platform independent SOAP is language independent SOAP is based on XML SOAP is simple and extensible SOAP allows you to get around firewalls SOAP is a W3C recommendation Using SOAP over HTTP allows for easier communication through proxies and firewalls than previous remote execution technology(but not required!). SOAP

52 دوره SOA استانداری قم - جواد تقی زاده SOAP message exchange mechanism

53 دوره SOA استانداری قم - جواد تقی زاده نکات دیگر در خصوص Soap پشتیبانی خوب از SOAP در Sun, Java,.NET and Flex پشتیبانی ضعیف از SOAP در PHP و Python جایگزین ها REST سایر متدهای RPC مانند XML-RPC و یا تکنولوژی های میان افزار مانند CORBA

54 دوره SOA استانداری قم - جواد تقی زاده سه عنصر کلیدی در وب سرویس استاندارد

55 دوره SOA استانداری قم - جواد تقی زاده SOAP) Simple Object Access Protocol) ساختاري براي تبادل پیامهاي در قالب XML است که بین سرویس هاي وب مبادله می شود WSDL) Web service Description Language) زبانی مبتنی بر XML جهت توصیف ویژگی هاي عملیاتی سرویس هاي وب استفاده می شود و داراي دو بخش تعریف واسط و پیاده سازي است. UDDI یا Universal Description,Discovery and Integration واسطی است براي انتشار و شناسائی سرویس هاي وب و شامل یک مخزن می شود که ارائه دهندگان به انتشار و تبلیغ سرویس خود می پردازند تا دیگران بتوانند آن را شناسائی کنند. سه عنصر کلیدی در وب سرویس استاندارد

56 دوره SOA استانداری قم - جواد تقی زاده Web Service Technology Stack 4 لایه تکنولوژی در وب سرویس (Technology Stack) لایه پیام رسانی لایه توصیف و کشف سرویس لایه کیفیت سرویس لایه فرایندهای وب سرویس

57 دوره SOA استانداری قم - جواد تقی زاده

58 ساختار سند شرح وب سرویس (Web service description document)

59 دوره SOA استانداری قم - جواد تقی زاده درخت ساختار WSDL 1.1

60 دوره SOA استانداری قم - جواد تقی زاده WSDL 1.1 Term WSDL 2.0 Term Description Service Contains a set of system functions that have been exposed to the Web-based protocols. PortEndpoint Defines the address or connection point to a Web service. It is typically represented by a simple HTTP URL string. Binding Specifies the interface and defines the SOAP binding style (RPC/Document) and transport (SOAP Protocol). The binding section also defines the operations.RPC PortTypeInterface Defines a Web service, the operations that can be performed, and the messages that are used to perform the operation. Operation Defines the SOAP actions and the way the message is encoded, for example, "literal." An operation is like a method or function call in a traditional programming language. Messagen/a Typically, a message corresponds to an operation. The message contains the information needed to perform the operation. Each message is made up of one or more logical parts. Each part is associated with a message-typing attribute. The message name attribute provides a unique name among all messages. The part name attribute provides a unique name among all the parts of the enclosing message. Parts are a description of the logical content of a message. In RPC binding, a binding may reference the name of a part in order to specify binding-specific information about the part. A part may represent a parameter in the message; the bindings define the actual meaning of the part. Messages were removed in WSDL 2.0, in which XML schema types for defining bodies of inputs, outputs and faults are referred to simply and directly. Types Describes the data. The XML Schema language (also known as XSD) is used (inline or referenced) for this purpose.XML Schema

61 دوره SOA استانداری قم - جواد تقی زاده WSDL: Description& Types ... Type های درخواست و پاسخ برای هر متد تعریف می شود

62 دوره SOA استانداری قم - جواد تقی زاده WSDL: Interfaces متد ها در قسمت Operation تعریف می شود

63 دوره SOA استانداری قم - جواد تقی زاده WSDL:Binding در این قسمت binding تعریف می شود شامل تعیین پروتکل انتقا، سبک وب سرویس (RPC/Document)RPC

64 دوره SOA استانداری قم - جواد تقی زاده WSDL: Service Name & EndPoint در این قسمت نام سرویس، آدرس سرویس و نحوه اتصال به وب سرویس در قسمت endpoint ها تعریف می شود

65 دوره SOA استانداری قم - جواد تقی زاده نمونه WSDL نسخه یک وب سرویس با تابع HelloWorld

66 دوره SOA استانداری قم - جواد تقی زاده نمونه WSDL وب سرویس با تابع HelloWorld

67 دوره SOA استانداری قم - جواد تقی زاده ساختار پیام SOAP اجزا : Header Body Fault

68 دوره SOA استانداری قم - جواد تقی زاده نمونه SOAP uuid:093a2da1-q r-ba5d- pqff98fe8j7d T13:20: :00 Åke Jógvan Øyvind New York Los Angeles late afternoon aisle Los Angeles New York mid-morning none

69 دوره SOA استانداری قم - جواد تقی زاده ایده و واقعیت مخزن سرویس (UDDI) ایده و هدف مخزن سرویس (UDDI registry and lookup service یا nodes) UDDI was conceived as a universal business registry similar to search engines (Google et. al.) where services can be located based on different criteria. واقعیت : UDDI did not gain widespread use as yet even though it had the backing of large companies like IBM and Microsoft. UDDI is mostly used in limited environments (inside companies). For that purpose, UDDI is too complicated and most of the data provided by UDDI is not needed. Microsoft, IBM and SAP shut down their public UDDI nodes (servers) in 2006.

70 دوره SOA استانداری قم - جواد تقی زاده دو مدل مخزن سرویس Private UDDI registries Have a limited reach, e.g.with in a companys intranet or extranet. Cannt publish or retrieve information from outside these UDDI registries. Public UDDI registries Also known as public cloud. Accessible from the Internet. Any other company can publish or get information in/from the cloud Use a replicated UDDI nodes. e.g.IBM,Microsoft,...etc.

71 دوره SOA استانداری قم - جواد تقی زاده سه دسته اطلاعات مورد نیاز برای ثبت سرویس An UDDI business registration provides 3 distinct sets of information: White Pages Address, contact, and known identifiers. Yellow Pages Industrial categorizations based on standard taxonomies. Green Pages Technical information about services exposed by the business.

72 دوره SOA استانداری قم - جواد تقی زاده سه دسته اطلاعات مورد نیاز برای ثبت سرویس An UDDI business registration provides 3 distinct sets of information: White Pages Address, contact, and known identifiers. Yellow Pages Industrial categorizations based on standard taxonomies. Green Pages Technical information about services exposed by the business.

73 دوره SOA استانداری قم - جواد تقی زاده امکانات موجود در مخزن سرویس (UDDI) UDDI Inquiry Lookup services UDDI Publication Publish and modify published services UDDI Security Define access control of published services UDDI Custody Transfer Change the ownership of information in the registry and move a publication to a different node انتقال مالکیت UDDI Subscription Subscribe to changes of information in the UDDI registry UDDI Replication Functions for replicating registry entries between UDDI nodes

74 دوره SOA استانداری قم - جواد تقی زاده انتقال پیام مرتبط با UDDI

75 دوره SOA استانداری قم - جواد تقی زاده UDDI UDDI Registry : UDDI is a web service that uses SOAP 1.1 over HTTP and Document/Literal encoding and the request/response messaging mode. – Publish, read, changing web services into UDDI registry – API : Two type of UDDI's Inquiry : Used to search and read data in a UDDI registry – Message synchro Publish : Used to add, modify and delete data in a UDDI registry – Requires authentication access to UDDI Registy » Authentichation : is required. Caller is responsabile » for the authenthication. Only for the publish function » and not for the inquiry functions – No multiple or duplicate registrations – Four type of operations : »Authorization, Delete, Get, Save – Protocol : HTTP or HTTPS via POST – Type Message : SOAP

76 دوره SOA استانداری قم - جواد تقی زاده

77 ساختار پیام UDDI

78 دوره SOA استانداری قم - جواد تقی زاده Example UDDI Message POST /someVerbHere HTTP/1.1 Host: Content-Type: text/xml; charset="utf-8" Content-Length: nnnn SOAPAction: ""...

79 دوره SOA استانداری قم - جواد تقی زاده سه دسته اطلاعات مورد نیاز برای ثبت سرویس

80 دوره SOA استانداری قم - جواد تقی زاده Inquriry Functions

81 دوره SOA استانداری قم - جواد تقی زاده Inquriry Functions

82 دوره SOA استانداری قم - جواد تقی زاده Publish Functions

83 دوره SOA استانداری قم - جواد تقی زاده Publish Functions

84 دوره SOA استانداری قم - جواد تقی زاده

85 uddi.xml.org

86 دوره SOA استانداری قم - جواد تقی زاده استفاده از وب سرویس (Web Service Consuming) SOAP 1.1 SOAP 1.2 Http Post ابزارها.net برای ایجاد Proxy Class Wsdl.exe Visual Studio

87 دوره SOA استانداری قم - جواد تقی زاده فراخوانی به کمک ابزار WSDL.exe ایجاد کلاس کار با وب سرویس به کمک WSDL.exe wsdl wsdl /out:myProxyClass.cs wsdl /language:VB /out:myProxyClass.vb Wsdl /l:cs /protocol:HTTPPost

88 دوره SOA استانداری قم - جواد تقی زاده فراخوانی به کمک ابزار ویژوال استادیو

89 دوره SOA استانداری قم - جواد تقی زاده فراخوانی تابع با پارامتر ورودی و خروجی

90 دوره SOA استانداری قم - جواد تقی زاده فراخوانی SOAP 1.1 SOAP 1.1 POST /tiswebservice.asmx HTTP/1.1 Host: mainserver1 Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://tempuri.org/GetElementUrl" string long پاسخ: HTTP/ OK Content-Type: text/xml; charset=utf-8 Content-Length: length string پاسخ: HTTP/ OK Content-Type: text/xml; charset=utf-8 Content-Length: length string

91 دوره SOA استانداری قم - جواد تقی زاده فراخوانی SOAP 1.2 SOAP 1.2 POST /tiswebservice.asmx HTTP/1.1 Host: mainserver1 Content-Type: application/soap+xml; charset=utf-8 Content-Length: length string long پاسخ HTTP/ OK Content-Type: application/soap+xml; charset=utf-8 Content-Length: length string پاسخ HTTP/ OK Content-Type: application/soap+xml; charset=utf-8 Content-Length: length string

92 دوره SOA استانداری قم - جواد تقی زاده فراخوانی HTTP Post HTTP POST POST /tiswebservice.asmx/GetElementUrl HTTP/1.1 Host: mainserver1 Content-Type: application/x-www-form-urlencoded Content-Length: length Key=string&Kind=string&ElementId=string پاسخ HTTP/ OK Content-Type: text/xml; charset=utf-8 Content-Length: length string پاسخ HTTP/ OK Content-Type: text/xml; charset=utf-8 Content-Length: length string

93 دوره SOA استانداری قم - جواد تقی زاده Proxy Class Credential Credentials credentials = new Credentials(); credentials.Password = "demo"; credentials.UserName = "citrixdesktop"; credentials.Domain = "testdrive"; //because it is a sample, we will use no encryption method. //so the password will be sent as a clear text. credentials.PasswordEncryptionMethod = 0; //set the domain type to windows domain credentials.DomainType = 0;

94 دوره SOA استانداری قم - جواد تقی زاده فراخوانی Proxy Class ExtentrixWebServicesForCPS proxy = new ExtentrixWebServicesForCPS(); proxy.Url = object returnValue =proxy.Function(…);

95 دوره SOA استانداری قم - جواد تقی زاده فراخوانی تابع با پارامتر خروجی به همراه SOAP Header

96 دوره SOA استانداری قم - جواد تقی زاده فراخوانی SOAP 1.1 SOAP 1.1 POST /tiswebservice.asmx HTTP/1.1 Host: mainserver1 Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://tempuri.org/AuthenticateUser" string پاسخ: HTTP/ OK Content-Type: text/xml; charset=utf-8 Content-Length: length string پاسخ: HTTP/ OK Content-Type: text/xml; charset=utf-8 Content-Length: length string

97 دوره SOA استانداری قم - جواد تقی زاده فراخوانی SOAP 1.2 SOAP 1.2 POST /tiswebservice.asmx HTTP/1.1 Host: mainserver1 Content-Type: application/soap+xml; charset=utf-8 Content-Length: length string پاسخ HTTP/ OK Content-Type: application/soap+xml; charset=utf-8 Content-Length: length string پاسخ HTTP/ OK Content-Type: application/soap+xml; charset=utf-8 Content-Length: length string

98 دوره SOA استانداری قم - جواد تقی زاده فراخوانی HTTP Post HTTP POST راه حلی وجود ندارد؟

99 دوره SOA استانداری قم - جواد تقی زاده فراخوانی Proxy Class ExtentrixWebServicesForCPS proxy = new ExtentrixWebServicesForCPS(); SoapHeaderClass soaphead = new SoapHeaderClass(); soaphead.var1 = ; soaphead.var2 = ; proxy.soapheadObj = soaphead; proxy.Url = object returnValue =proxy.Function(…);

100 دوره SOA استانداری قم - جواد تقی زاده ایجاد وب سرویس با SOAP Header public class TisWebServiceHeader : System.Web.Services.Protocols.SoapHeader { public string Username; public string Password; public string AuthenticatedToken; } [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class TisWebService : System.Web.Services.WebService { public TisWebServiceHeader SoapHeader; …. }

101 دوره SOA استانداری قم - جواد تقی زاده توابع در وب سرویس توابع معمول [WebMethod] public string Function1(string Code) { } توابع با SOAP Header [WebMethod] [System.Web.Services.Protocols.SoapHeader("SoapHeader")] public string AuthenticateUser() { if (SoapHeader == null) return "Please provide a Username and Password"; if (string.IsNullOrEmpty(SoapHeader.Username) || string.IsNullOrEmpty(SoapHeader.Password)) return "Please provide a Username and Password"; }

102 دوره SOA استانداری قم - جواد تقی زاده NIYAZ AHMAD RAO102 ایجاد وب سرویس در JAVA package org.me.calculator; import javax.jws.WebMethod; import javax.jws.WebParam; import public class CalculatorWS public int = "i") int = "j") int j) { int k = i + j; return k; }

103 دوره SOA استانداری قم - جواد تقی زاده چند نکته دیگر در خصوص وب سرویس ها در C#

104 دوره SOA استانداری قم - جواد تقی زاده وب سرویس با تابع همنام [WebMethod] public string HelloWorld() { return "HelloWorld"; } [WebMethod] public string HelloWorld(string name) { return "HelloWorld " + name; } در هنگام فراخوانی خطای زیر را می دهد :

105 دوره SOA استانداری قم - جواد تقی زاده وب سرویس با تابع همنام برای حل این مشکل باید از ویژگی های SOAP استفاده کرد که نام پیام را متفاوت کنیم به صورت زیر : [WebMethod (MessageName="HelloWorld")] public string HelloWorld() { return "HelloWorld"; } [WebMethod (MessageName="HelloWorldWithName")] public string HelloWorld(string name) { return "HelloWorld " + name; }

106 دوره SOA استانداری قم - جواد تقی زاده تابع با پارامتر ref [WebMethod] int myWSMethod(int parameterA, ref string parameterB); تابع بالا با خطا روبرو می شود. راه حل استفاده از کلاس می باشد به صورت زیر : [DataContract] [Serializable] public class myWSMethodResponse { [DataMember] public int ErrorCode { get; set; } [DataMember] public string Report { get; set; } } public myWSMethodResponse myWSMethod(int parameterA) { //code here }

107 دوره SOA استانداری قم - جواد تقی زاده REST

108 دوره SOA استانداری قم - جواد تقی زاده REST Representational State Transfer یک سبک معماری نرم افزار است که سال 2000 ارائه شده است و جایگزینی است برای وب سرویس های SOAP وب سرویس معناگرا (Semantic Web Service)

109 دوره SOA استانداری قم - جواد تقی زاده REST Major Player

110 دوره SOA استانداری قم - جواد تقی زاده Real Life: Flickr API Resource: Photos Where: id}/{id}_{secret}.jpg id}/{id}_{secret}_[mstb].jpg secret}_o.(jpg|gif|png) What: JPEG, GIF or PNG (defined in the URL) 36_m.jpg

111 دوره SOA استانداری قم - جواد تقی زاده مقایسه ساختار درخواست REST vs SOAP

112 دوره SOA استانداری قم - جواد تقی زاده مقایسه ساختار درخواست REST vs SOAP فراهم سازی SEO

113 دوره SOA استانداری قم - جواد تقی زاده REST vs SOAP

114 دوره SOA استانداری قم - جواد تقی زاده WCF (SOAP) has some advantages: Easy to consume - sometimes Rigid - type checking, adheres to a contract Development tools available at hand. WCF(REST) web services has some advantages: Lightweight - not a lot of extra xml markup Human Readable Results Easy to build - no toolkits required

115 دوره SOA استانداری قم - جواد تقی زاده توابع REST RESTCRUD (Create, Read, Update, Delete) POSTCreate GETRead PUTUpdate or Create DELETEDelete همان توابع HTTP Methods

116 دوره SOA استانداری قم - جواد تقی زاده REST – Methods Example + POST = Error + PUT = Error در صورت داشتن خطا : HTTP 400 or 500 errors are normally used to indicate problems – same as websites

117 دوره SOA استانداری قم - جواد تقی زاده REST – Methods Example + POST = خطا میدهد و نمی توان استفاده کرد + GET = تمام افرادی که نام کوچکشان با راب شروع می شود + PUT = خطا میدهد و نمی توان استفاده کرد + DELETE = تمام افرادی که نام کوچکشان با راب شروع می شود را حذف می کند پست مقادیری برای برخی فیلدها + POST = Creates a new user + GET = Returns everyone who meets criteria + PUT = Creates/Updates a user (based on data) + DELETE = Deletes everyone who meets criteria

118 دوره SOA استانداری قم - جواد تقی زاده فراخوانی سرویس Rest جستجوی یاهو Uri address = new Uri("http://api.search.yahoo.com/ContentAnalysisService/V1/termExtraction"); HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest; request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; string appId = "YahooDemo"; string context = "Italian sculptors "; string query = "mandella"; StringBuilder data = new StringBuilder(); data.Append("appid=" + HttpUtility.UrlEncode(appId)); data.Append("&context=" + HttpUtility.UrlEncode(context)); data.Append("&query=" + HttpUtility.UrlEncode(query)); byte[] byteData = UTF8Encoding.UTF8.GetBytes(data.ToString()); request.ContentLength = byteData.Length; using (Stream postStream = request.GetRequestStream()) postStream.Write(byteData, 0, byteData.Length); using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) { StreamReader reader = new StreamReader(response.GetResponseStream()); Console.WriteLine(reader.ReadToEnd()); } پارامترها بدست آوردن پاسخ تعیین نوع متد: Post,Get,Put,Delete

119 دوره SOA استانداری قم - جواد تقی زاده REST – Commands You can associate commands with a resource. Commands can replace the need for using HTTP methods and can provide a more familiar way of dealing with data. Example: userResource = new Resource('http://example.com/users/001 ') userResource.delete()

120 دوره SOA استانداری قم - جواد تقی زاده REST Framework.Net نسخه قدیمی تر WCF WebHttp REST Entity Service نسخه جدیدتر ASP.NET Web API Java RESTLet Ruby Rest-Open-URI Python Django

121 دوره SOA استانداری قم - جواد تقی زاده

122 REST vs SOAP

123 دوره SOA استانداری قم - جواد تقی زاده REST vs SOAP

124 دوره SOA استانداری قم - جواد تقی زاده REST vs SOAP

125 دوره SOA استانداری قم - جواد تقی زاده REST vs SOAP

126 دوره SOA استانداری قم - جواد تقی زاده RESTful Web Services REST: architectural style for distributed systems RESTful: REST + HTTP Syntactic description: WADL 126

127 دوره SOA استانداری قم - جواد تقی زاده Comparision REST services Architectural style Simply calls services via URL path Lightweight – not a lot of extra xml markup Easy to build – no toolkits required SOAP services XML-based protocol Invokes services by calling RPC method Rigid – type checking, adheres to a contract Development tools – WSDL Soap analyser tool, oXygen XML

128 دوره SOA استانداری قم - جواد تقی زاده پیچیدگی SOAP WS-Security: enterprise security features WS-AtomicTransactions: ACID compliant WS-ReliableMessaging: end-to-end reliability Ex.: smartphone app that communicates with a bank app on the web, need the previous implementations REST Lightweight Less complex for maintenance Bring the web back to web services

129 دوره SOA استانداری قم - جواد تقی زاده Semantic Web Services Semantic layer for automated service discovery, composition, monitoring, and execution Offer both syntactic and semantic descriptions 129 AccessSyntaxSemantics Soap Web Service SOAPWSDLOWL-S RESTfulHTTPWADLOWL-S

130 SOA Security

131 دوره SOA استانداری قم - جواد تقی زاده Security

132 دوره SOA استانداری قم - جواد تقی زاده Security Basic Model... alice......

133 دوره SOA استانداری قم - جواد تقی زاده trust relationships pull model push mode

134 دوره SOA استانداری قم - جواد تقی زاده امنیت وب سرویس

135 دوره SOA استانداری قم - جواد تقی زاده

136

137

138

139

140 WS-trust- WS-Security

141 دوره SOA استانداری قم - جواد تقی زاده نمونه REST در ASP.net ResourceURIVerbs All years"/ "GET A particular year's issues"/{year}"GET, PUT A particular issue"/{year}/{issue}"GET, PUT An article"/{year}/{issue}/{article}" GET, POST (the article number will be assigned by the system), PUT, DELETE (delete would be turned off once an issue has been published) us/magazine/dd aspx نشریه های سالهای مختلف

142 دوره SOA استانداری قم - جواد تقی زاده ایجاد وب سرویس REST [DataContract] public class Person { [DataMember] public string ID; [DataMember] public string Name; [DataMember] public string Age; } [ServiceContract] public interface IRestSerivce { [OperationContract] Person CreatePerson (Person createPerson); [OperationContract] List GetAllPerson (); [OperationContract] Person GetAPerson (string id); [OperationContract] Person UpdatePerson (string id, Person updatePerson); [OperationContract] void DeletePerson (string id); } public class RestSerivce : IRestSerivce { List persons = new List (); int personCount = 0; public Person CreatePerson(Person createPerson) { createPerson.ID = (++personCount).ToString(); persons.Add(createPerson); return createPerson; } public List GetAllPerson() { return persons.ToList(); } public Person GetAPerson(string id) { return persons.FirstOrDefault(e => e.ID.Equals(id)); } public Person UpdatePerson(string id, Person updatePerson) { Person p = persons.FirstOrDefault(e => e.ID.Equals(id)); p.Name = updatePerson.Name; p.Age = updatePerson.Age; return p; } public void DeletePerson(string id) { persons.RemoveAll(e => e.ID.Equals(id)); } public class Global : System.Web.HttpApplication { protected void Application_Start(object sender, EventArgs e) { RouteTable.Routes.Add( new ServiceRoute( "RestService", new WebServiceHostFactory(), typeof(RESTSerivce)) ); }

143 دوره SOA استانداری قم - جواد تقی زاده

144 نحوه مصرف Rest در دات نت try { string content; Console.WriteLine("Enter Method:"); string Method = Console.ReadLine(); Console.WriteLine("Enter URI:"); string uri = Console.ReadLine(); HttpWebRequest req = WebRequest.Create(uri) as HttpWebRequest; req.KeepAlive = false; if (("POST,PUT").Split(',').Contains(Method.ToUpper())) { Console.WriteLine("Enter XML FilePath:"); string FilePath = Console.ReadLine(); content = byte[] buffer = Encoding.ASCII.GetBytes(content); req.ContentLength = buffer.Length; req.ContentType = "text/xml"; Stream PostData = req.GetRequestStream(); PostData.Write(buffer, 0, buffer.Length); PostData.Close(); } HttpWebResponse resp = req.GetResponse() as HttpWebResponse; Encoding enc = System.Text.Encoding.GetEncoding(1252); StreamReader loResponseStream = new StreamReader(resp.GetResponseStream(), enc); string Response = loResponseStream.ReadToEnd(); loResponseStream.Close(); resp.Close(); Console.WriteLine(Response); } catch (Exception ex) { }

145 دوره SOA استانداری قم - جواد تقی زاده برنامه تست وب سرویس WCFTestClient


Download ppt "فصل دو : Web API و Web Service فصل دو : Web API و Web Service دوره SOA استانداری قم - جواد تقی زاده."

Similar presentations


Ads by Google