Wednesday, May 30, 2007

Navision

Microsoft Business Solutions – Navision

Most of the developers, architects have heard this buzzword as Navision. But apart from knowing that it is kind of accounting/finance related software, other aspects of Navision are not known to people. I have had opportunities to work on Business solutions products/live projects using Dynamics or Navision. Hence I decided to write on Navision first. This blog is just an attempt to introduce Navision to the people who are not aware of its features/ strengths.

Navision is actually Enterprise Resource Management application which provides an efficient way to streamline your business and increase productivity. It is specifically designed to mid-sized companies seeking one solution without disturbing everyday operations. It provides integration functionality support to solutions for: Financial Management, Supply Chain Management, Customer Relationship management and E-Business, Sales Management, Manufacturing and so on. Navision can be installer in 2 different flavors as: 2-tier application or n-tier application.
For 2-tier Navision, DBMS and client reside on different blocks. In case of n-tier application, you have Application server in the middle. Microsoft Navision Application Server acts as a client towards a database server and can act as a server for other services.

Adaptability
The following components deliver adaptability:
o C/SIDE
o Tools for managing C/SIDE
These components make up the core development environment of Navision. They ensure Navision can be customized to support the customer’s unique business now, and as their business changes, grows and encounters new challenges in the future. They help keep the solution problem-free and working as it is expected to do.

Openness
The following technology components deliver openness:
o Navision Application Server
o C/ODBC and C/FRONT
These components help you exchange information in Navision with partners, customers and subsidiaries. They also integrate Navision with other applications and programs.

Efficiency
Two components of Navision help ensure and improve efficiency:
• The client - because it uses the familiar Windows interface, it supports companies who need to work in multiple languages, it offers extensive online help, and you can use hyperlinks for convenient, up-to-the-minute access to relevant data
• User Portal - single-sign-on access to relevant data and services helps streamline operating processes

Reliability
There are 3 technology components to contribute to reliability:

• Navision Database Server
• Microsoft SQL Server Option for Navision
• IBM iSeries Servers for Navision

Together, these components ensure customers can work safely and securely in Navision, without worrying about the reliability of their database. They can be confident Navision will support all employees’ requests, deliver accurate information and make rapid calculations so sums and figures are quickly available.
In so doing, Navision helps your workday run smoothly while supporting your future growth.

Collaboration
Navision takes collaboration to a new level, making it extremely easy for your partners, customers and vendors to do business with you.
It lets you use the Internet and Extensible Markup Language (XML) to exchange and distribute information easily and cost-effectively.
It helps you bring in new partners and customers, while reducing costs internally and helping employees to work more efficiently.
The following 3 technology components deliver collaboration:
• Commerce Gateway
• Commerce Portal
• XBRL


Cheers,
Amol

Wednesday, May 23, 2007

Design Patterns

Design pattern is typically description of the common problems and approaches to solve those problems. It is most important piece of knowledge to acquire if you are developing applications. Most of the times, we do tend to ignore design. The latest gangs of developers just want to finish off writing code as soon as possible. The existence of classic development IDEs like VS2005, just adds to this. People just write down the application without having a proper look at the application/product vision. Design patterns are typically divided in groups like: creational, structural, behavioral etc. I do not want to stress on these groups. Instead, I will be concentrating on few patterns.

Singleton Pattern: This is the widely popular design pattern. In most of the interviews, interviews will definitely ask you to write down the class using singleton pattern. This pattern makes sure that only one instance of the class is present at any point of time. This is very simple to implement. BUT do make sure that your class is thread-safe. You may want to use mutex or lock in case of C# or synchronized keyword to the method declaration in case of Java.

Factory Method and Factory Type: Factory Method allows a class to defer instantiation to its subclasses. If you are using .NET Framework, then File.Open could be example of the Factory method. Factory type is also called as abstract factory. It allows creation of families of related classes without specifying their concrete classes. Database Factory in .NET 2.0 would be the best example for this. I have used both the patterns liberally whenever I wanted to detach the object creation mechanism from the caller. There are so many classes in .NET which have implemented these patterns themselves.

Façade Pattern: It actually defines high-level interface making subsystem easier to use. Imagine a scenario that one of your team member responsible for business logic layer, has left. Later you realize that to execute one functionality, you have to call 4 different functions and instantiate 3 different classes. Your UI guys will not like this obviously. You may think of using façade pattern here and simplifying things for UI developers. Trust me they will pray for you. ;)

Adapter Pattern: This pattern is typically used to remove the incompatibility issues between different classes. It typically converts one interface into the interface that is expected by the other class. I like one example which I have read from one of the books on design patterns. Consider that you have been to use new Framework B for communication with Framework C. You already have Framework A for talking to Framework B. And now your CEO told you to use Framework B as well because it is developed by his nephew. This is the situation where you can use adapter pattern. How? I will left it to the readers. ;)

Flyweight pattern: This pattern mainly focuses on reusability. Instead of having large objects, you can use a set of common objects called as Flyweights. You can take the common functionalities in put in these flyweight objects. It is mainly used for efficient sharing.

Apart from these there are other popular patterns like: observer, mediator, chain of responsibility, proxy pattern etc.

It is good to know these patterns. So, next time when you design something or write code, you know what patterns to use.

Cheers,
Amol