Procedural Epistemology Thinker RSS 2.0
 Friday, January 11, 2008

I feel that I would have to break down each Technology and pit them against each other, so here is how I will begin.

 

ASP.NET/C# VS Zend/PHP

 

1.       ASP.NET has the .NET Framework while PHP has nothing like it.

a.       .NET Framework has Two main parts:

                                                               i.      Common Language Runtime(CLR): The CLR can run code written in any language that’s adapted to .NET (VB.NET, J# and C#) it can run on any operating system that has a version of the CLR. Like Java that doesn’t have to be written in Java.

                                                             ii.      A hierarchical set of class libraries (Think PHP functions + the PEAR libraries and it extends them a lot, and have them organized in a nicer hierarchical structure). Included in those class libraries are ASP.NET (templating system), ADO.NET (a data access system), Windows Forms (classes for building windows apps), XML/XSLT frameworks (Code Generation), WCF (Built-in Web Services), Expression Framework Classes (Designer Framework), WF (Workflow Framework)

b.      ASP.NET uses a templating system on steroids called Web Forms which uses its runat=”server” attribute which gives you server side controls. Which run on the server giving you many more events, more possibility and more security. There is DaDaBIK but it doesn’t come anywhere close.

 

Performance Tests

 

c.       This person used the .NET Framework in C# Mono, but they are the same.
http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=csharp&lang2=php

  

2.       Speed

a.       .NET languages are static typed meaning they are compiled into assemblies making them 2/3 time faster than PHP, whose applications are interpreted. To achieve the same effect with PHP, Zend and PHP accelerator must be installed on the server. I’ve done this and ran performance tests and ASP.NET is still faster by a large margin. Also OOP is much faster in ASP.NET than it is in PHP.

b.      For Performance Speeds on C#: http://dada.perl.it/shootout/csharp.html

c.       For PHP: http://dada.perl.it/shootout/php.html

d.       

 

3.       More Language Support

a.       ASP.NET is written using "real" OO (Object Oriented) programming languages of your choice. PHP is just a simple scripting language in comparison to .NET languages like C++, VB.NET or C#.

 

4.       Much better Development Environment

a.       Visual Studio has multiple Integrated Development Environements (IDE’s) for the different roles you play in development (Database Admin, Tester, Developer, Project Manager, Business Analyst). Just a few of the things you can do:

                                                               i.      Automatically create reports and diagrams from your database

                                                             ii.      Debug the code line by line, while at the same time seeing what happens in the application as well as typing in a command window a variable and seeing what the results of that variable is, or calling a function in the command window.

                                                            iii.      Assign temporary value to variables in the middle of execution, in order to test out different scenarios.

                                                           iv.      Hover the cursor over variables in your code while debugging, to see what value they have “right now”

5.       It’s Part of .NET

a.       ASP.NET is a part of .NET, and that benefit is too large to simply ignore. If you know how to write ASP.NET applications, you know how to write ordinary applications too. Even windows apps, if you read up a little on the Windows Forms classes (as opposed to the Web Forms). PHP has PHP-GTK, but it's currently very immature compared to .NET.

 

6.       Reusable Codebase from Performance Pro 2

a.       If there is anything we want to use from Performance Pro 2 that we don’t really need to change, we have only to add the .asp file or files wrap it up in a COM Component and ASP.NET can access it and use it as if the code was already written. We can’t wrap the original codebase in PHP without rewriting it.

 

7.       At this point it’s cheaper

a.       We have the licenses for all the server software, the hardware for at least half of everything we need as well as the developers of strong skill sets already in house. We spend a lot of money already towards consultants for .NET and put a lot of effort into designing Performance Pro 3 for ASP.NET. If we go the other route we need to hire more experts, other developers, new hardware, new software. Most companies move from MySQL to Oracle as they grow and Oracle is very expensive.

 

Most PHP developers end up just justifying themselves by stating well I’m capable of building this feature or that feature. It’s a programming language of course you can build it. They also state there is this and that company that does it. But that costs more money, while these things are built into .NET. The difference is in productivity, we move to market faster, and the application performs better using the right technologies.

 

Here’s another link to Benefits of .NET Framework that I’m not even listing:

 

http://www.tometasoftware.com/benefits_of_net.asp

 

 

MSSQL VS MySQL (7 Reasons to Use SQL Server)

 

1.       Full Server Side Integration

a.       Full server side integration with the .NET Framework (LINQ to SQL , LINQ to XML)

2.       SQL Server has much much more advanced features over MySQL

a.       SQL Server just flat out has more advanced features then MySQL. SQL Server is a Sybased-derived Engine and Microsoft has just focused on using and expanding that infrastructure. MySQL is an open storage engine which uses InnoDb, BerkleyDB, MyISAM and Heap. Which they have struggled with design because of these multiple choices.

3.       XML is a native type within SQL Server

a.       Allows a DBA to modify an XML doc within the DBMS environment, query the document and validate it against XML schemas without having to DB Program it.

4.       Cheaper

a.       We are already have a SQL Server 2005 Enterprise Edition x86. Bought and purchased. MySQL AB would us more money.

 

5.       Security

a.       SQL Server 2005 has been certified as C-2 compliant and fully supports security at the column level. It also supports native encryption and obfuscat’s(intentionally, very hard to read and understand) the DBA from writing user-defined functions using column encryption APIs. A DBA also has the choice of specifying his own user-defined security functions through the encryption facility implemented in the .NET Framework

b.       MySQL has basic security at the table level and has no such certifications.

 

6.       Recovery

a.       SQL Server is more failsafe and less prone to data corruption. They have robust  checkpoint mechanisms, enhanced data protection, rapid restorations, Mirrored backups and partial backups instead of sorting through entire full backups.

b.      MySQL falls short with a default MyISAM mechanism. The UPS assumes uninterrupted data, and in the event of an unexpected shutdown your data can be lost and the data store corrupted.

7.       Most move to SQL Server or Oracle anyway

a.       Through my experience most move away from MySQL anyway because it just doesn’t meet the demands of today’s very rich artifacts of data. Such as (Media, Pictures, Audio, XML etc)

 

 

This would be considered a persuasive argument for those of you that take the critical thinking or english classes that teach it. ^_^

Friday, January 11, 2008 4:41:22 PM (GMT Standard Time, UTC+00:00)  #    Comments [1] - Trackback
Architecture | Business | NET 3.5 | Technical | Article
 Wednesday, January 02, 2008

The Microsoft Patterns & Practices team in May 2007 has released the Enterprise Library 3.1. The Enterprise Library is a collection of application blocks. These are reusable software components designed to help a developer with the common development challenges you face between projects you work on.  This release of the Enterprise Library includes two new application blocks, a software factory for creating application blocks and providers, and other new features and enhancements.

Benefits

The Application blocks help address the common tasks we do every project. Caching, Validation, Data Access, Factories, etc. Microsoft has encapsulated these best practices for .NET applications into the Enterprise Library so that they can be added to your projects quickly and easily. 

Goals

The goals of the Enterprise Library are the following:

  • Consistency. All Enterprise Library application blocks feature consistent design patterns and implementation approaches.
  • Extensibility. All application blocks include defined extensibility points that allow developers to customize the behavior of the application blocks by adding their own code.
  • Ease of use. Enterprise Library offers numerous usability improvements, including a graphical configuration tool, a simpler installation procedure, and clearer and more complete documentation and samples.
  • Integration. Enterprise Library application blocks are designed to work well together and are tested to make sure that they do. It is also possible to use the application blocks individually.

I'll update this with more as I learn more.

You can find it here:

http://www.codeplex.com/entlib

Wednesday, January 02, 2008 7:18:39 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] - Trackback
Architecture
 Tuesday, December 18, 2007
