Web Services

From BC$ MobileTV Wiki
(Redirected from Web Service)
Jump to: navigation, search

"Web Services" is the name that has been given to the concept of exposing core functionality of a specific web application, website or web page for the purpose of allowing that service to be packaged up and utilized by other web services, web applications, websites or web pages either by making requests and pulling down data, or running entire interfaces from the site within their own interface.

The reputation of the Web Services term being used more in an enterprise setting than in a small business or startup setting (which favors the simple yet overloaded term "API"), has earned Web Services the title of: "the business side of APIs"



What are Web Services?

Web Services are:

   * Small units of code
   * Designed to handle a limited set of tasks or functionality
   * Programs which use XML based communicating protocols (or JSON, which has become more common for the average simplistic/consumer API)
   * Independent of Operating Systems
   * Independent of Programming Languages
   * Connect people, systems and devices through Endpoints
   * May use a description language such as WSDL, WADL or OpenAPI (Swagger) to describe their functionality

Benefits of Web Services

   * Easier to communicate between applications
   * Easier to reuse existing services
   * Easier to distribute information to more consumers
   * Rapid development

Web services make it easier to communicate between different applications. They also make it possible for developers to reuse existing web services instead of writing new ones.

Web services can create new possibilities for many businesses because it provides an easy way to distribute information to a large number of consumers. One example could be flight schedules and ticket reservation systems.

Use a web development platform that will help you save a lot of time and bring excitement to your daily development work. It will also create professional best-practices around your code development and team collaboration.[1]



Approaches

Web Services typically make use of either WSDL or SOAP protocols for exposing their functionality, but may also alternatively rely on one of the following standard web protocols as well HTTP, REST, DIG, XML, and UDDI.

Monolith

Monolithic architectures are tightly-coupled applications or services where all code (front-end & back-end, APIs, SDKs, integration/glue code, custom business logic, etc) lives in a single project and repository, deployed to a single Web Server and/or Container which needs to be "scaled horizontally" when usage begins to outpace throughput/capacity.

See section: Architecture

[2] [3]

SOA

Service-Oriented Architecture (SOA) begins the move away from Monoliths by breaking up logically related parts of the monolith into individual applications/systems deployed separately as Web Services which expose some or all of their functionality via APIs. There is a potential (when each separate Web Service and the integrations between them are architected correctly) to realize "loose coupling" using SOA.

See section: SOA


Microservices

Microservices takes the SOA approach to the next level of granularity where complex applications are decomposed into the smallest possible, independent processes, communicating with each other using language-agnostic APIs. These services are specialized, "highly decoupled", with each focused on doing a small task at a time, rather than many complex background operations, calls, or evaluations.

Any good Microservices architecture should have:

  1. services which are easy to replace
  2. services which are highly modularized (small set of functionality per service)
  3. services must then be organized around their capabilities (similar services are grouped together in API structure)
  4. lend itself to a Continuous Delivery software development process
  5. is distinct from SOA in that the latter aims at integrating various (Business) applications, whereas several Microservices belong to one domain/application

[9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68]


CQRS

Command Query Responsibility Segregation (CQRS) is an architectural pattern for overcoming Microservice and Database separation to enable joining disparate data from several data sources.

[69] [70] [71] [72] [73] [74] [75] [76]


Saga pattern

ServiceMesh

[77]

Istio

[78] [79] [80] [81] [82] [83] [84] [85] [86] [87]

WS-*

WS-* is a prefix used to indicate specifications associated with Web Services and there exist many WS-* standards including:

  1. WS-Addressing
  2. WS-Discovery
  3. WS-Federation
  4. WS-Policy
  5. WS-Security
  6. WS-Trust.


WSSE

Number 5 in the list above, Web Service Security (WSSE) is one of the fundamental technologies of WS-* that offer greater levels of authentication and authorization capabilities than regular HTTP/S used by REST.

[88]

Vendors

Apache

CXF

Axis


Sun

Sun's Java has been a leading purveyor of Web Services development and real-world business cases.

[89][90][91]


IBM

