Wednesday, November 23, 2011

Code Camp - USC Campus October 2011



Oct 15 - 8:45 AM
Room: SLH-102
Notes:
Oct 15 - 10:00 AM
Room: SLH-102
Notes:
SOLID principles
Single Responsibility Principle:
"There should never be more than one reason for a class to change." — Robert Martin, SRP paper linked from The Principles of OOD
Open Closed Principle
Liskov Substitution Principle
Interface Segregation Principle
Dependency Inversion Principle

Oct 15 - 12:15 PM
Room: SLH-200
Notes:
HTML5 is the lingua franca on World Wide Web
Cross browser testing:
HTML5 Example sites:
Google body browser
Suggested Blogs:
Oct 15 - 1:30 PM

Room: SLH-200
Notes:
CSS3:
@media: media query is very powerful feature of CSS3, it queries screen and view from browser.
example: @media: screen and max : after
How to make your web application/site to act like a native application on mobile devices:
1- Add special size images to be used in "Add to home screen" feature of iPhone and etc ...
2- Make all links compatible to app style
3- Use native shell if needed
Oct 15 - 2:45 PM
Room: SLH-200
Notes:
- Use Visual Studio Mobile project MVC4
- Design choices:
1- One size fits all, this is MVC4.0 out of the box
2- Single page mobile app
- JQuery mobile site http://jquerymobile.com/ has great amount of examples and documentations
- Testing Tools:
The ones provided by hardware manufacturer (IOS,Android and Windows)
- Visual studio projects new project on MVC 4.0:
1- Internet Application: One size fit all application
2- Mobile application: this is for one page mobile app

Oct 15 - 4:00 PM
Room: ZHS-163
Notes:

- MVC 4.0 Developer preview is available now.
- Modernizer.js is part of MVC 4.0
- Adaptive rendering
- Targeting mobile, by just creating a file with .mobile extension. layout.mobile.cshtml
- Custom Modes

Thursday, April 14, 2011

How to configure Windows Server 2008 to host WCF services in IIS 7/WAS

Configuring Windows 2008 server for hosting WCF services in IIS7.0 and WAS


This document is focused on hosting a WCF service on Windows 2008 service Windows Activation Server (WAS). This service is utilizing tcp net as binding protocol.


Below are the steps:
  • Enable Network Discovery
  • Create a folder for your service code in root (c:\ MyService)
  • Add Roles and features:
    1. Add Web Service Role (IIS) to server, it will require to add WAS feature. (Figure 1)
    2. Add Application Server Role, this will require to install WAS feature. (Figure 2)
     Figure 1)  Adding Application/Web Server Roles 
     Figure 2) Adding Application Server Role
    Figure 3) Adding WAS Application Server Roles
    Figure 4) Choosing Authentication Certificate for SSL Encryption

  • Select all items under Security
  • Go to Features Expand .NET framework 4.0 Features, check WCF Activation box.(done in previous section)
  • Add Network Load Balancing Feature (See Figure 5) There will be another posting to cover setting up NLB.


Figure 5) NLB installation

    1. Register .NET Framework (use Framework64 folder if you are on a  64 bit machine)
      1. "%WINDIR%\Microsoft.Net\Framework\v4.0.30319\aspnet_regiis" –i –enable
    2. Register WCF   (use Framework64 folder if you are on a  64 bit machine)
      1.  "%WINDIR%\Microsoft.Net\Framework\v4.0.30319\ServiceModelReg.exe" -r


    1. Create Application/virtual directory
    2. Set additional virtual directory properties
    3. Set security:
    4. Add your designated service account myServiceAccount  to below User Groups
      1. Performance Log Users
      2. IIS_IUSRS



       Option 3: Enable a port range in advance. Start the Windows Firewall Control Panel applet
 and enable ports 80, 443, 8000-8003 and 9000, which are used by the samples. You can find more detailed instructions in the following procedure. This option is less secure than the others because it allows any program to use   these ports, not just the samples
    1. Chose option 3 from above link.       
    2. Create new Inbound, Outbound rules (named WCF-WF-TCP-Ports)
  • Edit site bindings: Run below commands

    Command1: %windir%\system32\inetsrv\appcmd.exe set site "Default Web Site" -+bindings.[protocol='net.tcp',bindingInformation='808:*']


                 Command2:%windir%\system32\inetsrv\appcmd.exe set app "Default Web      Site/yourServiceName" /enabledProtocols:http,net.tcp