I’ve used a lot of open source projects to get my development done. Just recently I’ve moved into the Microsoft world products and I have to say that I am very impressed. Here’s is my designed company setup. Also note that I only highlighted the important parts of the installations that were different from default. Unless listed here as explicitly changing you should go with the default.:

Setting up the Development tools: (in order)

  1. Setup a different server as our File Share Server and installed Active Directory on that computer.
    1. Created the Domain accounts: TFSSETUP, TFSBUILD, TFSPROXY, TFSREPORT, TFSSERVICE.
    2. One domain for each differnet service that Team Foundation Server will use permissions for.
  2. Loaded  Windows Server 2003
  3. Download and installed all updates for Win2003

Installing SQL Server 2005 

   I work at a smaller company so I have plans to install TFS Single Server installation. Below are the highlighted steps.  

    1. Install all components. Sql Server Database Services, Analysis Services, Reporting Services (Not required but I recommend: Integration Services, Notification and Workstation Components, Books Online and Development Tools.) This is so you can get the SQL Server Management Studio installed.
    2. On Service Account page, "click use a domain user account"
      1. In the Username Box, type the name of the Active Directory (AD) account. (for example, TFSSERVICE).
      2. In Start Services select all the check boxes available: Sql Server, Sql Server Agent, Analysis Services, Reporting Services, and SQL Browser
    3. For Authentication select Windows Auth Mode.
    4. On the Report Server Installation Option Page, click Install but do not configure the server.
    5. The rest just use default settings.
    6. Download and installed all updates for SQL Server 2005 Updates.
    7. Open up Sql Server Management Studio
      1. Connect to Server
      2. Open Security Folder
      3. Right Click on Login --> New Login
      4. Login Name Find TFSSERVICE or whichever you used on the Service Account Page.
      5. Select "Server Roles" on the left.
      6. I just made mine a sysadmin and a few others.
      7. Save

        The reason why you want to do this is to give the right permissions to these accounts to be able to modify and access the data in the database for Team Foundation Server. Many people have had permission problems, this is one of the places you can go and fix this. The ones I added as sysadmin are: TFSSETUP, TFSSERVICE, TFSREPORT

