Friday, September 12, 2008 #

nAML: A New Revolutionary Way to Model Your .NET Applications!

naml

Understanding the architecture and code in software application plays as major factors while building good software products. Having an easy to understand visual notation, not only helps architects to model the system efficiently, but also helps developers to quickly implement that, as well as it helps the re-engineering process to easily adopt the architectural model with respect to new requirement.

A new visual modeling technique, termed as “nAML” (.NET Application Modeling Language) is being introduced which overcomes the limitation of typical modeling languages by providing revolutionary way within a single space to describe an application system with its structural and behavioral, as well as physical and logical components. It illustrates real world samples, from user interface experience, .NET specific language (such as C#) classes to database level SQL commands, to let software architects and developers to have a clean model for the future system. One of it’s the most powerful objectives of this new visual language is the besides an easy way to model the system, the target model will require near to zero knowledge on notation semantics from reader aspect.

Primary Objectives

The primary objectives of nAML can be considered as follows:

  • Provides a single space to visually describe one or more application systems with structural and behavioral components.

  • Provides a single space to visually describe one or more application systems with logical and physical components.

  • Provides a single space to visually describe one or more application systems from top to low level.

  • Provides a single space to visually describe a part or whole of one or more application systems.

  • Extremely simple and easy understand and learn from readers and designers perspective.

  • Concentrates on .NET applications, with its related logical and physical entities (user interface, application logic, business logic, database etc).

Links and Downloads

Here is the nAML project site: http://code.msdn.microsoft.com/nAML
Download the latest specification, examples and Visio 2003 Stencil for nAML tutorial from here.
Download Visio 2003 Stencil for nAML from
here.

 

posted @ Friday, September 12, 2008 9:35 PM | Feedback (1)

Sunday, August 03, 2008 #

July 2008 Recap: Panel Discussion, Blogging, Developer Group and Finally Winning Community Credit Award!

winner

I have been awarded by Community Credit, for the monthly community contribution competition of July 2008.

DSC03599 DSC03575

One of my main contributions for July 2008, besides blogging, moderating developer group etc, was organizing a panel discussion and seminar with 120+ students of American International University - Bangladesh. Along with Mr Enam Noor, we had a nice time with students, while providing them a guideline to get prepared for industry standard software development. Along with the support of my current employer, we'll continue giving support to the graduating students of Computer Science so that we can pick more and more talents quickly to face and meet more more challenging projects over time.

Technorati Tags: ,

posted @ Sunday, August 03, 2008 3:41 PM | Feedback (0)

Thursday, July 17, 2008 #

Employee Info Starter Kit on Official ASP.NET Site

eisk

Employee Info Starter Kit is an asp.net starter kit, which demonstrates the use of simple CRUD operations for maintaining a company's employee information. It has been developed by me as a guideline for building enterprise level projects.

In last few months this starter kit placed in the top chart at code.msdn.microsoft.com for several times regarding the popularity.

A very exciting news for all of Employee Info Starter Kit fans is yesterday this starter kit has been placed in the front page of Official Asp.Net site, in the "In the News" section! It has been placed in the listing of the elite starter kits of Official Asp.Net site.

As it developer, I can say, it's just beginning..over time I will add more and more features in terms of best practices for several areas, so that newbes and experts can get one stand-alone solution to grab, learn and implement most of the best practices, without going thru "tons" of tutorial!

Here are few highlights of the future version plan:

1. Full Unit Testing Automation

2. Web & Load Testing Automation

3. ASP.NET 3.5 Version

4. Silverlight Version

5. ASP.NET MVC Version

and lot more ...

So stay tuned!

If you don't want to wait till then, lets go to the project site and start download now..Cheers!

posted @ Thursday, July 17, 2008 10:42 PM | Feedback (1)

Tuesday, July 01, 2008 #

I am MVP Again! Cheers!

MVPLogo

It's great pleasure for me that Microsoft has awarded me as MVP (in ASP.NET category) again this year! I become MVP for the second time, for my contribution in developer community. Check out my MVP profile here.

Besides, another interesting news to be shared with all, in the last weekly show of Channel 9, two of my posts published here 10 Tools Which I Left After Using VSTS 2008 and 10 Tools Which I Still Use, Even I Have VSTS 2008 has been discussed.

Thanks Microsoft for your recognition! It really encourages me a lot to grow myself more and more in terms of knowledge and contribution in technical domain and community.

Cheers!

posted @ Tuesday, July 01, 2008 10:48 PM | Feedback (0)

Tuesday, June 24, 2008 #

10 Tools Which I Still Use, Even I Have VSTS 2008

In my last post, titled "10 Tools Which I Left After Using VSTS 2008",  I have included a list of 10 tools which I am not using currently, as I have the corresponding features available in Visual Studio Team System 2008. However, on the other hand, I am still using few tools even I have VSTS 2008!

Here are 10 of among them..

1. Code Smith: An excellent template based code generator.

code-smith

2. Crystal FTP: Excellent FTP client tool.

untitled

3. Total Validator: One of the most powerful tool that I ever seen, which includes very nice feature to validate web standards. 

4. Diff Marge: A tool that enables us to investigate and/or synchronize the difference between two files or folders.

diff-marge

5. Design Pattern Automation Toolkit: An excellent open source tool, by which we can automate and generate source code with respect to established design patterns.

dpa

6. Office Visio 2007: Although Visual Studio has support for diagramming, however Office Visio 2007 is still # 1 choice for me, with respect to analyzing, modeling, designing the application system on which I am working on. It contains a wide range of support of notation, including UML, Enterprise Application, Prototyping. 

Visio

7. Copy Source As HTML: Bloogers like me, always needs to copy own source code from Visual Studio IDE, to be posted. This tool serves me this purpose.

8. Spell Checker: Its really a nice thing, if my code don't have any spell mistakes, which can occur frequently. Wonderful tool to help developers!

9. SysInternalSuite: A nice system spy tool for developers and system admin. It contains lots of useful tools, to investigate the system with respect to the current execution of your application.

10. Employee Info Starter Kit: An excellent ASP.NET starter kit, which includes most of the web and coding best practices. Helps web developers to reduce start-up preparation time for web application.

kick it on DotNetKicks.com

posted @ Tuesday, June 24, 2008 11:41 PM | Feedback (0)

10 Tools Which I Left After Using VSTS 2008

I have started using Visual Studio Team System (VSTS) 2008, recently. Previously I worked with Visual Studio 2005. As a matter of fact I had to use lots of external tools to perform and speedup my development process. However, while working with VSTS 2008, it's very exciting for me that, I found replacements for most of the external tools there.

Here are 10 tools which I left after using VSTS 2008:

1. Database Schema Compare

External tool: Redgate SQL Compare

VSTS 2008 tool: Menu -> Data -> Schema Compare

1

2. Database Data Compare

External tool: Redgate SQL Data Compare

VSTS 2008 tool: Menu -> Data -> Data Compare

2

3. Database Data Generator

External tool: Data Gen 0.9

VSTS 2008 tool (power tool): Add -> New Item -> Data Generation Wizard

4. Unit Testing

External tool: Test Driven.NET

VSTS 2008 tool: Menu -> Test -> New Test

4

5. Web Testing

External tool: Badboy

VSTS 2008 tool: Menu -> Test -> New Test

5

6. Load Testing

External tool: Neoload

VSTS 2008 tool: Menu -> Test -> New Test

6

7. Code Profiling

External tool: Redgate ANTS Profiler

VSTS 2008 tool: Menu -> Analyze -> Launch Performance Wizard

7

8. Code Analysis

External tool: Fxcop

VSTS 2008 tool: Menu -> Analyze -> Run Code Analysis

8

9. Code Matrics

External tool: nDepend

VSTS 2008 tool: Menu -> Analyze -> Calculate Code Matrics

9

10. Java Script Debugging

External tool: Code Project Java Script Debugging Tool

VSTS 2008 tool: see Scott Gu's post on it.

kick it on DotNetKicks.com

posted @ Tuesday, June 24, 2008 9:44 PM | Feedback (0)

Monday, June 23, 2008 #

How To: Win the Tech Sea…

Microsoft is releasing new and exciting products and platforms for developers one by one, which are making developers pretty busy to learn, implement and utilize them at their production environment. Here are few latest hot cakes for developers:

1. Windows Presentation Foundation

2. Windows Communication Foundation (WCF)

3. Windows Workflow Foundation (WF)

4. Windows Forms 3.5

5. ADO.NET 3.5

6. ASP.NET 3.5

7. .NET Compact Framework 3.5

8. Windows CardSpace

9. Silverlight 2.0

10. IIS 7.0

11. Visual Studio 2008 Team System

12. Visual Studio 2008 Team Foundation Server

13. Sql Server 2008

14. Windows Sharepoint Services 3.0

Well that's simply crazy! Even if I want, I can add more, given that each of the technologies has bigger and bigger branches, each of which requires lots of efforts to be specialized!

I am really a tech hungry, however right now I feel a bit overloaded to enter to all of these, even sometimes getting time to review the basic become harder for me. However I finally planned myself to be more organized to continue my learning process with good digestion, so that I can continue NOT only just learning, but also I can improve my developer life much better with stronger way.

Here are four steps that I wish to maintain with respect to all type of new technologies, which will be adjusted based on the relevancy at my current work.

1. Basic level: To be able to just run "Hello World" type sample successfully, along with ensuring successful installation and configuration process.

2. Pre-production: Getting prepared to implement in production, by making successful experiments, customization and fine tunings in samples found.

3. Production: Careful implementation and perform required adjustments for optimized result.

4. Production-advanced: Once a good sort of 'safe' experience archived, I would like to go for advanced concepts to implement the technology is highest possible way!

Not matter how much closely related each technologies are to my current work and projects, but I am sure each of them are at least 'loosely' related, so I will cover all of these at least at basic level, as I have the motto:

"As a good developer, always you have to know 'everything' for 'some item' and 'something' for 'every item' !

Cheers!

posted @ Monday, June 23, 2008 11:31 PM | Feedback (0)

Monday, April 28, 2008 #

Design Factors 21: Do we use cascading on CRUD operations? If so, is it in DAL or DB layer? Why?

untitled

Cascading is a technique that resides between the relations between two database tables. It enables the records of the child tables to be deleted/updates with respect to the corresponding records of the parent table records. Besides the database level, this operation can also be considered in the inter-mediate logical layer. Software designers are required to define the appropriate explanation regarding this consideration.

Technorati Tags: ,,

posted @ Monday, April 28, 2008 2:23 PM | Feedback (2)

Design Factors 20: Do we use transaction? If so, is it in DAL or SP layer? Why?

ms973865.introsystemtransact_01(en-us,MSDN.10)

Transaction is a mechanism where a batch of operations can be rolled back for any failure at the mid point of the whole process or can be committed after successful completion of all the operation. Transaction can be used in both database level and/or application level.

Technorati Tags: ,

posted @ Monday, April 28, 2008 2:18 PM | Feedback (0)

Design Factors 19: How the logical layers are connected?

connected

Logical layers such as BLL, DAL, CL etc can be hosted in the same machine or can be distributed in separate machines specially where high end scalability are required. The relation and isolation among logical and physical tiers are required to be defined and explained with appropriate design goal.

While considering logical layers in distributed environment, there are several technologies are available. SOAP/HTTP based web service or .NET remoting can be considered, each of which has own merits and de-merits. These considerations are required to be addressed in this point.

posted @ Monday, April 28, 2008 2:13 PM | Feedback (1)

Wednesday, April 23, 2008 #

100th Post! Cheers!

LONDON-EYE-244

This is my 100th post in GWB, which just been written in my 29th Birthday! Cheers to all!

Technorati Tags: ,

posted @ Wednesday, April 23, 2008 1:06 PM | Feedback (2)

New Asp.Net Starter Kit Available: Employee Info Starter Kit

untitled

Employee Info Starter Kit  is a starter kit, which includes very simple user requirements, where we can create, read, update ad delete (crud) the employee info of a company.

The primary purpose of this starter kit is, to provide a solid guideline with respect to building enterprise level projects, by utilizing new asp.net 2.0 and sql server 2005 features, as well as latest best coding practices.
The starter kit includes several cases where we can perform multi-table joining and/or write operations. Combining high performance and security features this starter kit shows how we can solve in real world problems and challenges, from a wide range of view point.

The upcoming releases for this starter kit will contain latest best practices using ASP.NET 3.5 MVC, ASP.NET 3.5 Dynamic Data, LINQ, ADO.NET Entity Framework. Stay Tuned!

Url: http://code.msdn.microsoft.com/eisk

===============================================

Technology Features :-

===============================================

- .net 2.0 genetic type
- .net 2.0 nullable type
- asp.net 2.0 object data source
- asp.net 2.0 grid view
- asp.net 2.0 form view
- asp.net 2.0 skin
- asp.net 2.0 theme
- asp.net 2.0 master (nested)
- sql server 2005 xml type
- sql server 2005 paging support

===============================================

Validation :-

===============================================

Validation -- XHTML 1.1, CSS level 2.1, WCAG 1, ABS 508
Validation -- Microsoft Coding Guideline (Using VSTS 2008 Code Analyzer)

===============================================

Object Model :-

===============================================

User Interface ****** --------

- Design template (MS SIMPLE)
- Client side calendar control
- Grid view client side select all feature
- Grid view delete confirmation feature
- Form view data pre-fill feature
- Databound dropdown with 'All'/'None' selector field
- Print page
- Context parameter based listing/details page
- Client end validations
- Content upload in SQL Server

Utility Class ****** --------

- Error reporting
- Friendly error page
- Email functionality
- Html formatter
- Login utility
- File upload utility
- Role based (cache based) security
- Session expire base page
- Session manager
- Keys
- Enumeration

Cache Layer ****** --------


CRUD Methods :-

- Get All Entity
- Get By Primary Key
- Create New Entity
- Update Entity


Utility Methods :-

- Get cache key
- Get cache item
- Add cache item
- Invalidate cache

Command Wrapper ****** --------


Methods :-

- Scalar Value
- Custom Entity Single Record
- Custom Entity Tabular
- Custom Entity Tabular Collection
- Generic DataTable
- Generic DataSet
- Write Return Success
- Write Return PrimaryKey

Data Access Layer (Entity Level) ******* --------


- System.Data.SqlTypes for data property fields
- Create and Update Method with primitive type paramaters for Object Data Source Support
- Design time support for Object Data Source
- Works for only auto-generated primary key
- .Net 2.0 Generic Collection Support
- Isolation for Stored Procedure Name Constants
- XML Comments (useful for nDoc utility)
- Validation for method parameters

Database Utility Methods :-

* Generate collection for reader delegate
* Add parameter to sql command method
* Execute scalar command method
* Execute reader method
* Format xml for id array method

CRUD Methods :-

CREATE METHODS
* Static method with data filed's as method parameter
* Static method with business entity as method parameter
* Instance method, without any parameter

UPDATE METHODS
* Static method with data filed's as method parameter
* Static method with business entity as method parameter
* Instance method, without any parameter

GET BY PRIMARY KEY METHOD
* Method that gets a single record

GET BY FOREIGN KEY METHOD
* Method that returns a collection of records based on the foreign key

GET BY FOREIGN KEY - PAGED
* Method that returns paged result for the provided foreign key
* Count method being used when using paging method

GET ALL
* Gets all of the records for the corresponding entity

GET ALL PAGED (USING SQL SERVER 2005 PAGING SUPPORT)
* Method that returns paged result for the provided foreign key
* Count method being used when using paging method

DELETE BY ID
* Deletes a record using the primary key

BATCH DELETE (USING SQL SERVER 2005 XML TYPE)
* Deletes a set of records, based on the passed parameter of list of Id's as xml data

posted @ Wednesday, April 23, 2008 1:02 PM | Feedback (1)

Happy birthday to me!

webcreator

Don't know really how 29 years just passed! It was really wonderful journey so far. I wish I will be nice husband,  nice child, nice father, nice engineer ... (impossible? not really!)

Cheers to all!

Technorati Tags:

posted @ Wednesday, April 23, 2008 12:44 PM | Feedback (0)

Monday, April 21, 2008 #

Design Factors 18: Which portion of the db utility classes are vendor specific?

untitled

To perform database operations from application, generally DAL uses some db utilities helps to write minimal lines of codes to perform data operations. In the data utility classes, some classes and methods might be specific to vendor (for instance, SQLHelper class will only work to perform operations on MS SQL Server) and some classes and methods might be used regardless of database vendors. These issues, along with the boundaries, should be addressed here.

Technorati Tags: ,

posted @ Monday, April 21, 2008 12:18 PM | Feedback (0)

Design Factors 17: Where exceptions are thrown for invalid values?

untitled

In some cases invalid values are handled from the user interface level, by using validation controls. However we need to address the points, where and how we handle invalid values, which are not been validated from there user interface layer and/or required to be validated in coding level. These considerations are retired to be addressed in this point.

Technorati Tags: ,

posted @ Monday, April 21, 2008 12:17 PM | Feedback (0)

Design Factors 16: How the null values are handled?

maui_be

Null values are one of the basic considerations, without taking care of which may raise lots of confusions and errors while the application is running in the live. Some application architecture supports a model which puts null values to the database while the user is providing empty data from the user interface end. For string/text type data some times are saved as empty string (i.e. string.empty). But it creates confusion where empty string itself considered as a value. Also, besides string/text type data, special care are required for other type of data (number, fraction, date time etc) with respect to null values to be saved and retrieved to and from the physical database tables. These considerations are required to be addressed in this point.

Technorati Tags: ,

posted @ Monday, April 21, 2008 12:12 PM | Feedback (0)

Design Factors 15: Rather common model of BLL and DLL classes, what are special cases we need to consider?

untitled

The common model of the logical layers which can be fitted to maximum of the business entities can be implemented using code generator tools, which saves a lots of developer times. Besides the common model, there might have some cases which require special consideration. Specific and complex business logic can be an example of such special cases.

Technorati Tags: ,,

posted @ Monday, April 21, 2008 12:09 PM | Feedback (0)

Design Factors 14: How do we generally handle many to many (database) relationships in logical layers?

ManyToMany

Generally a many-to-many relation between two data tables forms a third table which contains the primary key of both tables. For instance, if there are two table or data entity, named “Person” and “Address”, and if there is a relation between these entities is “many to many”, there would be another table, which will keep this relation in the table, which could be named as “Person-Address”. Some logical model supports to create a separate logical entity in application layered components (DAL, BLL, BE etc) for the many-to-many table, and some application embeds the operations in the logical entity of any of the two primary tables.

Technorati Tags: ,,

posted @ Monday, April 21, 2008 12:06 PM | Feedback (0)

Design Factors 13: How do we generally handle one to many (database) relationships in logical layers?

ordering_in_starbucks

One to many relation is one of the most core consideration in relational database design context. However while mapping the database tables to the logical layers, it needs to be defined clearly, how it has been handled. For instance, as design can include a container class that holds parent and child classes as property, or another design can include separate classes for all data entities regardless of parent/child relationship.

Technorati Tags: ,

posted @ Monday, April 21, 2008 12:03 PM | Feedback (0)

Design Factors 12: For CRUD operation in DAL, when we use the business entity and when do use parameters?

beta3mods2

Business entities can be passed as method parameter in DAL, or all data elements can be passed separately in DAL methods as method parameter. Some design also may support the Business Entity class to include the corresponding CRUD methods, which basically doesn’t require any data element to be passed in the CRUD methods.

Technorati Tags: ,,

posted @ Monday, April 21, 2008 11:59 AM | Feedback (0)

Design Factors 11: For CRUD operation in BLL, when we use the business entity and when do use parameters?

images

Business entities can be passed as method parameter in BLL, or all data elements can be passed separately in BLL methods as method parameter. Some design also may support the Business Entity class to include the corresponding CRUD methods, which basically doesn’t require any data element to be passed in the CRUD methods.

Technorati Tags: ,,

posted @ Monday, April 21, 2008 11:55 AM | Feedback (0)

Sunday, April 20, 2008 #

Design Factors 10: What are the mapping criteria for BLL classes and CRUD methods?

BLL classes can be defined with respect to physical or logical business entities, DAL classes, as vice versa. This mapping process can include one to one, one to many or many to many technique.

For example, we have two business entities (physical or logical), named “Order Summery” and “Order Items” for an e-commerce application. Having a one-to-many mapping relation with BLL and DAL in class level can contain one separate BLL class, as “OrderBLL”, and two separate two separate DAL classes, as “OrderSummeryDAL” and “OrderItemsDAL”. The “CreateOrder” method of the “OrderBLL” class can call the “CreateOrderSummery” and “CreateOrderItem” method of “OrderSummeryDAL” and “OrderItemsDAL” respectively to complete the entire database create operation for a whole order, as shown in the figure below.

clip_image002

Figure The class level one-to-many mapping process between DAL and BLL

Even having a one-to-one relation with BLL and DAL classes can include a one-to-many relation in method level. For example we have one BLL class “OrderBLL” and one DAL class “OrderDAL”. Having a one-to-many relation in method level, will include a “Create” method in OrderBLL which basically calls the “CreateOrderSummery” and “CreateOrderItem” methods, as shown in the figure below.

clip_image004

Figure The method level one-to-many mapping process between DAL and BLL

The appropriate design issues needs to be defined at this point.

Technorati Tags: ,,

posted @ Sunday, April 20, 2008 1:27 PM | Feedback (0)

Design Factors 9: What are the mapping criteria for DAL classes and CRUD methods?

16

DAL classes can be defined with respect to physical or logical business entities, BLL classes, as vice versa. This mapping process can include one to one, one to many or many to many technique.

For example, we have two business entities (physical or logical), named “Order Summery” and “Order Items” for an e-commerce application. Having a one-to-one mapping relation to DAL will contain, two separate DAL classes, as “OrderSummeryDAL” and “OrderItemsDAL”.

Technorati Tags: ,

posted @ Sunday, April 20, 2008 1:26 PM | Feedback (0)

Design Factors 8: How the layers communicate with next level layers?

For a three layered application model, in some cases, the UI interface layer can use the DAL directly, rather using it via the BLL (i.e. “immediate next layer”). This type of application model generally includes a small set of classes and methods in business logic layer, ignoring the mapping all functionalities from DAL to BLL. This design issue provides a sort of performance, by reducing the engagement of intermediate layer(s).

On the other hand, we can have a model, where a complete set of functionalities is needed to be present in BLL, is “tightly coupled”. In this context UI layers can’t use the functions of DAL directly.

clip_image002

In this point, the software architect is needed to address this design issue clearly.

Technorati Tags: ,,

posted @ Sunday, April 20, 2008 1:25 PM | Feedback (0)

Design Factors 7: Do you use cache layer?

10

To improve the application performance, “Caching” is one of the popular techniques in current trend of best practices. In some design context supports to cache data in UI interface level, where built-in cache mechanism is available. Sometimes, putting the cache mechanism in a separate layer provides better isolation and control over application space. If so the cache isolation, expiration and coupling with other layers policy should be addressed properly.

Technorati Tags: ,,

posted @ Sunday, April 20, 2008 1:23 PM | Feedback (0)