Web Services

From BC$ MobileTV Wiki
Revision as of 14:30, 16 May 2022 by Bcmoney (Talk | contribs) (Microservices)

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] [69] [70]


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.

[71] [72] [73] [74] [75] [76] [77] [78]


Saga pattern

ServiceMesh

[79]

Istio

[80] [81] [82] [83] [84] [85] [86] [87] [88] [89]

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.

[90]

Vendors

Apache

CXF

Axis


Sun

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

[91][92][93]


IBM

IBM targets small and mid-sized Enterprises with their Managed Web Services platforms. [94] 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. [95]

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. [97]


Microsoft

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


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[99] 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.[100]. [101] [102]


Yahoo!

Yahoo! has recently stated[103] 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[104], 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. [105] [106] [107] [108] [109] [110] [111] [112] [113]

Service Directories

EXAMPLES

NDFD

Other

auth-token=jcCZ66ljo2gWPgOjuX3M7TubmV+hzWWs2cGEYSZM4t06CJWVGZf2DqzlYAjjjxNmKrVv74XiTILVNkYOZ5YlhA== EXAMPLE]


Resources


Tutorials

[130] [131]

[132] [133] [134]

[135]


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. Best practices to communicate between Microservices: https://irfanyusanif.medium.com/how-to-communicate-between-microservices-7956ed68a99a (Sync .vs. Asyc - HTTP .vs. RabbitMQ example in C#)
  70. Say NO to a shared “custom” library in Microservices: https://medium.com/@madhuri.pednekar/say-no-to-a-shared-custom-library-in-microservices-ed6ff46160a4
  71. Introduction to CQRS: https://www.codeproject.com/Articles/555855/Introduction-to-CQRS
  72. CQRS and Event Sourcing Intro for JAVA Developers: https://github.com/asc-lab/java-cqrs-intro
  73. CQRS and Event Sourcing Intro for C# Developers: https://github.com/asc-lab/dotnet-cqrs-intro
  74. Command and Query Responsibility Segregation (CQRS) pattern: https://docs.microsoft.com/en-us/azure/architecture/patterns/cqrs
  75. CQRS and Event Sourcing in Java: https://www.baeldung.com/cqrs-event-sourcing-java | SRC
  76. A Guide to the Axon Framework (Java CQRS lib): https://www.baeldung.com/axon-cqrs-event-sourcing
  77. Martin Fowler - what I mean by "Event-driven": https://martinfowler.com/articles/201701-event-driven.html
  78. CQRS & Event Sourcing in Java: https://www.baeldung.com/cqrs-event-sourcing-java
  79. The Complete Guide to Service Mesh (by service provider Aspen Mesh): https://aspenmesh.io/landing_page/the-complete-guide-to-service-mesh/
  80. RedHat -- What is Istio?: https://www.redhat.com/en/topics/microservices/what-is-istio
  81. Google Cloud -- What is Istio?: https://cloud.google.com/learn/what-is-istio
  82. Microsoft Azure -- Istio overview: https://docs.microsoft.com/en-us/azure/aks/servicemesh-istio-about
  83. IBM -- Learn Istio: https://www.ibm.com/cloud/learn/istio
  84. What is Istio? The Kubernetes service mesh explained: https://www.infoworld.com/article/3328817/what-is-istio-the-kubernetes-service-mesh-explained.html
  85. 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)
  86. Microservices Journey from Netflix OSS to Istio Service Mesh: https://dzone.com/articles/microservices-journey-from-netflix-oss-to-istio-se
  87. 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/
  88. Programming microservices communication with Istio — Part 1 - setting up (SCREENCAST): https://medium.com/@alexsandrosouza/programming-microservices-communication-with-istio-screencast-b78cce9211df
  89. 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
  90. HTTP Basic Auth and WS-Security username/password authentication: https://vvratha.blogspot.com/2013/09/http-basic-auth-and-ws-security.html
  91. Sun Web Services: http://java.sun.com/webservices/
  92. Java Blueprints: https://blueprints.dev.java.net/servlets/NewsItemView?newsItemID=5231
  93. Java Petstore: http://java.sun.com/developer/technicalArticles/J2EE/petstore/
  94. IBM SOA and WebServices: http://www.ibm.com/developerworks/webservices
  95. Web Services Toolkit: http://www.alphaworks.ibm.com/tech/webservicestoolkit
  96. Building an "open liberty" web application with Maven: https://openliberty.io/guides/maven-intro.html#testing-the-web-application
  97. http://www.oracle.com/appserver/web-services-manager.html
  98. http://msdn2.microsoft.com/en-us/webservices/default.aspx
  99. http://radar.oreilly.com/archives/2008/04/app-engine-host-your-python-apps-with-google.html
  100. Google Summer of Code: http://code.google.com/soc/
  101. Google's AppEngine thoughts http://blog.cbcg.net/articles/2008/04/08/google-appengine-thoughts
  102. http://highscalability.com/google-appengine-first-look
  103. http://www.techcrunch.com/2008/02/25/yahoo-announces-open-search-platform/
  104. "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/
  105. Yahoo shifts to open-source scripting: http://www.news.com/2100-1023-963937.html
  106. Yahoo! Open Search Ecosystem: http://www.ysearchblog.com/archives/000527.html
  107. Yahoo! opens searches for Mobile: http://news.yahoo.com/s/nf/20080403/bs_nf/59097
  108. Yahoo OpenSources Distributed Computing: http://www.betanews.com/article/Yahoo_Debuts_OpenSource_Distributed_Computing/1194908197
  109. Yahoo's $350M Open Source Pick Up: http://www.internetnews.com/dev-news/article.php/3700041
  110. Open Season at Yahoo: http://kara.allthingsd.com/20080418/open-season-at-yahoo/
  111. 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/
  112. 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
  113. 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/
  114. xMethods Directory formerly at: http://www.xmethods.net/ve2/Directory.po (now only available at backup site)
  115. Seekda -- The Business Point of View: http://link.springer.com/chapter/10.1007/978-3-642-19193-0_14?no-access=true
  116. seekda -- the Web Service search engine: http://www.slideshare.net/NathalieSteinmetz/seekdas-web-service-search-engine
  117. seekda! Enriched Services -- A Tool for Semantic Service Annotation: http://www.academia.edu/468586/seekda_Enriched_Services_A_Tool_for_Semantic_Service_Annotation
  118. seekda's Web Service search engine: https://www.meetup.com/Semantically-Webbed-Seattle-Meetup-Group/events/52635992/
  119. Public UDDI Registry: http://uddi.xml.org/public-uddi-registry
  120. Seekda WS portal: https://www.slideshare.net/INSEMTIVESproject/uab-2011-seekda-webservices-portal
  121. QuickPicks Generatory: http://www.lotterypost.com/quickpicks
  122. Lottery Predictions by ALC buyers: http://www.lotterypost.com/predictions-state.asp?s=AC
  123. Canada Atlantic 49 Lottery Strategies: https://www.smartluck.com/free-lottery-tips/canada-atlantic49-649.htm
  124. Atlantic Lottery Corporation – Game Odds: http://www.global-lottery-review.com/atlantic-lottery.html
  125. Internet Chuck Norris DataBase (ICNDB): http://www.icndb.com/api/
  126. Transforming SOAP-Messages with XSLT (ARCHIVE): http://web.archive.org/web/20120704161053/http://blog.jdevelop.eu/2008/03/24/transforming-soap-messages-with-xslt/
  127. Creating generic SOAP Web Services: http://blog.jdevelop.eu/?p=71
  128. http://cxf.apache.org/docs/jax-rs-and-jax-ws.html
  129. Java EE 7 and JAX-RS 2.0: http://www.oracle.com/technetwork/articles/java/jaxrs20-1929352.html
  130. Changing the default XML namespace prefix generated with JAXWS: https://stackoverflow.com/questions/3846121/changing-the-default-xml-namespace-prefix-generated-with-jaxws
  131. Soap envelope namespace prefix in Java web service: https://stackoverflow.com/questions/30623419/soap-envelope-namespace-prefix-in-java-web-service
  132. 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
  133. Package annotations: http://puredanger.github.io/tech.puredanger.com/2007/02/28/package-annotations/
  134. What is JAXB generated package-info.java: https://stackoverflow.com/questions/7501494/what-is-jaxb-generated-package-info-java
  135. You Can't Buy Integration: https://martinfowler.com/articles/cant-buy-integration.html

See Also

EAI | API | REST | SOAP | WebApp | DesktopApp