ABCDE

Address, Binding and Contract Defines Endpoint

Address

Where is the service hosted, e.g., URL, MQ address, etc.

Binding

How is the service exposed, e.g., http, https, tcp, etc.

  • basicHttpBinding
  • wsHttpBinding
  • netNamedPipeBinding
  • netTcpBinding
  • netPeerTcpBinding
  • netmsmqBinding
  • webHttpBinding (for REST services)

It defines the following elements:

  • Transaction flow
  • Reliability
  • Security – authentication, authorization, etc.
  • Encoding – text, binary, MTOM
  • Transport – TCP, MQ, Named Pipes, etc.

Contract

What all does the service expose, e.g., what methods and operations does it expose. Data and message contracts are structural contracts, while service, operation and fault contracts are behavioral contracts

Data Contract

exposes the data types and objects that the service uses

Message Contract

exposes the structure of the message sent to and received from the service

Service Contract

exposes what methods are exposed

Operation Contract

exposes the signature of the method. Overloading is not allowed, and if we want to implement overloading, two different method names have to be used

Fault Contract

exposes exception handling in the service

References

Advertisements

REST -> Representational State Transfer

Four characteristics:

  1. All data and resources are accessed through a URL
  2. CRUD (Create [put], Read [get], Update [post], Delete [delete]) happens through simple http requests
  3. Service is stateless, and all requests are statefull (i.e., they carry full context in every request)
  4. Representation is decoupled from the resources, and the service can be consumed equally by variety of formats, XML, Json, PDF, etc.

References

My first time experience with Angular JS

  • Install Node.js on the machine – this is the Javascript runtime from Google
    • Just run the installer on my windows machine
  • Set up Bower – this is the package manager, and requires Node.js
    • Just open command prompt, and run “npm install -g bower”
    • It took about 5 mins of just a cursor “spinning” in command prompt, but it then installed bower
  • Installing Angular JS using bower
    • Open command prompt and run “bower install angular”
    • It took about 3 mins before it completed
  • Install Karma, test runner, by running command prompt “npm install karma”
  • Install Connect, a web server, by running command prompt “npm install connect”

OR

  • Install Visual Studio 2013 Community Edition
  • Download Angular straight from the source
  • Open a new HTML file within VS2013, and rock on!!!

References

  1. http://www.hongkiat.com/blog/angularjs-tools/
  2. http://www.hongkiat.com/blog/angularjs-tutorials-screencast/
  3. http://www.hongkiat.com/blog/tag/angularjs/
  4. http://www.amazon.com/Pro-AngularJS-Experts-Voice-Development/dp/1430264489/ref=sr_1_1?ie=UTF8&qid=1435635164&sr=8-1&keywords=pro+angularjs

It seems that suddenly Full-stack javascript is the new in-thing, offering the convenience of using the same language for coding the front-end, middle-layer, and the back-end.

There are quite a few design studios assisting in full-stack javascript development:

  1. http://www.wakanda.org/
    1. UI JS framework supported
    2. Backend support: WakandaDB (proprietary relational DB)
  2. https://www.meteor.com/
    1. UI JS framework supported: AngularJS, ReactJS, Blaze (proprietary)
    2. Backend support: MongoDB using Livequery (proprietary driver)
  3. To come…

References

http://www.quora.com/What-is-the-best-full-stack-web-framework-with-scaffolding-MVC-ORM-etc-based-on-Node-js-server-side-JavaScript

Excellent article explaining the difference and workings – http://joel.inpointform.net/software-development/explanation-of-stack-heap-and-recursion-causing-stack-overflow/

Similarities

  • All three architectures are designed to separate view from model. Model handles domain and business logic, view handles presentation
  • Controller/Presenter/ViewModel handle communication with Model and View
  • Model always communicates by firing events, so display is not waiting for a response

Differences

  • Presenter and ViewModel have 2-way communication with View and Model. Controller listens to View and updates Model
  • In MVC, Model communicates with View directly through events. In MVVM and MVP, model communicates with View through Presenter or ViewModel
  • MVP has single presenter for each view. MVVM has a single VieModel for each view also, but goes a step further and has a tight coupling between the two, so the fields, etc would align. MVC has multiple views for each controller, and the controller decides which view will show up next, and also manipulates the model.
  • Presenter updates the view directly by calling the fields to be updated. ViewModel updates the view by using an observer pattern.

Examples

  • MVP – WinForms
  • MVC – ASP.Net MVC site
  • MVVM – WPF

References

https://www.udacity.com/

http://ocw.mit.edu/index.htm

http://www.html5rocks.com/en/

https://www.khanacademy.org/cs

http://www.codecademy.com/

https://www.coursera.org/

http://thecodeplayer.com/

https://developer.mozilla.org/en-US/

https://www.tynker.com

http://www.kodable.com