Web Service vs WCF Service

WCF is a service layer that allows you to build applications that can communicate using a variety of communication mechanisms. With it, you can communicate using Peer to Peer, Named Pipes, Web Services and so on. You can’t compare them because WCF is a framework for building interoperable applications. If you like, you can think... » read more

Service Oriented Architecture‎ (SOA)

Service-oriented architecture (SOA) is a style of software design where services are provided to the other components by application components, through a communication protocol over a network. The basic principles of service-oriented architecture are independent of vendors, products and technologies. A service is a discrete unit of functionality that can be accessed remotely and acted upon... » read more

Inversion of Control (IoC)

In software engineering, inversion of control (IoC) is a programming principle. IoC inverts the flow control as compared to traditional control flow. In IoC, custom-written portions of a computer program receive the flow of control from a generic framework. A software architecture with this design inverts control as compared to traditional procedural programming: in traditional programming, the custom code that expresses the purpose of the program calls into reusable libraries... » read more

Test Driven Development (TDD)

Test-driven development (TDD) is a software development process that relies on the repetition of a very short development cycle: requirements are turned into very specific test cases, then the software is improved to pass the new tests, only. This is opposed to software development that allows software to be added that is not proven to meet requirements.

Model–View–ViewModel (MVVM)

View Model – Data View – XAML, bind to data-model Model – Business Logic MVVM facilitates a separation of development of the graphical user interface from development of the business logic or back-end logic (the data model) The Model View ViewModel (MVVM) is an architectural pattern used in software engineering that originated from Microsoft which is specialized in the Presentation... » read more

Domain Driven Design

Domain-driven design (DDD) is an approach to software development for complex needs by connecting the implementation to an evolving model. The premise of domain-driven design is the following: placing the project’s primary focus on the core domain and domain logic; basing complex designs on a model of the domain; initiating a creative collaboration between technical and domain experts to iteratively refine a conceptual... » read more

Repository Pattern

Provides an abstraction of data, so that your application can work with a simple abstraction that has an interface approximating that of a collection. Adding, removing, updating, and selecting items from this collection is done through a series of straightforward methods, without the need to deal with database. Allows your applications to perform CRUD-like operations.... » read more

Software Design Patterns

Design patterns are well-tested solutions to common problems in software development. The primary goal of any designing pattern is to help you structure your code so it is flexible and resilient. When it comes to your designs, you have to first understand a pattern and then adapt it to your own code. They also allow... » read more

Singleton Pattern

The singleton pattern is a software design pattern that restricts the instantiation of a class to one “single” instance. This is useful when exactly one object is needed to coordinate actions across the system. In C#, you use the “static” declaration. The singleton design pattern solves problems like:[5] How can it be ensured that a... » read more

MVC Design Pattern

An architectural pattern commonly used for developing user interfaces that divides an application into three interconnected parts. This is done to separate internal representations of information from the ways information is presented to and accepted from the user. The MVC design pattern decouples these major components allowing for efficient code reuse and parallel development. A variation is the... » read more