Installing SharePoint Server 2007

Installed Microsoft Office Sharepoint Server 2007 (MOSS 2007): Sharepoint will generate a website for your business needs. 

    1. On the Choose the installation you want page, click Advanced.

    2. On the Server Type tab, click Web Front End.

    3. (Optional) On the Feedback tab, specify an option. For more information about the program, click the link. You must have an Internet connection to view the program information.

    4. Click Install Now.

      When the Setup wizard finishes, a dialog box appears that prompts you to complete the configuration of your server.

    5. In that dialog box, be sure that the Run the SharePoint Products and Technologies Configuration Wizard now check box is selected.

    6. Click Close to start the configuration wizard.

    7. On the Welcome to SharePoint Products and Technologies page, click Next.

    8. On the Connect to a server farm page, click No, I want to create a new server farm, and then click Next.

    9. On the Specify Configuration Database Settings page, perform the following steps:

      1. In Database server, type the name of the server that is running SQL Server and which you will use for Team Foundation Server. If you will use a named instance, add its name after the name of the database server, separated by a slash (for example, MyDatabaseServer\MyInstanceName).

      2. In Database name, type the name of the database that you want to use, or accept the default value.

      3. Under Specify Database Access Account, in Username, type the name of the user account that you want to use as the service account for Windows SharePoint Services.

        You can use the same service account that you will use for Team Foundation Server (referred to as TFSSERVICE).

      4. In Specify Database Access Account, in Password, type the password for the service account.

      5. After you fill in all the required information, click Next.

    10. On the Configure SharePoint Central Administration Web Application page, select the Specify port number check box, and type the port number that you want to use for Windows SharePoint Services administration. Make a careful note of this port number for your records, because you will need this information when you install Team Foundation Server.

    11. In Configure Security Settings, click NTLM, and then click Next.

    12. On the Completing the SharePoint Products and Technologies Configuration Wizard page, review the information. If it is correct, click Next. If you must make any changes, click Back, and update the information.

    13. On the Configuration Successful page, click Finish.

    14. Open a Command Prompt window on the server that is running Windows SharePoint Services, and change directories to the following:

      Drive:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\bin\

    15. At the command prompt, type the following command, and replace these strings:

      • WSSServerName is the name of the server that is running Windows SharePoint Services.

      • Port is the port number for the default Web site.

      • Domain\UserName is the domain and user name of the site owner or administrator.

      • Description is a brief description of the default Web site.

      stsadm.exe -o extendvs -exclusivelyusentlm -url http://WSSServerName:Port -ownerlogin Domain\UserName -owneremail "admin@localhost" -sitetemplate sts -description "Description"

    16. At the command prompt, type the following command, where Domain\TFSSETUP is the domain and user name of the account that you will use when you install Team Foundation Server:

      stsadm.exe -o siteowner -url http://localhost:80 -secondarylogin Domain\TFSSETUP

    17. If necessary, restart any services.

    18. Downloaded SP1 for WSS 3.0 and applied the update first.

    19. Downloaded SP1 for SharePoint Office and updated.

    20. The Configure SharePoint Products and Technolgies should have ran and everything should have suceeded.

  • NOTE: Before you install Team Foundation Server, you should ensure that the deployment of SharePoint Products and Technologies that you want to use meets the following guidelines:
    • The administration site, default Web site, and reporting site are running. You must be able to connect to each of these sites from other computers on the network.

    • The deployment of SharePoint Products and Technologies is configured as a server farm. Standalone deployments of SharePoint Products and Technologies will not work with Team Foundation Server. For more information, see "Deploy in a simple server farm" in the Microsoft Windows Server on the Microsoft Web site.

    • If the deployment of SharePoint Products and Technologies includes Windows SharePoint Services 3.0 or Microsoft Office SharePoint Server 2007:

      • The default Web site must not be named Sharepoint - 80.

      • The server that is running Windows SharePoint Services 3.0 or Microsoft Office SharePoint Server 2007 must be virtually extended and configured to use NTLM authentication.

