Three key points about the document:
1. It discusses architecture considerations for building applications, including separating an application into presentation, domain, and data source layers.
2. It examines different patterns that can be used in the domain and data source layers, such as transaction script, domain model, table module, and different gateway patterns.
3. It provides an example of designing a news application called RuNews that demonstrates some of these patterns, including a domain model, table data gateway, and service layer.
This document discusses application architecture and considerations for different layers including presentation, domain, and data source layers. It covers topics like layering, client types, content delivery, domain layer patterns like transaction script, domain model and table module. It also discusses data source layer patterns like gateway, active record and data mapper. Finally, it provides an example of implementing user signup in the Play! framework.
The document discusses domain-driven design patterns for structuring the domain layer of an application. It describes the Transaction Script, Domain Model, and Table Module patterns. For each pattern situation, it provides an overview of when the pattern applies and how it works. It also uses an example of a movie database application to illustrate applying these patterns, including using a Domain Model for the business entities and a Service Layer to define the application's public interface.
The document discusses various design patterns for the presentation layer in web applications, including Model-View-Controller (MVC), templates, and API design. It covers MVC patterns like Model View Controller, Page Controller, Front Controller, and Application Controller. It describes how templates can be used to render dynamic information by embedding markers in HTML pages. It also discusses trends toward designing web applications with application programming interfaces (APIs) that separate the user interface from server-side code.
Vefurinn hefur á undanförnum árum náð fótfestu sem sjálfgefið viðmót á hugbúnaði. Enterprise lausnir hafa gjarnan vefviðmót, bæði fyrir viðskiptavini og starfsmenn. Á síðari árum hafa snjallsímalaunsir bæst við. Við það hefur orðið skýrari skil milli viðmóts og bakenda, með forritaskilum - API.
Í þessum fyrirlestri skoðum við framsetningarlagið - Presentation Layer Design og hvernig við getum hannað forrit fyrir þetta lag. Skoðuð eru ýmis munstur og það helsta er eitt það frægasta í hugbúnaðargerð: Model View Controller.
Við skoðum einnig Play framework en það er ramminn sem við notum til að forrita.
The web has become the default and standard user interface for enterprise programming. In this lecture we look at the challenges of adding a web user interface to enterprise systems. The main design pattern we look at is the classical Model View Controller.
The idea is to break user interface components into three distinct roles. The Controller is the entry of the request, and handles the parameters that come with the request. The controller uses the model for the "state" or domain logic, be it calculations or getting some data. The model will deliver some data that needs to be rendered. It is the responsibility of the view to render the user interface.
We will also briefly look at the Play! framework: http://www.playframework.org/
The business logic of an enterprise application is probably the most confusing part of the application. By layering the application into presentation, domain and data source layers, we can provide a logical place to put what we call domain logic. It may not always be clear where presentation ends and the domain begins, but that is one of the challenges with building software applications.
In this lecture we look at the domain layer and introduce three domain logic design pattern and one to provide API to the domain.
This document discusses creating consumable web services for mobile devices. It covers understanding web services and common web service languages like XML and JSON. XML is useful for describing structured data but can be verbose. JSON is more lightweight. The document also discusses encoding binary data like images for transmission using Base64 encoding which increases file size and processing overhead.
The RA framework provides a Java-based n-tier architecture for quickly developing web applications. It includes presentation, middleware, business, and data interface layers. The presentation layer generates user interfaces from middleware data. Middleware uses XML configuration instead of Java beans. Business logic is implemented as services. The data interface layer integrates with databases using Oracle or Hibernate frameworks. The framework aims to reduce development time through reusable and configurable components while ensuring reliability, reusability, maintainability and portability.
This document discusses application architecture and considerations for different layers including presentation, domain, and data source layers. It covers topics like layering, client types, content delivery, domain layer patterns like transaction script, domain model and table module. It also discusses data source layer patterns like gateway, active record and data mapper. Finally, it provides an example of implementing user signup in the Play! framework.
The document discusses domain-driven design patterns for structuring the domain layer of an application. It describes the Transaction Script, Domain Model, and Table Module patterns. For each pattern situation, it provides an overview of when the pattern applies and how it works. It also uses an example of a movie database application to illustrate applying these patterns, including using a Domain Model for the business entities and a Service Layer to define the application's public interface.
The document discusses various design patterns for the presentation layer in web applications, including Model-View-Controller (MVC), templates, and API design. It covers MVC patterns like Model View Controller, Page Controller, Front Controller, and Application Controller. It describes how templates can be used to render dynamic information by embedding markers in HTML pages. It also discusses trends toward designing web applications with application programming interfaces (APIs) that separate the user interface from server-side code.
Vefurinn hefur á undanförnum árum náð fótfestu sem sjálfgefið viðmót á hugbúnaði. Enterprise lausnir hafa gjarnan vefviðmót, bæði fyrir viðskiptavini og starfsmenn. Á síðari árum hafa snjallsímalaunsir bæst við. Við það hefur orðið skýrari skil milli viðmóts og bakenda, með forritaskilum - API.
Í þessum fyrirlestri skoðum við framsetningarlagið - Presentation Layer Design og hvernig við getum hannað forrit fyrir þetta lag. Skoðuð eru ýmis munstur og það helsta er eitt það frægasta í hugbúnaðargerð: Model View Controller.
Við skoðum einnig Play framework en það er ramminn sem við notum til að forrita.
The web has become the default and standard user interface for enterprise programming. In this lecture we look at the challenges of adding a web user interface to enterprise systems. The main design pattern we look at is the classical Model View Controller.
The idea is to break user interface components into three distinct roles. The Controller is the entry of the request, and handles the parameters that come with the request. The controller uses the model for the "state" or domain logic, be it calculations or getting some data. The model will deliver some data that needs to be rendered. It is the responsibility of the view to render the user interface.
We will also briefly look at the Play! framework: http://www.playframework.org/
The business logic of an enterprise application is probably the most confusing part of the application. By layering the application into presentation, domain and data source layers, we can provide a logical place to put what we call domain logic. It may not always be clear where presentation ends and the domain begins, but that is one of the challenges with building software applications.
In this lecture we look at the domain layer and introduce three domain logic design pattern and one to provide API to the domain.
This document discusses creating consumable web services for mobile devices. It covers understanding web services and common web service languages like XML and JSON. XML is useful for describing structured data but can be verbose. JSON is more lightweight. The document also discusses encoding binary data like images for transmission using Base64 encoding which increases file size and processing overhead.
The RA framework provides a Java-based n-tier architecture for quickly developing web applications. It includes presentation, middleware, business, and data interface layers. The presentation layer generates user interfaces from middleware data. Middleware uses XML configuration instead of Java beans. Business logic is implemented as services. The data interface layer integrates with databases using Oracle or Hibernate frameworks. The framework aims to reduce development time through reusable and configurable components while ensuring reliability, reusability, maintainability and portability.
The document discusses session state in distributed web applications. It describes how session state can be stored on the client, server, or database. Storing state on the client limits scalability but is simplest, while storing in a database improves scalability but can become a bottleneck. The document also discusses design patterns for microservices including loose coupling, high cohesion, and bounded contexts. Services should be loosely coupled and have high cohesion to group related functionality together.
One of the most critical design decisions on enterprise programming is where to keep the state. As we talked about in the lecture on Concurrency, session state is the state that is maintained between requests. A session starts when the user first hits the enterprise system, and lasts until the user signs out or times out. In this lecture we look at the session state and explore three design patterns on where to store the session state.
The second topic in this lecture is how to distribution the applications. The primary reason we want to do that is to get more performance and handle more load. Most enterprise applications have lots of users, some hundreds of thousands. The only way to cope with such load is to scale the application. Scalability is how much more load an application can take if more resources are added. We will look at two ways to scale, one is by load balancing and the other by clustering.
Video of this lecture are found here:
http://www.olafurandri.com/?page_id=2762
Jonathan Gray gave an introduction to HBase at the NYC Hadoop Meetup. He began with an overview of HBase and why it was created to handle large datasets beyond what Hadoop could support alone. He then described what HBase is, as a distributed, column-oriented database management system. Gray explained how HBase works with its master and regionserver nodes and how it partitions data across tables and regions. He highlighted some key features of HBase and examples of companies using it in production. Gray concluded with what is planned for the future of HBase and contrasted it with relational database examples.
Force.com is a platform as a service that provides the infrastructure needed to build business applications in the cloud. It offers a multi-tenant architecture with shared infrastructure and automatic upgrades. Force.com provides a database, business logic platform called Apex, user interfaces, and integration capabilities. Developers can build custom user interfaces using Visual Force pages and integrate applications using web services, email, and APIs.
The document discusses the history and concepts of NoSQL databases. It notes that traditional single-processor relational database management systems (RDBMS) struggled to handle the increasing volume, velocity, variability, and agility of data due to various limitations. This led engineers to explore scaled-out solutions using multiple processors and NoSQL databases, which embrace concepts like horizontal scaling, schema flexibility, and high performance on commodity hardware. Popular NoSQL database models include key-value stores, column-oriented databases, document stores, and graph databases.
This document provides an overview of a training session on designing and tuning SSAS multidimensional models. The agenda covers topics like dimension design, measure groups, attribute relationships, aggregations, and query performance tuning. It also introduces the speaker and their experience with SQL Server Analysis Services.
The document discusses application servers and their role in coordinating requests between message sources and application programs running as transactions. It describes the main components of an application server including web browsers, web servers, request controllers, transaction servers, and database management systems. It also covers functions of application servers such as providing runtime functions, transaction management, security, load balancing and more.
The document summarizes the evolution of the World Wide Web from Web 1.0 to Web 3.0. Web 1.0 was a static system with weak standards and primitive design. Web 2.0 became dynamic through technologies like AJAX and allowed user participation and crowdsourcing. Web 3.0 aims to make the web semantic and machine-readable through metadata standards and ontologies to improve interoperability between services and applications. It discusses challenges in getting authors to use semantic markup and potential issues with user-generated tags.
You can watch the replay for this Geek Sync webcast, Successfully Migrating Existing Databases to Azure SQL Database, on the IDERA Resource Center, http://ow.ly/k4p050A4rBA.
First impressions have long-lasting effects. When dealing with an architecture change like migrating to Azure SQL Database the last thing you want to do is leave a bad first impression by having an unsuccessful migration. In this session, you will learn the difference between Azure SQL Database, SQL Managed Instances, and Elastic Pools. How to use tools to test migrations for compatibility issues before you start the migration process. You will learn how to successfully migrate your database schema and data to the cloud. Finally, you will learn how to determine which performance tier is a good starting point for your existing workload(s) and how to monitor your workload over time to make sure your users have a great experience while you save as much money as possible.
Speaker: John Sterrett is an MCSE: Data Platform, Principal Consultant and the Founder of Procure SQL LLC. John has presented at many community events, including Microsoft Ignite, PASS Member Summit, SQLRally, 24 Hours of PASS, SQLSaturdays, PASS Chapters, and Virtual Chapter meetings. John is a leader of the Austin SQL Server User Group and the founder of the HADR Virtual Chapter.
This document discusses scalability and distributed systems. It introduces the scale cube model for scaling applications horizontally across multiple servers and vertically by splitting functionality. Session state can be stored on clients, servers, or in a database. Distributed systems require coarse-grained interfaces to minimize remote calls. Eventual consistency relaxes ACID properties and guarantees availability over consistency through asynchronous replication. The CAP theorem states it is impossible to guarantee consistency, availability, and partition tolerance simultaneously in distributed systems.
1) EPiServer Portal Framework allows organizations to create portals that combine information from the internet, intranet, and other systems into a single interface. This improves efficiency by centralizing relevant information.
2) The framework uses Web Services for Remote Portlets (WSRP) technology to integrate remote applications and content from various sources.
3) Examples are provided showing how the portal framework could be used to create an employee portal for managing business trips or a citizen portal providing government services in a centralized location.
Now that we have looked several design patterns, from the databases to web presentation, we are now ready to look at the application as a whole. In this lecture we examine the considerations we face when creating an application architecture and we look at each of the three layers.
The lecture presents one way of designing enterprise applications. The goal is to create scalable services.
We also look at the Play framework in more detail and look at REST.
Introduction and Basics to web technology .pptxLEENASAHU42
Introduction: Web system architecture- 1,2,3 and n tier
architecture, URL, domain name system, overview of
HTTP , Web Site Design Issues and Introduction to role of
SEO (Search Engine Optimization) on web page
development.
The document discusses object-relational impedance mismatch and various data source patterns for mapping objects to relational databases in a way that minimizes this mismatch. It describes the table data gateway, row data gateway, active record, and data mapper patterns. The table data gateway acts as a gateway to a database table, while the row data gateway acts as a gateway to a single record. Active record wraps a database row and adds domain logic, and data mapper provides object-relational mapping to keep the object model independent from the database schema. Spring JDBC is also introduced as a framework that can help implement these patterns.
A review of the new features in SharePoint 2013.
For more information:
www.adventos.com
Twitter: @AdventosSolves -- https://twitter.com/adventossolves
Facebook: @AdventosLLC -- https://www.facebook.com/AdventosLlc
Sennilega er "business logic" sá hluti af enterprise lausnum sem er hvað erfiðast að skilgreina. Á sama tima er þetta mikilvægasti hlutinn. Með því að lagskipta forritum í framsetningu, domain og data source lög fáum við vísa stað til að geymi það sem við köllum domain logic. Domain logic er annað heiti yfir business logic. Það er hins vegar ekki alltaf ljóst hvar framsetning endar og hvar domain byrjar en þetta er eitt af viðfangsefnum sem þarf að leysa.
Í þessum fyrirlestri förum við yfir domain layer og skoðum nokkru munstur sem henta.
Webinar How to Achieve True Scalability in SaaS ApplicationsTechcello
This document summarizes a webinar on achieving true scalability in SaaS applications. It discusses key factors demanding scalability like increased user concurrency. It covers best practices for scaling the web application and data tiers, such as using auto-scaling, queues, and databases like DynamoDB. It also discusses leveraging cloud services for scalability and provides examples of scaling on AWS. Speaker profiles are included for experts from AWS and Techcello discussing scalability strategies.
As an official MongoDB-as-a-Service offering from MongoDB Inc., the maker for MongoDB, Atlas is becoming a very popular service offering for those who wish to build their applications in the cloud, regardless on AWS, Azure or GCP. One less known cloud product offered on the Atlas platform is Stitch, A group of services designed to interact with Atlas in every conceivable way, including creating endpoints, triggers, user authentication flows, serverless functions, and a UI to handle all of this. Adding these together, you have a server-less solution running on top of MongoDB cloud.
The document provides an overview of Oracle's WebCenter product and roadmap. Key elements discussed include enhanced support for mobile, social, and cloud capabilities. Upcoming features for WebCenter Portal, Content, and infrastructure include improved user experiences across devices, integration with Oracle Fusion applications and social networks, and cloud-based document and file sharing services. The document also summarizes Oracle's vision for business process management, including adaptive case management, mobile and social integration, enhanced analytics and process simulation capabilities.
Enterprise Data Integration for Microsoft Dynamics CRMDaniel Cai
This is the deck that I used for my presentation for XrmVirtual on Apr 9, 2013, which discusses various options that you may have for Microsoft Dynamics CRM data migration and integration.
This document discusses using database systems for dynamic web applications. It covers why databases are needed to address issues like performance, scalability, maintenance and data integrity as sites grow. Several types of database systems are described, including desktop, enterprise, free and embedded options. Key factors in choosing a system include size, features, cost and support needs. Security features like views, authorization rules and encryption are also summarized. Common web application platforms like PHP and ASP that integrate with databases are introduced.
The document discusses session state in distributed web applications. It describes how session state can be stored on the client, server, or database. Storing state on the client limits scalability but is simplest, while storing in a database improves scalability but can become a bottleneck. The document also discusses design patterns for microservices including loose coupling, high cohesion, and bounded contexts. Services should be loosely coupled and have high cohesion to group related functionality together.
One of the most critical design decisions on enterprise programming is where to keep the state. As we talked about in the lecture on Concurrency, session state is the state that is maintained between requests. A session starts when the user first hits the enterprise system, and lasts until the user signs out or times out. In this lecture we look at the session state and explore three design patterns on where to store the session state.
The second topic in this lecture is how to distribution the applications. The primary reason we want to do that is to get more performance and handle more load. Most enterprise applications have lots of users, some hundreds of thousands. The only way to cope with such load is to scale the application. Scalability is how much more load an application can take if more resources are added. We will look at two ways to scale, one is by load balancing and the other by clustering.
Video of this lecture are found here:
http://www.olafurandri.com/?page_id=2762
Jonathan Gray gave an introduction to HBase at the NYC Hadoop Meetup. He began with an overview of HBase and why it was created to handle large datasets beyond what Hadoop could support alone. He then described what HBase is, as a distributed, column-oriented database management system. Gray explained how HBase works with its master and regionserver nodes and how it partitions data across tables and regions. He highlighted some key features of HBase and examples of companies using it in production. Gray concluded with what is planned for the future of HBase and contrasted it with relational database examples.
Force.com is a platform as a service that provides the infrastructure needed to build business applications in the cloud. It offers a multi-tenant architecture with shared infrastructure and automatic upgrades. Force.com provides a database, business logic platform called Apex, user interfaces, and integration capabilities. Developers can build custom user interfaces using Visual Force pages and integrate applications using web services, email, and APIs.
The document discusses the history and concepts of NoSQL databases. It notes that traditional single-processor relational database management systems (RDBMS) struggled to handle the increasing volume, velocity, variability, and agility of data due to various limitations. This led engineers to explore scaled-out solutions using multiple processors and NoSQL databases, which embrace concepts like horizontal scaling, schema flexibility, and high performance on commodity hardware. Popular NoSQL database models include key-value stores, column-oriented databases, document stores, and graph databases.
This document provides an overview of a training session on designing and tuning SSAS multidimensional models. The agenda covers topics like dimension design, measure groups, attribute relationships, aggregations, and query performance tuning. It also introduces the speaker and their experience with SQL Server Analysis Services.
The document discusses application servers and their role in coordinating requests between message sources and application programs running as transactions. It describes the main components of an application server including web browsers, web servers, request controllers, transaction servers, and database management systems. It also covers functions of application servers such as providing runtime functions, transaction management, security, load balancing and more.
The document summarizes the evolution of the World Wide Web from Web 1.0 to Web 3.0. Web 1.0 was a static system with weak standards and primitive design. Web 2.0 became dynamic through technologies like AJAX and allowed user participation and crowdsourcing. Web 3.0 aims to make the web semantic and machine-readable through metadata standards and ontologies to improve interoperability between services and applications. It discusses challenges in getting authors to use semantic markup and potential issues with user-generated tags.
You can watch the replay for this Geek Sync webcast, Successfully Migrating Existing Databases to Azure SQL Database, on the IDERA Resource Center, http://ow.ly/k4p050A4rBA.
First impressions have long-lasting effects. When dealing with an architecture change like migrating to Azure SQL Database the last thing you want to do is leave a bad first impression by having an unsuccessful migration. In this session, you will learn the difference between Azure SQL Database, SQL Managed Instances, and Elastic Pools. How to use tools to test migrations for compatibility issues before you start the migration process. You will learn how to successfully migrate your database schema and data to the cloud. Finally, you will learn how to determine which performance tier is a good starting point for your existing workload(s) and how to monitor your workload over time to make sure your users have a great experience while you save as much money as possible.
Speaker: John Sterrett is an MCSE: Data Platform, Principal Consultant and the Founder of Procure SQL LLC. John has presented at many community events, including Microsoft Ignite, PASS Member Summit, SQLRally, 24 Hours of PASS, SQLSaturdays, PASS Chapters, and Virtual Chapter meetings. John is a leader of the Austin SQL Server User Group and the founder of the HADR Virtual Chapter.
This document discusses scalability and distributed systems. It introduces the scale cube model for scaling applications horizontally across multiple servers and vertically by splitting functionality. Session state can be stored on clients, servers, or in a database. Distributed systems require coarse-grained interfaces to minimize remote calls. Eventual consistency relaxes ACID properties and guarantees availability over consistency through asynchronous replication. The CAP theorem states it is impossible to guarantee consistency, availability, and partition tolerance simultaneously in distributed systems.
1) EPiServer Portal Framework allows organizations to create portals that combine information from the internet, intranet, and other systems into a single interface. This improves efficiency by centralizing relevant information.
2) The framework uses Web Services for Remote Portlets (WSRP) technology to integrate remote applications and content from various sources.
3) Examples are provided showing how the portal framework could be used to create an employee portal for managing business trips or a citizen portal providing government services in a centralized location.
Now that we have looked several design patterns, from the databases to web presentation, we are now ready to look at the application as a whole. In this lecture we examine the considerations we face when creating an application architecture and we look at each of the three layers.
The lecture presents one way of designing enterprise applications. The goal is to create scalable services.
We also look at the Play framework in more detail and look at REST.
Introduction and Basics to web technology .pptxLEENASAHU42
Introduction: Web system architecture- 1,2,3 and n tier
architecture, URL, domain name system, overview of
HTTP , Web Site Design Issues and Introduction to role of
SEO (Search Engine Optimization) on web page
development.
The document discusses object-relational impedance mismatch and various data source patterns for mapping objects to relational databases in a way that minimizes this mismatch. It describes the table data gateway, row data gateway, active record, and data mapper patterns. The table data gateway acts as a gateway to a database table, while the row data gateway acts as a gateway to a single record. Active record wraps a database row and adds domain logic, and data mapper provides object-relational mapping to keep the object model independent from the database schema. Spring JDBC is also introduced as a framework that can help implement these patterns.
A review of the new features in SharePoint 2013.
For more information:
www.adventos.com
Twitter: @AdventosSolves -- https://twitter.com/adventossolves
Facebook: @AdventosLLC -- https://www.facebook.com/AdventosLlc
Sennilega er "business logic" sá hluti af enterprise lausnum sem er hvað erfiðast að skilgreina. Á sama tima er þetta mikilvægasti hlutinn. Með því að lagskipta forritum í framsetningu, domain og data source lög fáum við vísa stað til að geymi það sem við köllum domain logic. Domain logic er annað heiti yfir business logic. Það er hins vegar ekki alltaf ljóst hvar framsetning endar og hvar domain byrjar en þetta er eitt af viðfangsefnum sem þarf að leysa.
Í þessum fyrirlestri förum við yfir domain layer og skoðum nokkru munstur sem henta.
Webinar How to Achieve True Scalability in SaaS ApplicationsTechcello
This document summarizes a webinar on achieving true scalability in SaaS applications. It discusses key factors demanding scalability like increased user concurrency. It covers best practices for scaling the web application and data tiers, such as using auto-scaling, queues, and databases like DynamoDB. It also discusses leveraging cloud services for scalability and provides examples of scaling on AWS. Speaker profiles are included for experts from AWS and Techcello discussing scalability strategies.
As an official MongoDB-as-a-Service offering from MongoDB Inc., the maker for MongoDB, Atlas is becoming a very popular service offering for those who wish to build their applications in the cloud, regardless on AWS, Azure or GCP. One less known cloud product offered on the Atlas platform is Stitch, A group of services designed to interact with Atlas in every conceivable way, including creating endpoints, triggers, user authentication flows, serverless functions, and a UI to handle all of this. Adding these together, you have a server-less solution running on top of MongoDB cloud.
The document provides an overview of Oracle's WebCenter product and roadmap. Key elements discussed include enhanced support for mobile, social, and cloud capabilities. Upcoming features for WebCenter Portal, Content, and infrastructure include improved user experiences across devices, integration with Oracle Fusion applications and social networks, and cloud-based document and file sharing services. The document also summarizes Oracle's vision for business process management, including adaptive case management, mobile and social integration, enhanced analytics and process simulation capabilities.
Enterprise Data Integration for Microsoft Dynamics CRMDaniel Cai
This is the deck that I used for my presentation for XrmVirtual on Apr 9, 2013, which discusses various options that you may have for Microsoft Dynamics CRM data migration and integration.
This document discusses using database systems for dynamic web applications. It covers why databases are needed to address issues like performance, scalability, maintenance and data integrity as sites grow. Several types of database systems are described, including desktop, enterprise, free and embedded options. Key factors in choosing a system include size, features, cost and support needs. Security features like views, authorization rules and encryption are also summarized. Common web application platforms like PHP and ASP that integrate with databases are introduced.
Sap integration with_j_boss_technologiesSerge Pagop
The document discusses various approaches for integrating SAP systems with JBoss middleware technologies. It describes Red Hat JBoss products like EAP, Fuse, and SOA Platform that can be used for integration. It then covers different SAP integration technologies like the REST-based SAP NetWeaver Gateway, SOAP-based Enterprise Services, and Remote Function Calls. Recommendations are provided for when to take a data-centric approach using the Gateway or a process-centric approach using Hibersap and JCA. Examples of each approach are given.
This document discusses Indix's evolution from its initial Data Platform 1.0 to a new Data Platform 2.0 based on the Lambda Architecture. The Lambda Architecture uses three layers - batch, serving, and speed layers - to process streaming and batch data. This provides robustness, fault tolerance, and the ability to query both real-time and batch processed views. The new system uses technologies like Spark, HBase, and Solr to implement the Lambda Architecture principles.
This document provides an overview of a development webinar series. It discusses SharePoint web development and lists the presenter's credentials and expertise. The webinar covers topics like using SharePoint out of the box versus customization versus development. Examples of web parts, forms, and other applications are shown to illustrate development possibilities. Interactive demos are included to showcase sample projects.
The document does not contain any text to summarize. It only contains the letters "AS". In 3 sentences or less, I am unable to provide a meaningful summary as there is no context or content to summarize from the given text.
Forritun gagnaaðgangs er líklega eitt algengasta viðfangsefni við gerð enterprice lausna. Einhvern vegin verðum við að geyma stöður og gögn. Til þess eru töflugagnagrunnar (relational databases) lílkega algengasta formið af geymslu. Gallinn er sá að hlutbundin forritun fellur ekkert sérlega vel að töflugrunnum.
Í þessum fyrirlestri er yfir þau vandamál sem koma upp við hönnun gagnalagsins og hvernig best er að brúa bilið milli klasa í forriti og taflna í grunni.
CRM magic with data migration & integration (Presentation at CRMUG Summit 2013)Daniel Cai
This is the deck that I presented to CRMUG Summit 2013 in Tampa. During the session, I tried to discuss various options that you may have for Microsoft Dynamics CRM data migration and integration, including some best practices that you can leverage. This deck is an updated version of my XrmVirtual presentation on Apr 9, 2013.
Using Familiar BI Tools and Hadoop to Analyze Enterprise NetworksMapR Technologies
This document discusses using Apache Drill and business intelligence (BI) tools to analyze network data stored in Hadoop. It provides examples of querying network packet captures, OpenStack data, and TCP metrics using SQL with tools like Tableau and SAP Lumira. The key benefits are interacting with diverse network data sources like JSON and CSV files without preprocessing, and gaining insights by combining network data with other data sources in the BI tools.
Fyrirlestur fyrir Félag tölvunarfræðinga og Verkfræðingafélagið þann 18.05.2022
Nýsköpun er forsenda tækniframfara sem eru forsendur framþróunar. Nýsköpun byrjar yfirleitt smátt og þarf margar ítranir til að virka. Frumkvöðlar sem eru að búa til nýjungar þurfa ekki einungis að glíma við tæknina og takmarkanir hennar, heldur einnig skoðanir og álit samtímamanna sem sjá ekki alltaf tilgang með nýrri tækni. Í þessum fyrirlestri skoðar Ólafur Andri nýsköpun og þær framfarir sem hafa orðið. Einnig skoðar hann hvert tækniframfarir nútímans muni leiða okkur á komandi árum.
Ólafur Andri Ragnarsson er aðjúnkt við Háskólann í Reykjavík og kennir þar námskeið um tækniþróun og hvernig tæknibreytingar hafa áhrif á fyrirtæki. Hann er tölvunarfræðingur (Msc) að mennt frá Oregon University í Bandaríkjanum. Ólafur Andri er frumkvöðull og stofnaði, ásamt fleirum, Margmiðlun og síðar Betware. Þá tók Ólafur Andri þátt í að stofna leikjafyrirtækið Raw Fury AB í Stokkhólmi.
Fyrirlestur haldinn fyrir tæknifaghóp Stjórnvísi þann 13. október 2020.
Undanfarna áratugi höfum við séð gríðalegar framfarir í tækni og nýsköpun á heimsvísu. Þessar framfarir hafa skapað mannkyninu öllu aukna hagsæld. Þrátt fyrir veirufaraldur á heimsvísu eru framfarir ekkert að minnka heldur munu bara aukast næstu árum. Gervgreind, róbotar, sýndarveruleiki, hlutanetið og margt fleira er að búa til nýjar lausnir og ný tækifæri. Framtíðin er í senn sveipuð dulúð og getur verið spennandi og ógnvekjandi í senn. Eina sem við vitum fyrir vissu er að framtíðin verður alltaf betri. Í þessu fyrirlestri ætlar Ólafur Andri Ragnarsson kennari við HR að fjalla um nýjustu tækni og framtíðina.
Technology is one of the factors of change. When new disruptive technology is introduced, it can change industries. We have many examples of that and will start this journey it one of the most important innovation that has come in our lifetimes, the smartphone. We will explore the impact of the smartphone and the fate of existing companies at the time when iPhone, the first smartphone as we know them, was introduced to the world.
We will also look at other examples from history. Then we look at the broader picture, past industrial revolutions and the one that we are experiencing now, the fourth industrial revolution. Specifically we look briefly at the technologies that fuel this revolution, for example artificial intelligence, robotics, drones, internet of things and more.
This document summarizes a lecture on robotics and drones. It discusses the history of robots dating back to ancient times. It also covers modern industrial robots, robotic developments in the 21st century including robots that can see, hear and sense. The document outlines Isaac Asimov's three laws of robotics. It discusses self-driving cars and their levels of automation. Finally, it covers unmanned aerial vehicles including military drones and delivery drones, and concludes that the robot revolution has only just begun.
The normal interaction with computers is with keyboard and a mouse. For display a rectangular somewhat small screen is used with 2D windowing systems. The mouse was invented more the 40 years ago and has been for 20 years dominant input. Now we are seeing new types of input devices. Multi-touch adds new dimensions and new applications. Natural user interfaces or gesture interfaces where people point to drag objects. Computers are also beginning to recognize facial expressions of people, so it knows if you are smiling. Voice and natural language understanding is getting to a usable stage. All this calls all types of new applications.
Displays are getting bigger. What if any surface was a screen? If you could spray the wall with screen? Or have you phone project images to the wall.
This lectures explores some of these new types of interactions with computers and software. It makes the old mouse look old.
Local is the Lo in SoLoMo, the buzz word. Local is not only about location, it's also about your digital track record. Over 70% of Netflix users watch the films recommend. Mining data to understand people's behaviour is getting to be a huge and valuable business. Advertisers see opportunities in getting direct to their target groups. Predictive intelligence is also about where you will be at some time in the future, and where somebody you know will be.
It turns out that Facebook and Google know you better than you think you know yourself. The world is about to get really scary.
Over two billion people signed up for Facebook. This site the most used site for people when using the Internet. People are not watching TV so much anymore - they using Facebook, Youtube and Netflix and number of popular web sites.
Some people denote their time working for others online. What drives people to write an article on Wikipedia? They don´t get paid. Companies are enlisting people to help with innovations and sites such as Galaxy Zoo ask people to help identifying images. And why do people have to film themselves singing when they cannot sing and post the video on Youtube?
In this lecture we talk about how people are using the web to interact in new ways, and doing stuff.
With the computer revolution vast amount of digital data has become available. With the Internet and smart connected product, the data is growing exponentially. It is estimated that every year, more data is generated than all history prior. And this has repeated over several years.
With all this data, it becomes a platform for something new of its own. In this lecture, we look at what big data is and look at several examples of how to use data. There are many well-know algorithms to analyse data, like clustering and machine learning.
After the computing industry got started, a new problem quickly emerged. How do you operate this machines and how to you program them. The development of operating systems was relatively slow compared to the advances in hardware. First system were primitive but slowly got better as demand for computing power increased. The ideas of the Graphical User Interfaces or GUI (Gooey) go back to Doug Engelbarts Demo of the Century. However, this did not have much impact on the computer industry. One company though, Xerox, a photocopy company explored these ideas with Palo Alto Park. Steve Jobs of Apple and Bill Gates of Microsoft took notice and Apple introduced first Apple Lisa and the Macintosh.
In this lecture on we look so lessons for the development of software, and see how our business theories apply.
In this lecture on we look so lessons for the development of algorithms or software, and see how our business theories apply.
In the second part we look at where software is going, namely Artificial Intelligence. Resent developments in AI are causing an AI boom and new AI application are coming all the time. We look at machine learning and deep learning to get an understanding of the current trends.
We are currently living in times of great transformation. We have over the last couple of decade seen the Internet become the most powerful disrupting force in the world, connecting everyone and transforming businesses. Now everyday objects - things we use are getting smart with sensors and software. And they are connecting. What does this mean?
We will see the world become alive. Cars will talk to road sensors that talk to systems that guide traffic. Plants will talk to weather systems that talk to scientists that research climate change. Farming fields will talk to the farming system that talks to robots that do fertilising and harvesting. Home appliances like refrigerators, ovens, coffee machines and microwaves ovens will talk to the home food and cooking system that will inform the store that you are running out butter, cheese, laundry detergent and coffee beans, which will inform the robot driver to get this to your house after consulting your calendar upon when someone is at home.
In this lecture we explore the Internet of Things, IoT.
The Internet grew out of US efforts to build the ARPANET, a network of peer computers built during the cold war. The two major players were military and academia. The network was simple and required no efforts for security or social responsibility. The early Internet community was mainly highly educated and respectable scientist. In the early 1990s the World Wide Web, a hypertext system is introduced, and soon browsers start to appear, leading the commercialization of Net. New businesses emerge and a technology boom known as the dot-com era.
The network, now over 40, is being stretched. Problems such as spam, viruses, antisocial behaviour, and demands for more content are prompting reinvention of the Net and threatening its neutrality. Add to this government efforts to regulate and limit the network.
In this lecture we look at the Internet and the impact of the network. We will also look at the future of the Internet.
The Internet grew out of US efforts to build the ARPANET, a network of peer computers built during the cold war. The two major players were military and academia. The network was simple and required no efforts for security or social responsibility. The early Internet community was mainly highly educated and respectable scientist. In the early 1990s the World Wide Web, a hypertext system is introduced, and soon browsers start to appear, leading the commercialisation of Net. New businesses emerge and a technology boom known as the dot-com era.
The network, now over 40, is being stretched. Problems such as spam, viruses, antisocial behaviour, and demands for more content are prompting reinvention of the Net and threatening its neutrality. Add to this government efforts to regulate and limit the network.
In this lecture we look at the Internet and the impact of the network. We will also look at the future of the Internet.
- Mobile phones are now the most common device in the world, with over 8.5 billion connections globally as of 2017.
- The development of mobile phones was enabled by earlier innovations in electromagnetism and radio in the late 19th century, but mobile phones did not become practical until the 1980s with the invention of the microchip.
- Mobile technology has advanced through generations from analog 1G networks in the 1980s, to digital 2G networks in the 1990s incorporating texting, and 3G packet switched networks in the 2000s enabling more data and applications.
Did you know that the term "Computer" once meant a profession? And what did people or computers actually do? They computed mathematical problems. Some problems were tedious and error prone. And it is not surprising that people started to develop machines to aid in the effort. The first mechanical computers were actually created to get rid of errors in human computation. Then came tabulating machines and cash registers. It was not until telephone companies were well established that computing machines became practical.
First computers were huge mainframes, but soon minicomputers like DEC’s PDP started to appear. The transistor was introduced in 1947, but its usefulness was not truly realized until in 1958 when the integrated circuit was invented. This led to the invention of the microprocessor. Intel, in 1971, marketed the 4004 – and the personal computer revolution started. One of the first Personal Computers was MITS’ Altair. This was a simple device and soon others saw the opportunities.
In this lecture we start our coverage of computing and look at some of the early machines and the impact they had.
Software is changing the way traditional business operate. People now have smartphones in their pockets - a supercomputer that is 25,000 times more powerful and the minicomputers of the 1960s. This is changing people's behaviour and how people shop and use services. The organisational structure created in the 20th century cannot survive when new digital solution are being offered. Software is changing the way traditional business operate. People now have smartphones in their pockets - a supercomputer that is 25,000 times more powerful and the minicomputers of the 1960s. This is changing people's behaviour and how people shop and use services. The organisational structure created in the 20th century cannot survive when new digital solution are being offered. The hierarchical structure of these established companies assumes high coordination cost due to human activity. But when the coordination cost drops
The organisational structure that companies in the 20th century established was based on the fact that employees needed to do all the work. The coordination cost was high due to the effort and cost of employees, housing etc. Now we have software that can do this for use and the coordination cost drops to close-to-zero. Another thing is that things become free. Consider Flickr. Anybody can sign up and use the service for free. Only a fraction of the users get pro account and pay. How can Flickr make money on that? It turns out that services like this can.
Many businesses make money by giving things away. How can that possibly work? The music business has suffered severely with digital distribution of content. Should musicians put all their songs on YouTube? What is the future business model for music?
One of the great irony of successful companies is how easily they can fail. New companies are founded to take advantage of some new technology. They become highly successful and but when the technology shifts, something new comes along, they are unable to adapt and fail. This is the innovator’s dilemma.
Then there are companies that manage to survive. For example, Kodak survived two platform shift, only til fail the third. IBM has survived over 100 years. What do successful companies do differently?
History has many examples of great innovators who had difficult time convincing their contemporaries of new technology. Even incumbent and powerful companies regarded new technologies as inferior and dismissed it as "toys". Then when disruptive technologies take off they often are overhyped and can cause bubbles like the Internet bubble of the late 1990s.
In this lecture we look at some examples of disruptive technologies and the impact they had. We look at the The Disruptive Innovation Theory by Harvard Professor Clayton Christensen.
Technology evolves in big waves that we call revolutions. The first revolution was the Industrial revolution that started in Britain in 1771. Since than we have see more revolutions come and how we are in the fifth. These revolutions follow a similar path. First there is an installation period where the new technologies are installed and deployed, creating wealth to those who were are the right place at the right time. This is followed by a frenzy, where financial markets wants to be apart. The there is crash and turning point, followed by synergy, a golden age.
In 1908, a new technological revolution started. It was the Age of Oil and Automobile. The technology trigger was Henry Ford´s new assembly line technique that allowed the manufacturing of standardized, low cost automobile. This created the car industry and other manufacturing companies. This also created demand for gas thus creating the oil industry. During the Roaring Twenties the stock prices rose to new levels, until a crash and the Great Depression. Only after World War II, came a turnaround point followed by a golden age in the post-war boom.
In this lecture we look at a framework for understanding technological revolutions. There revolutions completely change societies and replace the old with new technologies. We will explore how these revolutions take place. We should now be in the golden age phase.
We also look at generations.
In the early days of product development, the technology is inferior and lacking in performance. The focus is very much on the technology itself. The users are enthusiast who like the idea of the product, find use for it, and except the lack of performance. Then as the product becomes more mature, other factors become important, such as price, design, features, portability. The product moves from being a technology to become a consumer item, and even a community.
In this lecture we explore the change from technology focus to consumer focus, and look at why people stand in line overnight to buy the latest gadgets.
This document summarizes a lecture about the diffusion of innovation. It discusses how new ideas are developed through collaboration and exchange. It also discusses how innovations diffuse slowly at first, gaining momentum over time as they are adopted by pragmatists and conservatives seeking convenient solutions. The rate of adoption follows an S-curve, with innovators and enthusiasts driving early adoption and the mass market adopting later. Customers' motivations for adoption change over time, initially valuing the innovation's benefits and later valuing its functionality. Factors like network effects, convenience, and compatibility influence adoption rates.
A neural network is a machine learning program, or model, that makes decisions in a manner similar to the human brain, by using processes that mimic the way biological neurons work together to identify phenomena, weigh options and arrive at conclusions.
Mobile App Development Company In Noida | Drona InfotechDrona Infotech
React.js, a JavaScript library developed by Facebook, has gained immense popularity for building user interfaces, especially for single-page applications. Over the years, React has evolved and expanded its capabilities, becoming a preferred choice for mobile app development. This article will explore why React.js is an excellent choice for the Best Mobile App development company in Noida.
Visit Us For Information: https://www.linkedin.com/pulse/what-makes-reactjs-stand-out-mobile-app-development-rajesh-rai-pihvf/
How Can Hiring A Mobile App Development Company Help Your Business Grow?ToXSL Technologies
ToXSL Technologies is an award-winning Mobile App Development Company in Dubai that helps businesses reshape their digital possibilities with custom app services. As a top app development company in Dubai, we offer highly engaging iOS & Android app solutions. https://rb.gy/necdnt
Boost Your Savings with These Money Management AppsJhone kinadey
A money management app can transform your financial life by tracking expenses, creating budgets, and setting financial goals. These apps offer features like real-time expense tracking, bill reminders, and personalized insights to help you save and manage money effectively. With a user-friendly interface, they simplify financial planning, making it easier to stay on top of your finances and achieve long-term financial stability.
Measures in SQL (SIGMOD 2024, Santiago, Chile)Julian Hyde
SQL has attained widespread adoption, but Business Intelligence tools still use their own higher level languages based upon a multidimensional paradigm. Composable calculations are what is missing from SQL, and we propose a new kind of column, called a measure, that attaches a calculation to a table. Like regular tables, tables with measures are composable and closed when used in queries.
SQL-with-measures has the power, conciseness and reusability of multidimensional languages but retains SQL semantics. Measure invocations can be expanded in place to simple, clear SQL.
To define the evaluation semantics for measures, we introduce context-sensitive expressions (a way to evaluate multidimensional expressions that is consistent with existing SQL semantics), a concept called evaluation context, and several operations for setting and modifying the evaluation context.
A talk at SIGMOD, June 9–15, 2024, Santiago, Chile
Authors: Julian Hyde (Google) and John Fremlin (Google)
https://doi.org/10.1145/3626246.3653374
Orca: Nocode Graphical Editor for Container OrchestrationPedro J. Molina
Tool demo on CEDI/SISTEDES/JISBD2024 at A Coruña, Spain. 2024.06.18
"Orca: Nocode Graphical Editor for Container Orchestration"
by Pedro J. Molina PhD. from Metadev
WWDC 2024 Keynote Review: For CocoaCoders AustinPatrick Weigel
Overview of WWDC 2024 Keynote Address.
Covers: Apple Intelligence, iOS18, macOS Sequoia, iPadOS, watchOS, visionOS, and Apple TV+.
Understandable dialogue on Apple TV+
On-device app controlling AI.
Access to ChatGPT with a guest appearance by Chief Data Thief Sam Altman!
App Locking! iPhone Mirroring! And a Calculator!!
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...Luigi Fugaro
Vector databases are transforming how we handle data, allowing us to search through text, images, and audio by converting them into vectors. Today, we'll dive into the basics of this exciting technology and discuss its potential to revolutionize our next-generation AI applications. We'll examine typical uses for these databases and the essential tools
developers need. Plus, we'll zoom in on the advanced capabilities of vector search and semantic caching in Java, showcasing these through a live demo with Redis libraries. Get ready to see how these powerful tools can change the game!
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid
IBM watsonx Code Assistant for Z, our latest Generative AI-assisted mainframe application modernization solution. Mainframe (IBM Z) application modernization is a topic that every mainframe client is addressing to various degrees today, driven largely from digital transformation. With generative AI comes the opportunity to reimagine the mainframe application modernization experience. Infusing generative AI will enable speed and trust, help de-risk, and lower total costs associated with heavy-lifting application modernization initiatives. This document provides an overview of the IBM watsonx Code Assistant for Z which uses the power of generative AI to make it easier for developers to selectively modernize COBOL business services while maintaining mainframe qualities of service.
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...kalichargn70th171
Visual testing plays a vital role in ensuring that software products meet the aesthetic requirements specified by clients in functional and non-functional specifications. In today's highly competitive digital landscape, users expect a seamless and visually appealing online experience. Visual testing, also known as automated UI testing or visual regression testing, verifies the accuracy of the visual elements that users interact with.
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...Paul Brebner
Closing talk for the Performance Engineering track at Community Over Code EU (Bratislava, Slovakia, June 5 2024) https://eu.communityovercode.org/sessions/2024/why-apache-kafka-clusters-are-like-galaxies-and-other-cosmic-kafka-quandaries-explored/ Instaclustr (now part of NetApp) manages 100s of Apache Kafka clusters of many different sizes, for a variety of use cases and customers. For the last 7 years I’ve been focused outwardly on exploring Kafka application development challenges, but recently I decided to look inward and see what I could discover about the performance, scalability and resource characteristics of the Kafka clusters themselves. Using a suite of Performance Engineering techniques, I will reveal some surprising discoveries about cosmic Kafka mysteries in our data centres, related to: cluster sizes and distribution (using Zipf’s Law), horizontal vs. vertical scalability, and predicting Kafka performance using metrics, modelling and regression techniques. These insights are relevant to Kafka developers and operators.
Using Query Store in Azure PostgreSQL to Understand Query PerformanceGrant Fritchey
Microsoft has added an excellent new extension in PostgreSQL on their Azure Platform. This session, presented at Posette 2024, covers what Query Store is and the types of information you can get out of it.
Alluxio Webinar | 10x Faster Trino Queries on Your Data PlatformAlluxio, Inc.
Alluxio Webinar
June. 18, 2024
For more Alluxio Events: https://www.alluxio.io/events/
Speaker:
- Jianjian Xie (Staff Software Engineer, Alluxio)
As Trino users increasingly rely on cloud object storage for retrieving data, speed and cloud cost have become major challenges. The separation of compute and storage creates latency challenges when querying datasets; scanning data between storage and compute tiers becomes I/O bound. On the other hand, cloud API costs related to GET/LIST operations and cross-region data transfer add up quickly.
The newly introduced Trino file system cache by Alluxio aims to overcome the above challenges. In this session, Jianjian will dive into Trino data caching strategies, the latest test results, and discuss the multi-level caching architecture. This architecture makes Trino 10x faster for data lakes of any scale, from GB to EB.
What you will learn:
- Challenges relating to the speed and costs of running Trino in the cloud
- The new Trino file system cache feature overview, including the latest development status and test results
- A multi-level cache framework for maximized speed, including Trino file system cache and Alluxio distributed cache
- Real-world cases, including a large online payment firm and a top ridesharing company
- The future roadmap of Trino file system cache and Trino-Alluxio integration
4. Three Layers
▪ Presentation Layer for the User Interface
▪ Domain Layer for the domain logic
▪ Data Source Layer for the data access
– Separation of concern
Client
Client
Domain Data Source
5. Presentation Layer
▪ Consideration
– Separating the Presentation Logic from the Domain Logic
– Simple vs. Rich user interface
– Should content be editable frequently
▪ Content Management System
– View templates with HTML and JS
6. User Interfaces
▪ Clear separation of concerns is important
– Define the Presentation Logic
– Design the domain layer so the presentation can get the information
needed
– Semantics – or the meaning of things is important
– Presentation logic must avoid making assumptions on the domain –
the semantics should be a part of the domain
• Use Data Transfer Objects to store semantics
Presentation Semantics Domain
7. Client Types
▪ Native OS Applications
– Windows, iOS, Android, Linux
▪ Embedded
– Run inside Web Browsers
– Flash, Java Applets
▪ Interactive Web Applications
– HTML with JavaScript
▪ HTML Presentation in Browsers
– Simple HTML
8. Client Types
▪ Mobile is not a client type
– It’s just smaller screen
– Which 60% people hold vertically
▪ People have their phones with them all the time
▪ Check their phone about 110 times per day
11. Responsive Web Design
▪ Web pages that automatically adjust to the screen size
– Should be the default design
▪ Problems with RWD
– Does not deal with context
– What would a persons be
looking for when using
a mobile phone?
– Excuse to avoid apps, when app might be a better choice
12. App vs. Web
Don’t ask a developer which is better - it’s a management decision
13. MOBILE WEB MOBILE APP
Using a mobile
web browser
Downloaded, runs
on native hardware
PROS
Content is indexable
Device independent (almost)
Easier/Faster development & update
Easier to measure
CONS
Connection Dependence
Limited hardware integration
Bandwidth & browser limited UX
PROS
Connection independence
Better hardware integration
Better graphic performance & UX
CONS
Content is not web indexable
Device dependence
More expensive development & update
More complex to measure
Source: moz.com/blog/
14. Content Delivery
▪ Native, Embedded and Interactive Web Apps
– Require HTTP API call for dynamic content
– For example SOAP, REST with Json or XML
▪ HTML Presentation in Browsers
– Server side generated
15. Content Type
▪ Static Content such as graphic assets, doesn’t change frequently
▪ Editable Content such as text, layout, mashed-up content, editable by content
owners, frequently
▪ Dynamic Content stored in database and manipulated by the domain logic
16. Content Management Systems
▪ Content is separated form the Enterprise system
– Managed by CMS software with its own database
– HTTP API calls for dynamic content from the enterprise system
CLIENT
Web Browser
HTML
JavaScript CMS
Enterprise
Application
HTTP/REST/Json
OPERATOR
Editable
content
Static
content
Dynamic
content
Static
content
17. Domain Layer
▪ Where is the domain logic?
– Application Servers
– Lightweight Containers
18. Application Servers
▪ Domain Components are deployed on Application Servers
– Distributed Multi-tiered Applications
– Example:
• Web Servers, EJB Servers
19. Lightweight Containers
▪ Assemble components from different projects into a cohesive
application
– Wiring is done with “Inversion of Control” - config
– Provide life-cycle management of objects
– Provide context
Web Browser
Native App
Web Server
Web Layer
controllers
view
Lightweight Container
Domain
Layer
Data Source
Layer
DB
20. Data Source Layer
▪ How to create the mapping from the domain to the Data Source Layer
– Gateways with no domain logic
– Records managed with some domain logic
– Data Mappers
21. Data Source Layer
▪ Domain Model uses gateway
Domain
Layer
Data
Source
Layer
22. Object Relational Mapping (ORM)
▪ Use a mapping layer to map between objects and tables
– Mapping a data representation from an object model to a relational
data model with a SQL-based schema
▪ Mapping requires
metadata
– XML
▪ Authoring and maintaining
metadata is less work than
maintaining SQL code
24. The Big Picture with Services
Client
Domain
Data
Source
CMS
REST
Web
Server DB
Domain
Data
Source
REST
Web
Server DB
Frameworks Libraries
Shared
Objects
SERVICE
SERVICE
26. Advice is a dangerous gift
There are no right answers
“Use the advice to prod your thinking, but don’t use it as a
replacement for your thinking” — Martin Fowler
27. Three Layers
▪ Presentation Layer for the User Interface
▪ Domain Layer for the domain logic
▪ Data Source Layer for the data access
– What patterns to use?
Presentation
Layer
Domain Data Source
29. Domain Layer
▪ Transaction Script
– Procedural
– Encapsulates the logic of each transaction
– Works well for systems that are transactional in nature
▪ Drawbacks
– Does not handle complexity of logic
– Code duplications
30. Domain Layer
▪ Domain Model
– Works nicely for any type of domain logic
– Flexibility in creating an object oriented classes that use
abstractions and polymorphism
– Beautiful code
▪ Drawbacks
– Learning curve – understanding the model
– Requires skills
– Doesn’t always map easily to relational database
31. Domain Layer
▪ Table Module
– Works well for data driven applications
– Fits well with relational databases
– Requires Record Set functionality
▪ Drawbacks
– Structured around the database
– Needs tooling support, for example Record Set
– Can become dependent on the environment
32. Data Source Layer
▪ Data Source for Transaction Script
– Fits well to use the Gateway patterns
– Row Data Gateway or Table Data Gateway
– Depends on the applications
– If the transactions are dealing with each row per transactions, then
Row Data Gateway works
– If working with tables, Table Data Gateway works
33. Data Source Layer
▪ Data Source for Table Module
– Table Module requires good support from Record Set
– Table Data Gateway fits this well
34. Data Source Layer
▪ Data Source for Domain Model
– If the Domain Model is fairly simple, and maps the database, Active
Record works well
– If you want to provide abstraction the gateway patterns become
better choice, Row Data Gateway and Table Data Gateway
– If things get more complication and there is need to keep the model
independent from the data source, Data Mapper should be
considered
35. Model View Controller
▪ For all types MVC architectural patterns applies
▪ Web Frameworks are usually implemented using some sort of
Front Controller pattern
▪ Each request has an Action or a Controller
▪ Views are handle by Template View
36. Domain Layer
The Big Picture
Presentation
Layer
Service
Layer
Data Source
Domain
DB
39. Exercise
▪ Design Web Application RuNews
– Front page displays RSS news items
– Content read with ImportContentProcess
– User can sign up and login
41. Signup
As a user, I want to be able to sign up
Registration
Fields: name, username, password, email
Validation:
all fields are required
username must be at least 4 characters
password must be confirmed (typed in twice)
42.
43. Play setup
43
▪ Project is created: RuNews
– activator new RuNews
– Import in IntelliJ IDEA
▪ Structure
– controllers
– is.ru.honn.news
– views
44. The Database
▪ Table users
44
CREATE TABLE users
(
id int Identity (1, 1) primary key NOT NULL,
name varchar(128),
username varchar(128) unique,
password varchar(128),
email varchar(128),
)
46. index
▪ View is views/index.scala.html
▪ Compiled: views/html/index
46
@main("RuNews") {
<h2>Registration</h2>
<p>
Here you can sign up:
</p>
<p>
<a class="btn" href="@routes.SignupController.blank">Sign up</a>
</p>
}
47. Routing
▪ conf/routes contains the routing information
# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~
# Home page
GET / controllers.Application.index()
# Sign Up
GET /signup controllers.SignupController.blank()
POST /signup controllers.SignupController.submit()
GET /users/:username controllers.UserController.getUser(username: String)
GET /userinfo controllers.UserController.blank()
# Map static resources from the /public folder to the /assets URL path
GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset)
48. RuNews Example
▪ User
48
public class User
{
protected int id;
protected String name;
protected String username;
protected String password;
protected String email;
public User()
{
}
public User(int id, String name, String username, String password,
String email)
{
this.id = id;
this.name = name;
this.username = username;
this.password = password;
this.email = email;
}
...
49. RuNews Example
▪ UserService is a Service Layer interface
▪ UserServiceData contains the implementation
49
public interface UserService
{
public int signup(User user);
public User login(String username, String password);
public User getUser(String username);
public void setUserDataGateway(UserDataGateway userDataGateway);
}
50. Adding Domain and Data Layers
▪ Domain Layer
– Service Layer in service
– Domain Model (very simple) in
domain
▪ Data Source Layer
– Table Data Gateway
52. Adding Domain and Data Layers
▪ Table Data Gateway injected into service
52
public class UserServiceData implements UserService
{
RuDataAccessFactory factory;
UserDataGateway userDataGateway;
public UserServiceData()
{
}
public void setUserDataGateway(UserDataGateway UserDataGateway)
{
this.userDataGateway = UserDataGateway;
}
53. RuNews Example
▪ SignupController is a Controller
53
package controllers;
import ...
import play.mvc.*;
import play.data.*;
import views.html.signup;
import views.html.summary;
import static play.data.Form.form;
public class SignupController extends Controller
{
final static Form<UserRegistration> signupForm =
form(UserRegistration.class);
protected ApplicationContext ctx = new
FileSystemXmlApplicationContext("/conf/app.xml");
public Result blank()
{
return ok(signup.render(signupForm));
}
54. RuNews Example
▪ SignupController is a Controller
54
public Result submit()
{
Form<UserRegistration> filledForm = signupForm.bindFromRequest();
if (!"true".equals(filledForm.field("accept").value()))
{
filledForm.reject("accept", "You must accept the terms and conditions");
}
...
if (filledForm.hasErrors())
{
return badRequest(signup.render(filledForm));
}
else
{
UserRegistration created = filledForm.get();
UserService service = (UserService) ctx.getBean("userService");
service.signup(created);
return ok(summary.render(created));
}
}
55. RuNews Example
▪ signup.scala.html is the view
55
@(signupForm: Form[is.ru.honn.news.domain.UserRegistration])
@import helper._
@main("Signup", nav = "signup") {
@helper.form(action = routes.SignupController.submit) {
<fieldset>
<legend>Account informations</legend>
@inputText(
signupForm("name"),
'_label -> "Name",
'_help -> "Please enter your name.",
'_error -> signupForm.globalError
)
@inputText(
signupForm("username"),
'_label -> "Username",
'_help -> "Please choose a valid username.",
'_error -> signupForm.globalError
)
@inputText(
signupForm("email"), '_label -> "Email",
'_help -> "Enter a valid email address."
)
56. RuNews Example
▪ summary.scala.html displayes the user
56
@(user: is.ru.honn.news.domain.User)
@main("Account created!", nav = "signup") {
<h2>Your account:</h2>
<p>Name: @user.getName()</p>
<p>Username: @user.getUsername()</p>
<p>Email: @user.getEmail()</p>
}
57. RuNews Example
▪ index.scala.html is default “/“ view
▪ All views use @main with title as parameter
57
@main("RuNews") {
<h2>Registration</h2>
<p>
Here you can sign up:
</p>
<p>
<a class="btn" href="@routes.SignupController.blank">Sign up</a>
</p>
}