Module 1:
Object orineted Programing ; Managed Language & C#
What is Object Oriented Programming
To be object oriented, a language is designed around the concept of objects. that are something, have certain properties and exhibit certain behaviors. This means the language generally includes support for: —
Encapsulation — Inheritance — Polymorphism
What is Managed Language
Managed languages depend on services provided by a runtime environment.
• C# is one of many languages that compile into managed code.
• Managed code is executed by the Common Language Runtime (CLR).
• The CLR provides features such as: — Automatic memory management — Exception Handling — Standard Types — Security
There are 3 categories of types:
— Value types : these directly store values
— Reference types:or objects, store a reference to data
— Pointer types:only available in unsafe code
What are Lambda Expressions
- An enhancement of anonymous methods
- • An unnamed method written inline
- • An alternative to a delegate
- • At compile time a lambda expression becomes either: — An instance of a delegate — Or an expression tree
- • Expressions are validated at compile time, but evaluated at run time.
- • Dynamic expression trees are supported
Module 2:
Constructing Complex Types, Object Interfaces and Inheritance and Generics
Classes and Structs
• A class or struct defines the template for an object.
- A class represents a reference type
- A struct represents a value type
- Reference and value imply memory strategies
When to Use Structs :
Use structs if:
— instances of the type are small
— the struct is commonly embedded in another type
— the struct logically represent a single value
— the values don’t change (immutable)
— It is rarely “boxed” (see later)
• Note: structs can have performance benefits in computational intensive applications
Note : Useful : 2 classes inside same namespace
Inheritance
— Classes can optionally be declared as:
- static — can never be instantiated
- abstract — can never be instantiated; it is an incomplete class
- sealed — all classes can be inherited unless marked as sealed
— Virtual Methods
- Virtual methods have implementations
- They can be overridden in derived class.
What are Virtual Functions
Virtual Function is a function in base class, which is overrided in the derived class, and which tells the compiler to perform Late Binding on this function.
Virtual
Keyword is used to make a member function of the base class Virtual.
Example :
Module 3:
Controlling Programmatic Flow & Manipulating Types and Strings
Module 4:
Code Reflection and Information ,Working with Garbage Collection
What is Reflection
Reflection inspects type metadata at runtime
The type metadata contains information such as:
- The type Name
- The containing Assembly
- Constructors
- Properties
- Methds
- Attributes
- This data can be used to create instances, access values and execute methods dynamically at runtime
What is Garbage Collection
Garbage collection is automatic memory management.
• De-referenced objects (orphans) are not collected immediately but periodically.
- factors influence Garbage Collection frequency —
- Not all orphans are collected at the same time
Garbage Collection is computationally expensive
Memory Leaks
- Despite having automatic memory management, it is still possible to create managed memory leaks.
- • Objects that fall out of scope may be referenced by objects in scope, keeping them alive.
- • Events can be a common source of memory leaks:Events can hold references to objects ,Solution! Unsubscribe from events proactively
- • Weak references can be used to avoid some memory leak scenarios
Weak Reference
- Weak references create a reference that the Garbage Collector ignores.
- • The Garbage Collector will assume an object is eligible for collection if it is only referred to by weak references.
- • To hold an object with only weak references, create a local variable referring to the weak reference value.
— This prevents collection until the local variable is out of scope.
Module 5:
Type and Value Validation , Encryption Technique
What is Data Validation
- Data validation is testing values introduced to an app (via a service, file, or data entry) against expected values and ranges.
- Prevent overflow
- Prevent incorrect results
- Prevent undesirable side-effects
- Provide guidance to systems or users
- Prevent security intrusions
The compiler validates that the object type is correct — It does not validate the object’s value
- Debug / Trace Assert() methods alert the developer or the user
- Raise an Exception:
— System.ArgumentException
— System.ArgumentOutofRangeException
— System.ArgumentNullException
Data Contracts
- “Design by Contract” from the Eiffel programming language
- Code contracts are a unified system that can replace all other approaches to data validation
- Code contracts have — Preconditions (Requires) — Post-conditions (Ensures)
- A contract assertion can be “evaluated” statically
- A contract assertion can be “enforced” at runtime
What is Encryption
- An encryption algorithm makes data unreadable to any person or system until the associated decryption algorithm is applied.
— Encryption does not hide data; it makes it unreadable
— Encryption is not the same as compression
- Types of encryption
— File Encryption
— Windows Data Protection
— Hashing, used for signing and validating
— Symmetric and Asymmetric
Simple Encryption Mehtods
- File Encryption
— Encrypts and decrypts files
— Fast to encrypt/decrypt
— Based on user credentials
- Windows Data Protection
— Encrypts and decrypts byte[]
— Fast to encrypt/decrypt
— Based on user credentials
Hashing
One-way encryption
• Common algorithms:
— MD5 (generates a 16 character hash than can be stored in a Guid)
— SHA (SHA1, SHA256, SHA384, SHA512)
Fast (depending on chosen algorithm)
- Used for storing passwords, comparing files, data corruption/tamper checking — Use SHA256 or greater for passwords or other sensitive data
Symmetric Encryption
- One key is used for both encryption and decryption
- Faster than asymmetric encryption
• Cryptography namespace includes five symmetric algorithms:
— Aes (recommended)
— DES
— RC2
— Rijndael
— TripleDES
Asymmetric (or Public Key) Encryption
- One key is used for encryption and another key for decryption
- Commonly used for digital signatures
- Cryptography namespace includes four asymmetric algorithms:
— DSA
— ECDiffieHellman
— ECDsa
— RSA (most popular)
More Notes from NSM Subject : http://telegra.ph/Network-Security--Management-Notes-05-28-2
Code Snippet For Encryption in C# :https://gist.github.com/harshityadav95/8f332c8889d93823e79435b110078a0c
Module 6:
Splitting Assemblies and Projects , Diagnostics and Instrumentation
What is an assembly?
- An assembly is a container for a set of resources and types.
- Assemblies can be referenced by other assemblies.
- Some assemblies are specific to certain technologies.
- In Visual Studio, an assembly equates to a Project
What is Instrumentation?
- Instrumentation is code that reports performance information.
- Telemetry aggregates instrumentation for analysis.
- Diagnostics or Analysis is the use a telemetry to track causes of errors or identify trends.
What is a Performance Counter?
- Performance Counter is a sampling for a single operation
- You write to a counter by incrementing or decrementing
— Trending is accomplished using tooling
• You must have permission
• Counters are typically categorized
Module 7:
Interacting with File System, Working With REST Services
Why read or write to the file system?
- Show existing data to user
- Integrate user-provided data
- Serialize objects out of memory
- Persist data across sessions
- Determine environment configuration
How do we write to files?
- This is simplified with Framework methods; open / shut — File.WriteAllText / ReadAllText
- Open for reading to keep open and keep writing
- Open as stream for large payloads and realtime processing
How do we find files?
- Get Windows folder with Environment Special Folders
- Get the Current folder with File.IO Get Current Directory()
- Use Isolated Storage dedicated to the current application
- Anything Else. Caveat: Windows Store App development
How do we modify files?
- Iterate through files using GetFiles()
- Rename / Move with System.IO methods
- Get File Info with System.UI.FileInf
What are Web Services?
- Web Services encapsulate implementation
- Web Services expose to disparate system
- Web Services allow client systems to communicate servers — Web protocols (HTTP, GET, POST, etc)
- Web Services are important to Service Oriented Architecture
— With and without metadata
— Loose coupling
What is SOAP?
- SOAP is a standard for returning structured data from a Web Service as XML
— Envelope
— — — Header
— — —Bod
What is asynchronous programming ?
- Asynchronous maximizes resources on multicore systems, by allowing units of work to be separated and completed.
- Asynchronous programming frees up the calling system, especially a user interface, as to not wait for long operations.
What is the C# ASYNC/AWAIT keywords
- Async and await simplify asynchronous programming.
- Async and await allow asynchronous code to resemble the structure of synchronous code.
- Methods marked with async may return Task<T>.
- The async keyword instructs the compiler to allow await.
- The await keyword instructs the method to return.
- The await keyword instructs the compiler to resume execution within the same context after the operation is complete
Module 8:
Accessing a Database , Using LINQ
(More Notes on C# to JSON)
What databases can we use?
- Windows Azure SQL Database
- Local Network SQL Server
- Local Machine SQL Server Express
- Application SQL LocalDB
- Application SQL CE
- Other providers: Oracle, SqLite, MySql, DB2, Jet
— ADO.Net implements a provider model enabling many (if not all) databases. Database implementation is abstracted.
Types of access to a database
- Low-level — Manual queries — DbDataReader
- Object Relationship Models (ORM)
— Conceptual Modelling
— Entity Framework, Nhibernate, CSLA, Dapper
What is Language Integrated Query
- LINQ is a general-purpose Query Language
- LINQ is an integrated part of the .Net languages
- LINQ is Type Safe and has Intellisense
- LINQ includes operators like Traversal, Filter, and Projection
- LINQ can be optimized with compiler versions
- LINQ can be invoked using its Query Syntax
- LINQ can be invoked using its Method Syntax
Reference :
No comments:
Post a Comment