To verify an existing deployment of SharePoint Products and Technologies

To perform this procedure, you must be a member of the Administrators security group on the local computer.

  1. Verify that the SharePoint Central Administration site is working correctly:

    • Determine the port number that is used for the site.

      To obtain this information, open Internet Information Services (IIS) Manager, and review the properties of the administration site, which is named SharePoint Central Administration.

    • In an Internet browser, browse to http://ServerName: AdminPortNumber, replacing ServerName and AdminPortNumber with the correct values.

    • Ensure that this site is visible from other computers on the network.

      If the site is not visible, see the documentation for SharePoint Products and Technologies to troubleshoot your site configuration.

  2. Verify that the default Web site is working correctly:

    • In an Internet browser, browse to http://ServerName, replacing ServerName with the correct value.

      If you configured your deployment of SharePoint Products and Technologies to use a different location (for example, http://ServerName/sites) or port number, use those settings instead.

    • Ensure that this site is visible from other computers on the network.

      If the default Web site is not visible, see the documentation for SharePoint Products and Technologies to troubleshoot your site configuration.

Troubleshooting SharePoint:

  • When trying to hit the Central Admin Site I received a "Server Error in '/' Application"
    • Cause: This issue occurs if Microsoft Internet Information Services (IIS) 6.0 and ASP.NET are installed on the server before the server is promoted to a domain controller. This issue occurs if the following conditions are true, in the order that they are presented in:
      1. You install IIS 6.0 and ASP.NET on a member server.
      2. You use the Dcpromo.exe tool to promote the member server to a domain controller.
      3. You install Windows SharePoint Services 2.0 on the domain controller.
    • Resolution 1:
      1. Open up command prompt
      2. cd Drive:\windows\microsoft.net\framework\(latest version)
      3. aspnet_regiis -ir
    • Resolution 2:
      1. After looking at the Application Log I noticed that TFSService didn't have permissions to the windows\microsoft.net\framework\ Folder, so I added it.

Team Foundation Server 2008 Release

  1. Installed Team Foundation Server 2008: TFS is a fully server integrated solution for a development department. It provides you with the tools that the Business Experts, Development Manager, Domain Experts, Quality Assurance and Developers would use to help govern the project. For example the developers have built in code coverage, generating unit tests, etc. The Business Experts are able to view a portal site that helps track the project. Admins have a Continuous Integration Server. For installation, the best documentation is to follow the installation instructions that comes with the product.
  2. Installed Visual Studio Team Suite 2008: There are different products here for each role in the environment, so there is a Visual Studio Test, a Visual Studio Database, etc. I use Team Suite since I play multiple roles and that version has everything in it.
  3. Installed Team Explorer 2008 (Comes wrapped up in the TFS 2008 install under the folder “TFC”): Team Explorer is the plug-in to Visual Studio to enable you to view the project on the repository.

Why we choose these technologies:

  1. I needed an environment setup quickly and easy. I am not a full time IT person and didn’t have the time to deal with the intermingling of open source projects. In a few installs I was able to get a Continuous Integration Server, Proxy Server , Configured Web Server, Unit Testing, Functional Testing, Repository, Generated Team Portal Site, Document Tracking System, Bug Tracking System, Wiki Page, Risk Analysis Tracking, Generated Reports about the project, Code Coverage, Code Metrics and whatever else I’m not listing. Total time: 12 Hours
  2. We already had the software, why not use it. So budget wasn’t an issue in this instance. If you are on a very tight budget then I recommend evaluating the product (trial version) and then deciding if you want the headaches of setting up all the individual products.
  3. Microsoft makes very good development products and Microsoft products play very nice with each other. Sometimes you have to find the adapter projects but they are almost always there.
  4. Having everything integrated into your development environment is just something I like when I develop. So I don’t need to toggle and open up 12 other applications everyday to get the job done.

That about sums it up for the installations, that’s all fine and dandy but how do we actually use the software, that’s what I know I’ve searched for previously.

  • Use TeamPlain (Team System Web Access (TSWA)) or SharePoint Server?

o   Just to let you know as of the time of this writing there isn’t one portal system that integrates Sharepoint Server Sites, Teamplain and Team Foundation Server. We opted to use Sharepoint Server first, By doing this we lose tracking work items within Visual Studio. However there is a tool that enables us to synch the data between Sharepoint and Team Foundation Server. You can find it here: http://www.codeplex.com/MigrationSyncToolkit Some Microsoft Good fellows also made: http://www.codeplex.com/tfstotfsmigration 

  • Bug Tracking System

o   Sharepoint has a nice template for Bug Tracking which I was able to hand off to a non-developer to customize and not have to worry about maintaining.

  • Wiki

o   I also use the Wiki template of Sharepoint. The purpose of this wiki is for us to create links to each department in the company. Then each company can use this as their intranet site. In development we list out the software methodology that we use, the standard operating procedures, our whitepapers we write while researching new technology and how to articles. This is also a place the developers can write out our “hotfix” for our Client Services Department until the next release which fixes the bugs.

UPDATE!: Dec 2007 the Power Tools were released for Team Foundation Server, the SP1 upgrades also broke my configuration. We decided to reinstall everything which is why I'm updating the instructions here. This time around we decided we want to use the Teampain as our Bug Tracking System, Work Item System.

A day and life of a Developer at HRN:

  • You access bugs and task work items from TFS to determine what work you need to do. For example, work items might have been assigned by your project manager, by another developer, or by the test team.
  • You use the VSTS Source Control Explorer to access the TFS source control repository and pull the latest source code into a local workspace or your development computer.
  • After performing the work identified by the work item, you check your code back into the source control database. You must link this to the work item assigned to you.
  • FX Cop is run against your code as you check in. It enforces our modified rules we set for the engine.
  • You have a designated Code Reviewer that you list with the code check in for them to sign off later so that the code will be “okayed” and sent out with next release
  • The check-in event triggers a continuous integration build that uses Team Build.
  • If the build fails transactions are rolled back and emails generated.

 

A Tester’s day might interact with TFS in this manner:

  • You pick up the output of a scheduled build from a specific drop location.
  • You perform manual and automated testing including security testing, performance testing, and Web testing by using various VSTS tools.
  • You upload the results from the tests to the TFS Test Result database for future reference.
  • You log bugs identified by your testing into TFS as new work items.
  • You resolve existing bugs, if the latest build fixes previously logged bugs.

 

Our Repository looks like this:


TeamProject1 is the container folder for the entire TFS system. It is used by TFS for each project for data binding the portal site to the documentation.

Builds is a container folder which contains the different project builds to run the Continuous Integration Server.

Main is a container folder for the source files and other related artifacts such as build output, design documentation, and test cases. An application folder contains the Visual Studio solution (.sln) file used to group together a related set of Visual Studio projects. Each project file (.csproj) is contained in a dedicated project folder, located beneath /Main/Source/PPro3/Source. Unit tests that accompany each source project are located beneath the UnitTests folder.

The Docs and Test folders are used to hold additional artifacts associated with the team project including product documentation and automated tests.

The TeamBuildTypes folder is automatically created for you when you generate your first Team Build.

 

Release Processes:

                We release at the beginning of each month. Our process is as follows.


 

The diagram above represents both the physical layout of the branches as well as their logical Representation.

                At significant milestones and upon meeting some well-defined quality criteria, code gets merged into TEST. If TEST doesn’t exist, we create TEST by branching it from $/ppro3/DEV based On some state (changeset, label, date, version number) Code in TEST gets stabilized for release criteria such as feature completeness, security and performance.

                Code is merged into PRODUCTION from TEST for release when the quality is high enough for additional testing and the product is close to release-quality. If PRODUCTION doesn’t exist, we create PRODUCTION by branching it from $/ppro3/TEST based on some known state – label, date, etc.

                As each milestone gets promoted to the next branch or released, the given branch becomes open for the next milestone. We iterate on this cycle until we reach a quality bar established for release – at this point, a release (Release1.0) is declared from $/ppro3/Production.

                We create a read-only Safekeeping branch under $/ppro3/safekeeping/Release1.0 from

$/ppro3/Production/Release1.0. At this point, $/ppro3/DEV and $/ppro3/TEST become available for the next release (2.0) of the product, while $/ppro3/PRODUCTION becomes available for sustained engineering of Release 1.0.

 

Week’s Agenda

Monday: Write Tests / Code

Tuesday: Code

Wednesday: Code

Thursday:  Risks Analysis Meeting, Status Update / Code

Friday: Code / Code Review (depending on work load)

 

   
Tuesday, December 18, 2007 5:04:57 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] - Trackback
Architecture | Technical
Archive
<January 2009>
SunMonTueWedThuFriSat
28293031123
45678910
11121314151617
18192021222324
25262728293031
1234567
About the Author/Disclaimer
Currently I am a Senior Software Engineer at Mobile Productive Inc a automotive tech company. Check us out at http://www.mpifix.com

Experience
  • Project Management: 4 Years (Apple Computers)
  • Computer Instructor: 2 Years (CompUSA)
  • Developer: 4 Years (RemedyMD, HRN, MPi)

  • Education
  • B.S in Computer Science from Neumont University
  • Certificate of Continuing Education from MIT

  • Linkedin

    Disclaimer
    The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

    © Copyright 2009
    Joshua T Stroup
    Sign In
    Statistics
    Total Posts: 19
    This Year: 0
    This Month: 0
    This Week: 0
    Comments: 5
    All Content © 2009, Joshua T Stroup