IBM targets small and mid-sized Enterprises with their Managed Web Services platforms. [92] In addition, IBM has launched a new project under the
AlphaWorks program for making Web Services much easier and more accessible to the average developer. [93]

Oracle

Oracle allows Web Services to interface with their database technology, and even permits the customized creation of unique Web Services from within
the Database Adminstration console. [95]


Microsoft

Farbeit for Microsoft to miss out on the action, and they also have their own sweet of .NET Web Service solutions.[96]


Google

Google has been a leader in creating unique Web Services of their own, which could then be used by developers, however of these efforts few have been
truly open in nature, though the company ironically enjoys an ora of openness, thanks mainly to its great comminucation streams with developers and
projects like "Google Summer of Code" where Google hires several hundred student developers over the summer to work on various open source projects.
Their latest announcement for the Google AppEngine[97] is another major initiative towards empowering smaller, independent software developers through
free and low-cost alternatives for application hosting, plus access to the Google distributed computing cloud.[98]. [99] [100]


Yahoo!

Yahoo! has recently stated[101] that it would take an Open approach and strategy for all future Web Services, at is at the same time attempting to open up its existing Web services. This was the strategy for 2006-2011, unfortunately after that period the focus shifted to monetization and those Yahoo! Web Services not making substantial profits/returns were discontinued or deprecated over the next few years. The only remaining substantial services were the [ Yahoo! Weather], [ Yahoo! Finance (Stock Quotes)], [ Yahoo! News] and [ YQL] service. Many considered this the most logical way for Yahoo! to avoid a hostile takeover by Microsoft[102], but ironically enough (or perhaps predictably) their attempt to bring in "big-money enterprise monetization-minded" executives ended up resulting in further Yahoo! property sell-offs, firings, layoffs, service discontinuations and an eventual sale to Verizon and re-branding of Yahoo! to Altaba. [103] [104] [105] [106] [107] [108] [109] [110] [111]

Service Directories

EXAMPLES

NDFD

Other

auth-token=jcCZ66ljo2gWPgOjuX3M7TubmV+hzWWs2cGEYSZM4t06CJWVGZf2DqzlYAjjjxNmKrVv74XiTILVNkYOZ5YlhA== EXAMPLE]


Resources


Tutorials

[128] [129]

[130] [131] [132]


External Links