Use a Meta Data Explorer to explore addresses:
Example client URI for MyService:
Client URI: net.tcp://servername.domain/MyService/MyService.svc
Meta Data URI: net.tcp://localhost/MyService/MyService.svc/mex

Related Links:
  1. http://msdn.microsoft.com/en-us/library/ms752218.aspx
  2. http://msdn.microsoft.com/en-us/library/ms751530.aspx
  3. http://msdn.microsoft.com/en-us/library/ms733768.aspx
  4. http://msdn.microsoft.com/en-us/library/ms751432.aspx
  5. http://msdn.microsoft.com/en-us/library/ms751527.aspx

Thursday, March 3, 2011

Patterns and Practices Symposium - Summary

It's been a while since I've blogged and it's been a while since I've been to this event but still I wanted to blog about it. Back in October 2010 I attended my first Patterns& Practices Symposium (PnP) in Redmond, Seattle. Link to: Patterns & Practices Symposium 2010
It was one of the best tech gatherings that I’ve ever attended and I have been to PDC, DevConnection and TechEd! Great crowd of attendees as well as awesome speakers and sessions
Anyway, below is a summary/abstract of the sessions and concepts that were discussed.


Sessions

Enterprise Library Extending
Parallel Programming
Cloud Computing
Windows Phone 7
OData – sesame data browser

Programming principles/Concepts

- Fluent Interface
- Inversion of Control
- DI – Dependency Injection (Unity, Spring or Castle Windsor)
- AOP – logging, exception handling
- CQRS - Command/Query Responsibility Separation
- M-V-VM
- Object Mother

SDLC Processes

Agile + TDD:

- Incremental improvement is the key to clean the old code and avoid massive redesign.
- Boy Scout rule, leave the camp cleaner than when you got it!
- In every check-in improve slightly.
- The only way to go fast is the go well (write good code pays off)
- Code Clean!
- Suite of tests gives you confidence to make changes improve/re-factored.
- Tests are used as documentation.
- Test needs to be designed well, decoupled.
- Manual test is expensive it grows.


TDD+ Validation+ Dependency injection


TDD Side Notes

TDD is the key for high quality code, it guarantees less bugs, it takes a little longer in beginning iterations but it pays off by the end of the project. It enforces developers (junior and senior) to follow the guaranteed path of TDD for quality code.

TDD requires development tool like re-sharper!

Continuous Integration Process:

CI Builds + Runs Test + Runs Code Coverage (95% for BLL, 85% for UI) + Code Analysis

Patterns of Healthy Teams using Visual Studio and TFS

- Turn on Code analysis at CI level, create your custom rule set and store it in TFS to be accessible
- Peer reviews catch about 60% of defects (Barry Boehm)

Options:

         1- Peer review
         2- Pair program
        3- Do micro-reviews, Make check-in notes required, encourages peers to


- Build Notification


- Layer Diagram

         - Document code for new developers
         - Validate Architecture
         - Generate Dependencies
        - Set Validation architecture to true at Project properties, which will generate error at CI

Flicker deploys code every 30 minutes
Gmail pushes new features are deployed in 2 days!

Tools

- Visual Studio Layer Diagram
- Visual Studio scrum templates – TFS installation required
- Instant Feature Builder VSIX
- Re-sharper
- Visual studio productivity tool

Summary

Focus of the conference was Agile + TDD + V-M-VM + Repository + Dependency Injection in Silverlight and WPF.