Building End-to-end Multi-client Service Oriented Applications - AngularJS Edition
This course will take you through the development of a service oriented application from beginning to end and will include multiple types of clients.
What you'll learn
It seems to me that the longer I stay in this business, the shorter the time between new technology releases. There's enough stuff out there in the development world to keep us both excited and overwhelmed. Learning new tech has become easier with the all the information available to us, especially in the way of these Pluralsight courses. But learning how to use a technology and learning how to properly implement it or integrate it with other technologies can be a whole different ballgame. Service-Oriented systems have become mainstream, but designing applications in a service-oriented fashion require a different look on the components that make it up as well as technologies to support the architecture. This course will bring it all together for you by building on knowledge you have on technologies like WCF, Web API, ASP.NET MVC, WPF, and AngularJS and going from A to Z on the architecture, design, development, and testing of a complete system. And this system will not only use a multitude of technologies in the middle-tier, but will also be consumed by different UI clients on the web and the desktop. Know how to write services in WCF and Web API, but want to see some real-world implementation from both MVC and WPF clients, then this course is for you. Want to know how to implement dependency injection from the middle tier to the various UIs, then this course is for you. Want to write decoupled, testable software, then this course is for you. The final set of applications can be used as a skeleton and framework for any SOA-based system you write going forward, and the techniques used in its development will become part of your development arsenal forever.
Table of contents
- Entity design and structure 2m
- Initial setup for business and client entities 2m
- Entities as data contracts 2m
- data contract equivalency 5m
- Business entity base class and identification interface 3m
- Business entity account ownership 4m
- Property change notification and dirty tracking: Intro 4m
- Setting up the client entity base class 3m
- Adding dirty-tracking functionality 2m
- Event declaration to avoid duplicate subscribers 5m
- Compile-time safe property change notification 2m
- Object-graph walking and dirty states 5m
- Refactoring object walk for reusability 6m
- Helpers for collecting properties 2m
- The rest of the client entities 3m
- Validation: Intro 2m
- Implementing validation 7m
- Unit testing: Intro 3m
- Unit testing core functionality 3m
- The rest of the tests and conclusion 3m
- Intro and EF code-first description 4m
- Creating the DB-Context 3m
- DB-Context properties 3m
- Setting up the ORM 5m
- Adding ORM rules 6m
- Overview of a data repository 4m
- Core base classes and interfaces 5m
- CRUD implementation in the Account Repository 6m
- Custom methods and repository interface with DI setup 5m
- The rest of the data repositories 3m
- Setting up a test client class to use DI 7m
- Repository usage and mocking 6m
- Intro to the data repository factory 2m
- The data repository factory abstraction 2m
- The data repository factory 3m
- The repository factory test client class 3m
- Repository factory usage and mocking 4m
- Custom DTOs 5m
- Recap and conclusion 1m
- Intro and highlights 1m
- Service contracts and services overview 6m
- Inventory service contract 6m
- Setting up the inventory service 5m
- Fully implementing the first operation 6m
- Implementing a more complex operation 3m
- Setting service characteristics 4m
- The manager base class 5m
- Adding the fault contracts to the operation contracts 3m
- Adding CRUD operations and transactions 6m
- Adding a multi-data and behavior operation 4m
- Intro to business engines 1m
- Setting up a business engine 4m
- Setting up the business engine for DI 6m
- Using the business engine from a service 2m
- Recap and summary 1m
- Intro and highlights 1m
- Security intro 3m
- Adding security to a service 6m
- User-data authorization intro 3m
- Setting up the rental service 4m
- Implementing the GetRentalHistory operation 3m
- Retrieving call user from SOAP header 5m
- Setting up for retrieval of authorization account 4m
- Adding the authorization check 7m
- Finishing the rental service 4m
- Finishing the car rental engine 3m
- Wrapping up with the account manager 3m
- Testing the business engine 7m
- Testing the manager 4m
- Adding needed credentials for the manager test 3m
- Recap and summary 1m
- Intro and highlights 1m
- Service hosting intro 2m
- Simple host setup of inventory service 3m
- Configuring the inventory service host 4m
- Reporting hosting to console 3m
- Configuring the other services 1m
- Binding configurations 4m
- Configuring the test client 3m
- Testing service connectivity 5m
- Unattended process intro 3m
- Writing the unattended process 6m
- Adding security credentials for the process 2m
- Bootstrapping MEF and test run 2m
- Other hosting options 4m
- Recap and summary 2m
- Intro and highlights 1m
- Client contracts intro 2m
- Setting up the client-side contracts 5m
- Writing the basic client proxies 5m
- Making the client proxies DI-aware 2m
- Soap header intro 2m
- Adding user name to the soap header in a proxy class 4m
- Refactoring to a proxy base class 1m
- Service factory intro 4m
- Writing the service factory 3m
- Setting up the client bootstrapper 4m
- Proxy obtainment unit tests 4m
- Service connection unit tests 2m
- Recap and summary 2m
- Intro and highlights 3m
- Infrastructure description 3m
- MEF bootstrapping and the dependency resolver 4m
- Describing the layout view 6m
- The App.js file and angular module definitions 8m
- Top-Bar view description 2m
- Angular intro 6m
- The security adapter class 3m
- The account controller setup 6m
- The Login model and action 4m
- Setting up the Login view and JS model 5m
- The rest of the Login view 10m
- Setting up and checking validation rules 6m
- Reporting validation rules 4m
- Intro and highlights 5m
- Setting up an API controller 8m
- Finishing up the login viewmodel function 7m
- Completing the login REST API call 6m
- Testing the login section of the site 4m
- Setting up the registration models and initial view 6m
- Creating the Angular module and parent viewmodel 7m
- Setting up the parent registration view 4m
- Creating all the registration template views 6m
- Sub-viewmodels and Angular routing 6m
- Playing nice with MVC routing 5m
- Adding validation rules to the models 5m
- Processing registration step 1 5m
- Adding the server-side validation for registration step 1 6m
- Registration steps 2 and 3 validation and proceed 4m
- Finish the confirmation viewmodel 4m
- Final registration on the server 4m
- Run-through test 3m
- Intro and highlights 1m
- Reviewing the rest of this site 3m
- Setting up the controller and view 4m
- Setting up the model, Angular module, and viewmodel 4m
- Setting up Angular routing 4m
- Template view and viewmodel setup 1m
- Starting the Reserve-a-car template 5m
- Adding calendar buttons to textboxes 3m
- Finishing up the calendar pickers 5m
- Testing the date pickers 2m
- Finishing the Reserve-a-car viewmodel 4m
- Setting up the Car-list viewmodel 5m
- Setting up the reservation controller and action 4m
- Controller proxy disposability pattern 4m
- Starting the Car-list view 5m
- Adding viewmodel functions 1m
- Controller action for car reservation 3m
- Finishing the Car-list viewmodel 2m
- Fixing the view for multiple modes 2m
- Testing the site for car reservations 1m
- User data authorization 2m
- Unit testing MVC controllers 3m
- Unit testing API controllers 3m
- Recap and summary 4m
- Intro and highlights 1m
- Application infrastructure intro 3m
- Basic structure - main view with app config and MEF bootstrapping 5m
- View hierarchy description 2m
- Creating the first view and setting up its base 3m
- Creating the skeleton for the other three views 1m
- Creating the skeleton for the four viewmodels 5m
- Completing the main viewmodel 4m
- Setting up the tab panel 5m
- Setting up the data templates 3m
- Upcoming problems to be solved 4m
- Intro and highlights 2m
- Demonstrating view and viewmodel initialization points 3m
- Solving deterministic viewmodel initialization 5m
- Setting up the cars observable 3m
- Obtaining service proxy and getting car list 3m
- Setting up more XAML and running the app so far 3m
- Writing the first viewmodel command 3m
- Writing and testing the edit command 3m
- Setting up the edit-car viewmodel 3m
- Calling upon the edit-car viewmodel from its parent 2m
- Validating and saving a car 3m
- Letting the parent viewmodel know about the update 2m
- Finishing up the edit-car viewmodel with cancelation 1m
- Updating the parent viewmodel with updated car 4m
- Updating the XAML to account for car editing 3m
- Test run showing the empty edit panel 1m
- The edit-car view 2m
- Testing car-editing 1m
- Delete, exception handling, raising events 3m
- Wiring and unwiring viewmodel events 5m
- Unit testing the viewmodel 7m
- Recap and summary 3m