References

  1. W3Schools on Web Services: http://w3schools.com/webservices/default.asp
  2. "Big Ball of Mud" thesis on Software Architecture from DDD-perspective: http://www.laputan.org/mud/mud.html
  3. A Transition From Monolith to Microservices: https://dzone.com/articles/a-transition-from-monolith-to-microservices
  4. Microservices Solution Patterns -- 5 options visualized: https://dzone.com/articles/microservices-solution-patterns-1
  5. Microsoft readies first developer preview of its new microservices Service Fabric: http://www.zdnet.com/article/microsoft-readies-first-developer-preview-of-its-new-microservices-service-fabric/
  6. Announcing Azure Service Fabric: Reducing Complexity in a Hyper-scale World: http://azure.microsoft.com/blog/2015/04/20/announcing-azure-service-fabric-reducing-complexity-in-a-hyper-scale-world/
  7. Micro­service Websites: http://microservice-websites.netlify.com (this architectural approach promises "scalable development of an evolvable system with great mobile performance")
  8. I don’t understand micro-frontends: https://medium.com/@lucamezzalira/i-dont-understand-micro-frontends-88f7304799a9
  9. Design Pattern -- Microservice Architecture: https://microservices.io/patterns/microservices.html
  10. Microservices -- Five Architectural Constraints: http://java.dzone.com/articles/microservices-five
  11. Monolithic Architecture .vs. Microservices -- Choosing the Right Architecture for the Project: https://medium.com/@yellow/monolithic-architecture-vs-microservices-choosing-the-right-architecture-for-the-project-4985b2253778
  12. CERN Data Centre Evolution: https://www.slideshare.net/gmccance/cern-data-centre-evolution (source of comparison of "VMs are like Pets, Containers are like Cattle")
  13. Migrating to Cloud Native with Microservices: https://www.slideshare.net/InfoQ/migrating-to-cloud-native-with-microservices
  14. Microservices in Production - the Good, the Bad, the it Works: http://highscalability.com/blog/2014/10/27/microservices-in-production-the-good-the-bad-the-it-works.html
  15. Microservices - Decomposing Applications for Deployability and Scalability: http://www.infoq.com/microservices | E-ZINE | PRESENTATION
  16. The Rise of Microservices : http://www.appcentrica.com/the-rise-of-microservices/
  17. Are microservices for real, or just the latest buzzword?: http://www.zdnet.com/article/a-few-words-about-microservices/
  18. To be a Microservice -- How smaller parts of bigger applications could remake IT: https://www.zdnet.com/article/to-be-a-microservice-how-smaller-parts-of-bigger-applications-could-remake-it/
  19. Adopting Microservices - Getting Started with Implementation: http://java.dzone.com/articles/adopting-microservices-getting
  20. Java Microservices -- A Practical Guide: https://www.marcobehler.com/guides/java-microservices-a-practical-guide
  21. Adopting Microservices at Netflix - Lessons for Architectural Design: http://java.dzone.com/articles/adopting-microservices-netflix
  22. Microservices is more than a buzzword: http://searchsoa.techtarget.com/feature/Microservices-is-more-than-a-buzzword
  23. Developers ride the microservices wave: http://searchcloudapplications.techtarget.com/tip/Developers-ride-the-microservices-wave
  24. Microservices - Not a free lunch!: http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch.html
  25. Microservices Architecture: http://progressivecoder.com/microservices-architecture/
  26. Kong goes open source - Mashape dubs it the first"Mmicroservices Management" layer: http://www.zdnet.com/article/kong-goes-open-source-mashape-dubs-it-the-first-microservices-management-layer/
  27. Agile coding in enterprise IT - Code small and local with Microservices: http://www.pwc.com/us/en/technology-forecast/2014/cloud-computing/features/microservices.jhtml
  28. Microservice Hybrids and Alternatives: http://java.dzone.com/articles/microservice-hybrids-and
  29. 8 Questions You Need to Ask About Microservices, Containers & Docker in 2015: http://java.dzone.com/articles/8-questions-you-need-ask-about
  30. Monolithic Core vs Full Microservice Architecture: http://java.dzone.com/articles/monolithic-core-vs-full
  31. Moving to Data Services for Microservices: http://dzone.com/articles/moving-to-data-services-for-microservices?oid=cloud
  32. Monolithic to Microservices Refactoring for Java EE Applications: http://dzone.com/articles/monolithic-to-microservices-refactoring-for-java-e
  33. Martin Fowler on the Microservice Premium: http://dzone.com/articles/martin-fowler-on-the-microservice-premium
  34. Building Microservices - Inter-Process Communication in a Microservices Architecture: https://dzone.com/articles/building-microservices-inter-process-communication-1
  35. How to Organize Your Code (when writing Microservices): https://dzone.com/articles/how-to-organize-your-code?utm_source=Top 5&utm_medium=email&utm_campaign=top5 2016-09-09
  36. Microservices Arrived at Your Home: http://dzone.com/articles/microservices-arrived-at-your-home (Mixing a few JBoss tools, Apache Camel, OpenShift Enterprise, and a little secret sauce to make your home smarter.)
  37. A busy Java developers guide to developing microservices on Kubernetes and docker: http://blog.fabric8.io/a-busy-java-developers-guide-to-developing-microservices-on-kubernetes-and-docker-98b7b9816fdf#.8xn46dj5y
  38. Migrating to Microservices: https://dzone.com/articles/migrating-to-microservices
  39. Spring Boot & Microservices: https://dzone.com/storage/assets/6459742-dzone-rc247-gettingstartedwithspringbootandmicrose.pdf
  40. 5 Microservices Learning Mistakes Software Developers Make: http://dzone.com/articles/05-microservices-learning-mistakes-software-develo
  41. Building Microservices Using Spring Boot and Securing Them With OAuth and OpenID - Part 1: https://dzone.com/articles/building-microservice-using-spring-boot-and-secure
  42. 10 Best Practices for Microservice Architectures: https://dzone.com/articles/10-best-practices-for-microservice-architectures
  43. Microservices vs. SOA — Is There Any Difference at All?: https://medium.com/@kikchee/microservices-vs-soa-is-there-any-difference-at-all-2a1e3b66e1be
  44. Microservice Front-End - A Modern Approach To The Division Of The Front: https://www.smartspate.com/microservice-front-end/
  45. Walking the wire -- Mastering the Four Decisions in Microservices Architecture: https://medium.com/systems-architectures/walking-the-microservices-path-towards-loose-coupling-few-pitfalls-4067bf5e497a
  46. A Microservices implementation journey — Part 1: https://koukia.ca/a-microservices-implementation-journey-part-1-9f6471fe917
  47. Microservices Security Patterns & Protocols with Spring & PCF: https://www.infoq.com/presentations/microservices-security-spring-pcf
  48. Implementing Microservices Security Patterns and Protocols with Spring Security: https://www.infoq.com/presentations/microservices-spring-security-5-1/
  49. Pattern -- Microservice Architecture: https://microservices.io/patterns/microservices.html
  50. Microservices Chassis Pattern: https://dzone.com/articles/ms-chassis-pattern
  51. Microservices and DevOps Using Java, Spring Boot, Git Flow, Jenkins, and Docker: https://dzone.com/articles/microservices-and-devops-1
  52. Where Is My Cache? Architectural Patterns for Caching Microservices: https://dzone.com/articles/where-is-my-cache-architectural-patterns-for-cachi
  53. Migrating to Microservices – Take Baby Steps with Your Monolithic: https://www.deployhub.com/migrating-to-microservices-step-1-define-your-domains/
  54. Introduction to Micro-Frontend Architecture: https://dzone.com/articles/introduction-to-micro-frontends-architecture
  55. STOP!! You don’t need Microservices (every time anyway): https://medium.com/swlh/stop-you-dont-need-microservices-dc732d70b3e0
  56. Java/Cloud -- How to Quickly Create a Kubernetes-Ready REST Microservice: https://dzone.com/articles/javacloud-how-to-quickly-create-a-kubernetes-ready
  57. Conquering the Microservices Dependency Hell at Postman, with Postman (Part 1 — Introduction): https://medium.com/better-practices/conquering-the-microservices-dependency-hell-at-postman-with-postman-part-1-introduction-a1ae019bb934
  58. How Postman Engineering does microservices: https://medium.com/better-practices/how-postman-engineering-does-microservices-aa026a3d682d
  59. Microservice Trade-Offs: https://martinfowler.com/articles/microservice-trade-offs.html
  60. Microservices for Life: https://blog.scottlogic.com/2020/08/24/microservices-for-life.html
  61. Design Patterns for Microservice-To-Microservice Communication: https://dzone.com/articles/design-patterns-for-microservice-communication
  62. Monolith to Microservices With the Strangler Pattern: https://dzone.com/articles/monolith-to-microservices-with-the-strangler-patte
  63. Lessons From the Birth of Microservices at Google: https://dzone.com/articles/lessons-from-the-birth-of-microservices-at-google
  64. Why Proxies Are Important for Microservices: https://dzone.com/articles/why-proxies-are-important-for-microservices
  65. Microservices Observability -- Polar (Fitness tracker) mobile app example: https://dzone.com/articles/microservices-observability
  66. Data movement for Google services at Netflix: https://netflixtechblog.medium.com/data-movement-for-google-services-at-netflix-9a77ca69f7c4
  67. Review of Java-based Microservices Frameworks - A Look at Spring Boot .vs. Alternatives: https://dzone.com/articles/not-only-spring-boot-a-review-of-alternatives
  68. Microservice Architecture roadmap: https://dzone.com/articles/microservice-roadmap
  69. Introduction to CQRS: https://www.codeproject.com/Articles/555855/Introduction-to-CQRS
  70. CQRS and Event Sourcing Intro for JAVA Developers: https://github.com/asc-lab/java-cqrs-intro
  71. CQRS and Event Sourcing Intro for C# Developers: https://github.com/asc-lab/dotnet-cqrs-intro
  72. Command and Query Responsibility Segregation (CQRS) pattern: https://docs.microsoft.com/en-us/azure/architecture/patterns/cqrs
  73. CQRS and Event Sourcing in Java: https://www.baeldung.com/cqrs-event-sourcing-java | SRC
  74. A Guide to the Axon Framework (Java CQRS lib): https://www.baeldung.com/axon-cqrs-event-sourcing
  75. Martin Fowler - what I mean by "Event-driven": https://martinfowler.com/articles/201701-event-driven.html
  76. CQRS & Event Sourcing in Java: https://www.baeldung.com/cqrs-event-sourcing-java
  77. The Complete Guide to Service Mesh (by service provider Aspen Mesh): https://aspenmesh.io/landing_page/the-complete-guide-to-service-mesh/
  78. RedHat -- What is Istio?: https://www.redhat.com/en/topics/microservices/what-is-istio
  79. Google Cloud -- What is Istio?: https://cloud.google.com/learn/what-is-istio
  80. Microsoft Azure -- Istio overview: https://docs.microsoft.com/en-us/azure/aks/servicemesh-istio-about
  81. IBM -- Learn Istio: https://www.ibm.com/cloud/learn/istio
  82. What is Istio? The Kubernetes service mesh explained: https://www.infoworld.com/article/3328817/what-is-istio-the-kubernetes-service-mesh-explained.html
  83. IBM Dev -- Cloud Native Starter - Java EE based Microservices on Kubernetes and Istio: https://github.com/ibm/cloud-native-starter (Istio microservice - "polyglot" service mesh example)
  84. Microservices Journey from Netflix OSS to Istio Service Mesh: https://dzone.com/articles/microservices-journey-from-netflix-oss-to-istio-se
  85. Istio as an Example of When Not to Do Microservices: https://blog.christianposta.com/microservices/istio-as-an-example-of-when-not-to-do-microservices/
  86. Programming microservices communication with Istio — Part 1 - setting up (SCREENCAST): https://medium.com/@alexsandrosouza/programming-microservices-communication-with-istio-screencast-b78cce9211df
  87. Programming microservices communication with Istio — Part 2 - State of the art in microservices: https://towardsdatascience.com/moving-from-netflix-oss-to-istio-state-of-the-art-in-microservices-265b306724fc
  88. HTTP Basic Auth and WS-Security username/password authentication: https://vvratha.blogspot.com/2013/09/http-basic-auth-and-ws-security.html
  89. Sun Web Services: http://java.sun.com/webservices/
  90. Java Blueprints: https://blueprints.dev.java.net/servlets/NewsItemView?newsItemID=5231
  91. Java Petstore: http://java.sun.com/developer/technicalArticles/J2EE/petstore/
  92. IBM SOA and WebServices: http://www.ibm.com/developerworks/webservices
  93. Web Services Toolkit: http://www.alphaworks.ibm.com/tech/webservicestoolkit
  94. Building an "open liberty" web application with Maven: https://openliberty.io/guides/maven-intro.html#testing-the-web-application
  95. http://www.oracle.com/appserver/web-services-manager.html
  96. http://msdn2.microsoft.com/en-us/webservices/default.aspx
  97. http://radar.oreilly.com/archives/2008/04/app-engine-host-your-python-apps-with-google.html
  98. Google Summer of Code: http://code.google.com/soc/
  99. Google's AppEngine thoughts http://blog.cbcg.net/articles/2008/04/08/google-appengine-thoughts
  100. http://highscalability.com/google-appengine-first-look
  101. http://www.techcrunch.com/2008/02/25/yahoo-announces-open-search-platform/
  102. "The new Yahoo! - Sticky, Viral and Most of all Friendly": http://www.techcrunch.com/2008/04/24/the-new-yahoo-sticky-viral-and-most-of-all-friendly/
  103. Yahoo shifts to open-source scripting: http://www.news.com/2100-1023-963937.html
  104. Yahoo! Open Search Ecosystem: http://www.ysearchblog.com/archives/000527.html
  105. Yahoo! opens searches for Mobile: http://news.yahoo.com/s/nf/20080403/bs_nf/59097
  106. Yahoo OpenSources Distributed Computing: http://www.betanews.com/article/Yahoo_Debuts_OpenSource_Distributed_Computing/1194908197
  107. Yahoo's $350M Open Source Pick Up: http://www.internetnews.com/dev-news/article.php/3700041
  108. Open Season at Yahoo: http://kara.allthingsd.com/20080418/open-season-at-yahoo/
  109. Yahoo’s remaining assets to rebrand after sale to Verizon in 2017: https://techcrunch.com/2016/07/25/remaining-yahoo-to-rebrand-after-sale-of-assets-to-verizon-in-2017/
  110. Remains of Yahoo to rebrand and CEO to step down : http://www.capacitymedia.com/Article/3651520/Remains-of-Yahoo-to-rebrand-and-CEO-to-step-down.html
  111. Yahoo to rebrand as Altaba Inc. as Marissa Mayer steps down from board: http://nypost.com/2017/01/09/yahoo-to-rebrand-as-altaba-inc-as-marissa-mayer-steps-down-from-board/
  112. xMethods Directory formerly at: http://www.xmethods.net/ve2/Directory.po (now only available at backup site)
  113. Seekda -- The Business Point of View: http://link.springer.com/chapter/10.1007/978-3-642-19193-0_14?no-access=true
  114. seekda -- the Web Service search engine: http://www.slideshare.net/NathalieSteinmetz/seekdas-web-service-search-engine
  115. seekda! Enriched Services -- A Tool for Semantic Service Annotation: http://www.academia.edu/468586/seekda_Enriched_Services_A_Tool_for_Semantic_Service_Annotation
  116. seekda's Web Service search engine: https://www.meetup.com/Semantically-Webbed-Seattle-Meetup-Group/events/52635992/
  117. Public UDDI Registry: http://uddi.xml.org/public-uddi-registry
  118. Seekda WS portal: https://www.slideshare.net/INSEMTIVESproject/uab-2011-seekda-webservices-portal
  119. QuickPicks Generatory: http://www.lotterypost.com/quickpicks
  120. Lottery Predictions by ALC buyers: http://www.lotterypost.com/predictions-state.asp?s=AC
  121. Canada Atlantic 49 Lottery Strategies: https://www.smartluck.com/free-lottery-tips/canada-atlantic49-649.htm
  122. Atlantic Lottery Corporation – Game Odds: http://www.global-lottery-review.com/atlantic-lottery.html
  123. Internet Chuck Norris DataBase (ICNDB): http://www.icndb.com/api/
  124. Transforming SOAP-Messages with XSLT (ARCHIVE): http://web.archive.org/web/20120704161053/http://blog.jdevelop.eu/2008/03/24/transforming-soap-messages-with-xslt/
  125. Creating generic SOAP Web Services: http://blog.jdevelop.eu/?p=71
  126. http://cxf.apache.org/docs/jax-rs-and-jax-ws.html
  127. Java EE 7 and JAX-RS 2.0: http://www.oracle.com/technetwork/articles/java/jaxrs20-1929352.html
  128. Changing the default XML namespace prefix generated with JAXWS: https://stackoverflow.com/questions/3846121/changing-the-default-xml-namespace-prefix-generated-with-jaxws
  129. Soap envelope namespace prefix in Java web service: https://stackoverflow.com/questions/30623419/soap-envelope-namespace-prefix-in-java-web-service
  130. How do I add package level annotations or edit package-info.java?: https://stackoverflow.com/questions/8405336/how-do-i-add-package-level-annotations-or-edit-package-info-java
  131. Package annotations: http://puredanger.github.io/tech.puredanger.com/2007/02/28/package-annotations/
  132. What is JAXB generated package-info.java: https://stackoverflow.com/questions/7501494/what-is-jaxb-generated-package-info-java

See Also

EAI | API | REST | SOAP | WebApp | DesktopApp