Everyone wants to work from home these days. Who wants to commute to an office and sit in a cubicle when you can be just as productive in your own home wearing what you like without having anyone looking over your shoulder?
Whether it’s in business for yourself or over a high speed connection to the office – work at home is hot – and that’s a lot of work to be had for you as an IT entrepreneur.
But before choosing a logo for your Superfixit5000 van it’s important to get down to some fundamentals and proper planning (the logo bit does come – all in good time). Like any other business a proper plan, some research and the ticking of a few key boxes are what will get your venture off the ground and flying high. Here are just a few:
1. Know your market – home users (duh!), but seriously. Who are they? What do they do? The corporate employees will have their own remote support so you’ll be targeting the entrepreneurial types (like you) and recreational computer users.
2. Know what to expect from them – what problems will they typically encounter? What should you get up to speed on so you can diagnose and fix their issues quickly and efficiently? More often than not it will be spyware related – expect to see a lot of that.
3. Know your competition – Who is doing the same, how are they doing it, how much do they charge, what services do they provide and how do they advertise? Do they have special promotions or bundles?
4. Professionalism is everything – you need professional looking work orders, invoices, website, business cards and flyers that make people take you seriously.
5. Have a strong brand – Now it’s time for the logo! Have a consistent brand that identifies you, sticks in people’s minds and differentiates from the competition.
6. Get connected – who can help you build and grow your computer repair business? Where are the best suppliers, can you outsource and project manage the services you don’t provide yourself? Can you quickly refer people to non competing complimentary businesses to fulfil their needs and charge referral/finders fees?
7. Plan for growth – do this from the beginning. A business plan is a must and you need to be prepared to deal with having to get help when there’s too much work and budgeting to cover quiet periods. Having a growth and investment strategy is what will take your business to the next level and ensure you never have to take orders from anyone else ever again.
Home users and small businesses are in dire need of friendly capable computer professionals to see to their IT needs. To really get the most out of all the potential business you need to put on your entrepreneur cap and think in terms of opportunity – at every opportunity.
When you’re in someone’s home or office looking at their computer problems you’re more than just a fix it person. They’re going to ask you for advice on their IT strategy and will expect you to have answers. Even if they don’t ask, you are guaranteed to see disasters waiting to happen and potential improvements – so think like a consultant and don’t be afraid to make recommendations.
The success of your enterprise will hinge largely on people’s perception of you and how you run your operation. Word of mouth advertising and recommendation is your bread and butter. Go out of your way to overdeliver and meet their needs (including the ones they don’t know about) with a well thought out professional service.
To do that you need a plan and a roadmap – invest the time early to build a solidly founded home computer repair business and you’ll never have to work for anyone else again.
Peter Webber
This video shows you how to assemble and mount the power supply, cover plate, motherboard, standoffs, and wires in the case. Credits: , howstuffworks
Over the past few years, we have witnessed a surprising jump in the video game industry. When a new game system is released there are people in line for days, willing to pay a sizeable amount of money for the newest system. The reason for this craze is that the people making the games are breaking new barriers each and every day. If you have a computer animation degree, then you can also be a part of this amazing journey.
We have come a long way from the one-dimensional video games of the 1980’s. In twenty years, we have gone from ball and paddle games to completely realistic games that encompass the entire body and mind. You are now able to use your controller as a steering wheel, a baseball bat or a hockey stick and have the situation play itself out accurately in front of your eyes.
With all of these remarkable advancements in just the past few decades, one can only imagine what is to come next. If you have a computer animation degree, you will be able to have a say about what the next innovations will be. The popularity of gaming is at its highest point ever. One of the main reasons for this is that it is not only young people who are participating. People of all ages are now realizing that gaming has gotten to the point of allowing you to enter worlds that you never deemed possible.
This industry shows no signs of slowing down. This type of degree will give you all of the necessary skills in order to prosper as a video game designer. With a computer animation degree, you will be able to advance your skills in 3D modeling, character design, animation as well as developing the content of your game. Once you have these skills, all you need is a bit of creativity to capitalize on this growing industry.
If you are debating going to school or going back to school, there are a lot of options ahead of you. However, it is quite difficult to find an industry that is “Designing Toy Story” Featurette “SUBTITLES INCLUDED”
guaranteed to prosper throughout your career. Although the games and systems that are available now are mind-blowing, this is only the beginning. There is such a huge market in all age brackets that there is no chance that this industry will lose any speed over the next 100 years. It is quite likely that it will continue to expand and attract more people as the years go on.
The courses will give you the training you need to perform a variety of tasks. You certainly won’t have to limit yourself to making video games. You will be able to work in film, advertising or any other market that may require animation. Your options are endless with this degree and you will always remain at the forefront of the technology industry.
It is mind-boggling to even think of the possible advancements in modern animation. But if you have a natural talent with computer animation, then you should capitalize on that talent by getting a computer animation degree. This degree program will take your previous skills and turn them into talents that employers are seeking. It will also help you build your portfolio to make you more appealing to potential employers. Video game design can be a tough market. Securing a computer animation degree will help you gain a career that will be exciting and rewarding.
Would you like to build your own web page for free? Are you trying to attract new customers or drive more visitors to your product or service? Are you techno-phobic or tangled in a web of computer confusion? Do you already have a web page needing an update, but don’t want to waste more time/money on it?
If you’re ready to build your own web page for free here are a few of the things you’ll need to look at.
Assessing and developing an internet strategy for marketing your product or service.
Whether to build your own web page for free, or hire the right person to do it.
Secrets to developing an effective web page, including tricks the pros use.
How to list with search engines and what it takes to get first page placement visibility.
Setting up low-cost effective domain names and web hosting.
While making up your mind on whether or not to build your own web page for free some things you might want to consider. First is how good does your site need to work? If you are trying to market to professionals then a cheap and easy page that you just throw together for free will not do.
On the other hand if you are building a web page that will be for you and your family’s entertainment then you should be able to build your own web page for free. There are many ways to go about building you own web page. Some involve purchasing high dollar others using the build your own web page for free software that is provided by your ISP.
If you’re looking to build your own web page for free and yet build it fast and easy, and still be able to customize it and make it professional looking without learning HTML code, then you may want to look at one of the step by step web page building software packages available.
These programs rage in price from free to a few hundred dollars, typically the more expensive the more bells and whistles, but don’t go out and buy the most expensive one you find. More often than not the high dollar programs will have features you will probably never use. On the other had you can get a step by step program that will help you build your own web page for free, all you have to after that is pick a domain name and hosting service to host you’re web page.
If you are interested, there are his hands on web programming class provides a thorough introduction to implementing a full-featured Web site on the Internet or corporate Intranet, including implementation of dynamic content using JavaScript and related tools. Starting with thorough coverage of HTML, these courses progress to the implementation of dynamic client-side content using JavaScript.
Victoria
quesomanrulz.com / twitter.com – I as well as many others often enjoy being part of an online community. After a while though we get to the point that we are interested in creating our own. I have already created my own community with this website and the forum that goes with it. In this tutorial you will learn how to create your own forum as part of starting your own community…For more go to www.quesomanrulz.com Links: webhost – byethost.com Forum Software – phpbb.com FTP Client – filezilla-project.org
Do you own a computer business that caters to the needs of local small businesses?
A rookie mistake many computer business owners make when starting out in the IT industry is believing that all small businesses are created equal. They think they can just create some well-designed marketing materials that will appeal to all small business owners in their area and get a nice response that will bring them instant clients. If only it were that easy!
The trouble is, most small business owners don’t identify themselves as small business owners. When introducing themselves in networking situations or in advertisements, the typical small business owner won’t say, “Hi, I’m John Doe, and I run a small business.” Instead, they identify themselves by their occupation or industry. They introduce themselves as public accountants, attorneys, florists, locksmiths, health club owners, doctors, dentists, and electricians for example.
There are literally hundreds of different types of small businesses. And if you want to get great clients for your computer business, you need to target those that will be most likely to need your comprehensive IT solutions. Consider the following 4 ways to create a focused marketing campaign that can get you the very best clients.
1. Know the Differences Between Different Types of Small Businesses and the Profit They Can Bring to Your Computer Business. Because different types of small business clients can bring you different results in terms of service revenue, think about focusing your marketing efforts on only the most profitable potential clients. On a basic level, the ideal client for your business will be first of all, big enough to have a need and budget for outsourced IT services on a regular basis… but at the same time, not so big that the company already has a large in-house IT department.
2. Know What Sweet Spot Clients(tm) Mean to Your Business. The “not too small” but “not too big” concept is what defines Sweet Spot Clients(tm). It’s where you will find companies with anywhere from 10-100 employees, with 10-50 PC’s and annual revenues between $1 million – $20 million (USD). This is where many computer business owners find their best opportunities for significant growth.
3. Very Small Businesses Are Not Ideal Clients. When you work with small businesses that have just a handful of PC’s, they are often too small to afford many of your recommendations. While this type of business is still technically defined as a small business, you will find that marketing to or servicing a very small company will usually not be profitable. These types of businesses will not be able to afford on-going Support and will ultimately not be able to grow past being an occasional customer. The turning point for a small business is when it needs services on a monthly, semi-monthly, or even weekly basis… and it must invest in at least one real, dedicated server.
4. Very Large Small Businesses Do Not Make the Best Computer Business Clients Either. When you have large small businesses with 50+ systems as your clients and they start seeing you on a weekly or even daily basis, they often will have a light-bulb moment: “We could really save money and get faster service if we hired a full-time IT manager.” While there still might be a place for your computer business in this type of environment as a specialist, this size of small business will end up delegating most work to a full-time IT manager on their payroll.
When it comes to the profitability of specific small business clients, remember that not all small businesses are created equal. You need to target the right type of clients to make sure you can build long-term relationships and enjoy on-going service revenue.
Copyright (C), ComputerBusinessHQ.com, All Rights Reserved.
Joshua Feinberg
David Hayes, Deputy Secretary for the Department of Interior, moderates a session on Transforming Customer Service at the White House Forum on Modernizing Government. January 14, 2010.
Computer Science degrees are offered at hundreds, if not thousands of colleges across the country for a good reason; the demand for computer experts has never been higher. In fact, the need for computer scientists will continue to rise through at least 2015 according to the United State Department of Labor’s 2006 report on career growth.
What many people don’t realize is that part of the hiring increase of the future in the computer sciences area includes a trend toward more specialization. According to the Department of Labor’s Occupational Outlook Handbook, “The explosive use of computers has created a high demand for specialists to provide advice to users, as well as for day-to-day administration, maintenance, and support of computer systems and networks.”
When considering a career in the computer sciences, you should consider colleges and universities that offer a variety of programs under the umbrella of either computer science degrees or information technology degrees, as the terms are interchangeable. Look to see if the school offers just one degree or if they offer several different specializations. Ideally, a school should offer at least three bachelor’s degrees that are more tightly focused, such as Computer Programming, Network Engineering or Database Administration, all of which would fall under Management Information Systems (MIS).
The Department of Labor’s report also recommends that anyone pursuing a computer science degree be sure to pursue ongoing education after a degree is achieved and a job is landed. Because of the rapidly changing face of computing, it’s essential that anyone working in this industry continue to build on his education by getting additional certifications and adding new skills every few years.
Find a college that also offers ongoing certifications that are licensed by leaders in the industry, such as Microsoft’s various programs, Cisco’s CCNA and Net+. Knowing that you can return to your alma mater for continuing education is a great way to ensure that your certification courses will be of the same high caliber as your undergraduate classes.
Outlook is Good for Properly Trained Specialists
The Occupational Outlook Handbook of 2006 is adamant in its belief that there is no end in sight to the increasing need for computer specialists. It lists numerous specific titles that require intense training in particular areas, including:
Computer Systems Analysts
Computer Programmers
Software Engineers/Developers (consistently growing as businesses continue to require new, highly specialized software to suit their needs)
Database Administrators
Computer Support Specialists
Data Communication Analysts/Webmasters (increasingly popular in retail as more businesses open online, virtual storefronts)
Computer Systems Administrators (expected to be one of the fastest growing careers in the next five years)
Cyber Security (a relatively new field that has taken off like a rocket as online terrorism and corporate espionage has increasingly threatened corporate computer systems)
The best computer science degree programs will not only include a wide range of specializations, but will also offer different types of degrees as well. Ideally, a college should offer Associate’s, Bachelor’s and Master’s Degrees along with various types of certification. This will help guarantee that the teaching staff is current on all the latest advancements and also giving you the most educational options. With computer training being in such high demand, you may even find that you can get a great job with one degree and get reimbursement through your employer to pursue a higher-level degree.
With so many reasons to go into the computer sciences and so many highly specialized career options available, pursuing one of the many specialized computer science degrees now offered is a great investment in your future. How to Build a Computer – 13 – Power Supplies
Computers have evolved over the last decade so much that many of us could not imagine life without one. With the advent of the World Wide Web, computers have gone from a tool used primarily for work, to fulfilling a daily function where many of us use them for fun, socializing, and work.
With computer usage so high in this age, we are seeing a need for appropriately designed furniture that best suits the needs and style of your home or office. But which computer desk is right you? With so many options to choose from, it could be a difficult question to answer. This article details the different types of computer desks, and factors to consider when purchasing one. After reading this article, making your decision as to which desk to purchase should be a simple and fun experience.
Before you Begin:
Before stepping out of your house or hopping on the internet to find a computer desk, consider the following factors:
- The dimensions of the room the desk will go in.
- Aside from the computer and monitor, what other peripherals are there, such as printers, speakers.
- Where are the power sources located in your room?
- Who will be using the computer most often? Are they left or right handed?
- Will you need hutches, bookcases, filing cabinets, or other furniture to go with your computer desk?
Answer these questions and any others unique to your situation, and then you’ll be ready to shop.
Types of Computer Desks:
Now that you have a good understanding of your needs and wants regarding your computer desk, it is time to get familiar with the different types you may find.
Standard Desks:
- Standard desks are usually 29 to 31 inches high, built for someone of average height. Most will have a sliding keyboard shelf, and some may or may not have storage drawers. When selecting a standard desk, keep in mind any additional features you may want to include in the future.
Executive Desks:
- Executive Desks are more elaborate in detail and feature wider desk tops when compared to Standard desks. However, similar to standard desks, Executive desks are 29 to 31 inches high. Executive desk tends to be available in richer finishes, and regularly includes front drawers, and panel doors.
L-Shaped Desks:
- L-shaped desks are composed of two units that form the shape of an L. L-shaped computer desks are perfect for placing in corners, thus taking up less floor space than standard or executive desks. L-shaped desks are very popular because everything you need tends to be within arm’s reach.
U-Shaped Desks:
- U-shaped desks are made of three basic components: a Credenza and two desks flanked on each side. These desks are very ideal for people who need the extra workspace. However, U-shaped desks tend to take up the most floor space.
The above are the basic types of computer desks you may see during your search. However, it doesn’t end there, as there are other factors you may want to consider. For example, you will need a hutch for your computer desk? Adding a hutch allows you to build up rather than out. This will save a lot of floor space, especially if you’re planning on purchasing a U-shaped desk. Many computer desks will also have a complimenting hutch with the desk; usually sold separately. You should purchase the hutch at the same time as the desk, since it could be difficult to find a matching hutch in the future. You may also save money by buying an entire set or kit at the same, proving to be more economical in the long run.
Another option you may want to consider is a Computer Cart. Computer Carts are smaller desks with casters for added mobility. Carts are ideal for those who are looking to save space in their home or office, and may need to move the workstation from time to time.
Finally, consider an ergonomic Office Chair for your workstation or Computer Desk. Ergonomic Office Chairs can reduce strain on your back, which goes a long way when you spend endless hours a day by your computer.
These are the main types of computer desks you may see and the factors to consider when purchasing your computer desk. Hopefully this article has helped you understand what type of desk you are looking for, and will help you make your decision a simple and easy one.
Q.M. Le
This video talks about the potential emergency situations in the workplace. It emphasizes that workers should be trained to handle emergencies and should periodically be tested.
Chapter-1
Introduction:-
Client/Server is one of the computer Industries newest and hottest buzzwords. There is no generic definition of client/server as it is used to depist number of nature, developing, and anticipateologies. However the general idea is that clients and servers are separate logical entities that work together Attention over a network to accomplish a task.
Client-server is very fashionable. As such, it might be just a temporary fad; but there is general recognition that it is something fundamental and far-reaching; for example, the Gartner Group, who are leading industry analysts in this field, have predicted that
“By 1995 client-server will be a synonym for computing.”
Most of the initial client/server success stories involve small-scale applications that provide direct or indirect access to transactional data in legacy systems. The business need to provide data access to decision makers, the relative immaturity of client/server tools and technology, the evolving use of wide area networks and the lack of client/server expertise make these attractive yet low risk pilot ventures. As organizations move up the learning curve from these small-scale projects towards mission-critical applications, there is a corresponding increase in performance expectations, uptime requirements and in the need to remain both flexible and scalable. In such a demanding scenario, the choice and implementation of appropriate architecture becomes critical. In fact one of the fundamental questions that How to Build a Custom PC Computer : Installing the CPU
practitioners have to contend with at the start of every client/server project is – “Which architecture is more suitable for this project – Two Tier or Three Tier?”. Interestingly, 17% of all mission-critical client/server applications are three tiered and the trend is growing, according to Standish Group International, Inc., a market research firm.
Architecture affects all aspects of software design and engineering. The architect considers the complexity of the application, the level of integration and interfacing required, the number of users, their geographical dispersion, the nature of networks and the overall transactional needs of the application before deciding on the type of architecture. An inappropriate architectural design or a flawed implementation could result in horrendous response times. The choice of architecture also affects the development time and the future flexibility and maintenance of the application. Current literature does not adequately address all these aspects of client/server architecture. This paper defines the basic concepts of client/server architecture, describes the two tier and three tier architectures and analyzes their respective benefits and limitations. Differences in development efforts, flexibility and ease of reuse are also compared in order to aid further in the choice of appropriate architecture for any given project.
Chapter-2
History & defintion:-
History
The University of Waterloo implemented Oracle Government Financials (OGF) in May of 1996. That moved UW’s core accounting systems to a vendor-supported package on a Solaris/Unix environment and away from locally developed package(s) on IBM/VM. Plans at that time were to move more (if not all) business systems to a single vendor and to standardize on a single Data Base platform (Oracle for both). A very large state of the art Solaris system was purchased with the intention of co-locating these other Oracle supplied services on the same system with the OGF. Network security architecture was planned that involved isolating administrative networks, fire walling those networks with protocol filters and active traffic monitoring. Systems were purchased and deployed to implement that security architecture.
Much has changed in the interim. While the OGF now includes more services beyond the 1996 suite the plans to move all business systems has failed. Notably, we require People Soft/HRMS (Human Resources Management System) for Payroll (deployed in fourth quarter 1998) with People Soft/SIS (Student Information Services) to follow some years hence—Oracle was unable to deliver these key components for our business. Also we’ve discovered, while it’s reasonable to require Oracle as the Data Base when other applications are specified, it’s unreasonable to expect that they will be certified with the same versions of the Oracle Data Base and/or the underlying operating system. Technology changes quickly too: the state of the art Solaris system is no longer current. Networks were restructured to isolate administrative systems in the “Red Room” and administrative users throughout the campus. However, the administrative firewall and active traffic monitor was never implemented – recently it’s been dismantled.
Definition:
Despite the massive press coverage of client/server computing, there is much confusion around defining what client/server really is. Client and server are software and not hardware entities. In its most fundamental form, client/server involves a software entity (client) making a specific request, which is fulfilled, by another software entity (server). Figure 1 illustrates the client/server exchange. The client process sends a request to the server. The server interprets the message and then attempts to fulfill the request. In order to fulfill the request, the server may have to refer to a knowledge source (database), process data (perform calculations), control a peripheral, or make an additional request of another server. In much architecture, a client can make requests of multiple servers and a server can service multiple clients.
Figure 1 – Client/Server Transactions
It is important to understand that the relationship between client and server is a command/control relationship. In any given exchange, the client initiates the request and the server responds accordingly. A server cannot initiate dialog with clients. Since the client and server are software entities they can be located on any appropriate hardware. A client process, for instance, could be resident on a network server hardware, and request data from a server process running on another server hardware or even on a PC. In another scenario, the client and server processes can be located on the same physical hardware box. In fact, in the prototyping stage, a developer may choose to have both the presentation client and the database server on the same PC hardware. The server can later be migrated (distributed) to a larger system for further pre-production testing after the bulk of the application logic and data structure development is complete.
Although the client and server can be located on the same machine, this paper is concerned primarily with architectures used to create distributed applications, i.e. those where the client and server are on separate physical devices. According to Beaver (et al.), a distributed application consists of separate parts that execute on different nodes of the network and cooperate in order to achieve a common goal. The supporting infrastructure should also render the inherent complexity of distributed processing invisible to the end-user. The client in client/server architecture does not have to sport a graphical user interface (GUI), however, the mass-commercialization of client/server has come about in large part due to the proliferation of GUI clients. Some client/server systems support highly specific functions such as print spooling (i.e. network print queues) or presentation services (i.e. X-Window). While these special purpose implementations are important, this paper is predominantly concerned with the distributed client/server architectures that demand flexibility in functionality
Chapter-3
Meaning of client-server:-
Business meaning of client-server:-
Client-server is generally perceived to be the next step forward in the operational effectiveness of business information systems. This is illustrated in figure 1, which indicates cumulative gains from a succession of innovations.
Business computing started in the 1960s with batch processing. The main innovation in the 1970s was on-line transaction processing (OLTP), which brought information technology (IT) to the desktop, and made it an integral part of business processes. Batch processing and OLTP in combination continue to be at the core of most enterprise’s information systems. Then in the 1980s came personal computing, which made IT universally affordable and dispersed it throughout business enterprises. Now in the 1990s, client-server is generally perceived to be the way of integrating the separate parts of information systems back together. That is its role and its importance.
Figure 1 Perceived business impact of client-server
In these circumstances client-server (or client/server) has become a popular brand name that is applied to almost every kind of product, and to all manner of business and technical insights and marketing messages. This tends to drain it of specific meaning; but in doing so, actually confirms its near-universal applicability.
Technical meaning of client-server:-
A useful starting point for understanding client-server is the informal definition used by the Gartner Group:
“Client-server is the splitting of an application into tasks that are performed on separate computers, one of which is a programmable workstation (e.g. a PC).”
This definition says that client-server is about distributed computing and software architecture (applications are split into tasks that may be on separate computers). It echoes the vital point that client-server is the way to integrate PCs into all kinds of information systems.
Three Generations of Messaging:
Host Based architecture (not a client/server architecture):
With mainframe software architectures all intelligence is within the central host computer. Users interact with the host through a terminal that captures keystrokes and sends that information to the host. Mainframe software architectures are not tied to a hardware platform. User interaction can be done using PCs and UNIX workstations. A limitation of mainframe software architectures is that they do not easily support graphical user interfaces or access to multiple databases from geographically dispersed sites. In the last few years, mainframes have found a new use as a server in distributed client/server architectures
Lan File sharing architecture (not a client/server architecture):-
The original PC networks were based on file sharing architectures, where the server downloads files from the shared location to the desktop environment. The requested user job is then run (including logic and data) in the desktop environment. File sharing architectures work if shared usage is low, update contention is low, and the volume of data to be transferred is low. In the 1990s, PC LAN (local area network) computing changed because the capacity of the file sharing was strained as the number of online user grew (it can only satisfy about 12 users simultaneously) and graphical user interfaces (GUIs) became popular (making mainframe and terminal displays appear out of date). PCs are now being used in client/server architectures
Internet Client Server Architecture:-
The goal for this class is to build a base of background knowledge that will underlie the rest of the course.
In many areas of technology, one gets the impression that the technology as always existed in its current form. But, of course, technology has a history just like any other natural or unnatural phenomenon. So it is for the Internet and the Worldwide Web. During this discussion, we will look first at some of the important developments that have taken- place over the past thirty years that have made the Internet what it is today. After reviewing this chronology, we will look at two of the underlying technologies that support the Internet. The first is Ethernet, the original local area network (LAN) technology and still one of the most prevalent communication systems used to connect computers that are within a few hundred yards of one another. The second is TCP/IP, the software standard that enables computers located around the world to direct messages to one another and to communicate reliably.
After discussing the Internet, we will then turn our attention to the World Wide Web, itself. The discussion begins with a review of its basic client/server architecture, in which a client program running on one computer communicates with a server program running on another to request some particular information or that some service is performed. The Web was built using a client/server architecture in which a Web browser (client) communicates with various web servers to request pages of information or that a program be run through the server’s Common Gateway Interface (CGI). As the Internet/WWW becomes a more general computing and communications infrastructure, this strict client/server relationship is being expanded. One such expansion involves Java. More about these recent developments later in the course, but for now, we will concentrate on the Web’s classic client/server design.
The language Web clients and servers speak to one another is called HTTP (Hypertext Transfer Protocol). You will not have to learn HTTP in detail, but you will have to construct basic HTTP messages in order to do CGI programming and you should understand its underlying philosophy and its basic form and capabilities.
Chapter-4
Process:-
Client Process:-
The client is a process (program) that sends a message to a server process (program), requesting that the server perform a task (service). Client programs usually manage the user-interface portion of the application, validate data entered by the user, dispatch requests to server programs, and sometimes execute business logic. The client-based
Process is the front- end of the application that the user sees and interacts with. The client process contains solution-specific logic and provides the interface between the user and the rest of the application system. The client process also manages the local resources that the user interacts with such as the monitor, keyboard, workstation CPU and peripherals. One of the key elements of a client workstation is the graphical user interface (GUI). Normally a part of operating system i.e. the window manager detects user actions, manages the windows on the display and displays the data in the windows.
Server Process:-
A server process (program) fulfills the client request by performing the task requested. Server programs generally receive requests from client programs, execute database retrieval and updates, manage data integrity and dispatch responses to client requests. Sometimes server programs execute common or complex business logic. The server-based process “may” run on another machine on the network. This server could be the host operating system or network file server; the server is then provided both file system services and application services. Or in some cases, another desktop machine provides the application services. The server process acts as a software engine that manages shared resources such as databases, printers, communication links, or high powered-processors. The server process performs the back-end tasks that are common to similar applications.
Client-Server Computing:-
• Single client, single server
• Multiple clients, single server
Client/server is a computational architecture that involves client processes requesting service from server processes Client/server computing is the logical extension of modular programming. Modular programming has as its fundamental assumption that separation of a large piece of software into its constituent parts (”modules”) creates the possibility for easier development and better maintainability. Client/server computing takes this a step farther by recognizing that those modules need not all be executed within the same memory space. With this architecture, the calling module becomes the “client” (that which requests a service), and the called module becomes the “server” (that which provides the service). The logical extension of this is to have clients and servers running on the appropriate hardware and software platforms for their functions. For example, database management system servers running on platforms specially designed and configured to perform queries, or file servers running on platforms with special elements for managing files.
Network Computing Architecture:-
Oracle’s Network Computing Architecture (NCA) can be captured by three concepts:
1.The World Wide Web is a truly ubiquitous service.
2.The Java Virtual Machine is (or will soon become) a truly ubiquitous service embedded within the Web-browser.
3.A three-tiered model for application delivery with an Oracle Data Base engine (on a large Unix server), a light weight Java application on the client, and a mid-tier “forms” server to provide the gateway between the two.
Oracle began shipping Release 10.7 NCA (the web-deployed applications) in January 1998…. 2000 require
With Release 10.7 NCA, Oracle responded to customer feedback on the difficulty of patching in Smart Client. Although the functionality is the same between 10 SC and 10 NCA, Oracle returned in the web-deployed release to a more granular patching strategy. This strategy also better preserves customizations. Since the forms technology runs on the server in the web-deployed release, relining and regenerating after applying patches is now easier. Due to the differences in patching strategy, Oracle recommends customers not use Smart Client and Release 10.7 NCA in the same instance. Oracle will not support such a configuration. Customerncharactermode installations should migrate directly to the web-deployed release
chapter-5
Client-Server Technology:-
Client-server technology is best understood if we discuss it in four areas:
1.Personal platforms
2.Server platforms
3.Client-server middleware
4.Client-server tools and services
Each of these areas is distinctive, although there can be overlap between them.
The term platform is used here to refer to a computer platform that is a complete combination of hardware and operating system software.
Personal platforms:-
Personal platforms are perhaps the most distinctive area of client-server technology. We define a personal platform as:
A computer platform, which is connected to a network, provides a consistent and intuitive user interface and assisting a personal user to accomplish tasks on behalf of the enterprise.
These characteristics are illustrated in figure 2. Personal platforms are relatively inexpensive and immensely powerful, and there is a wide choice of suppliers. Many different kinds of computers can be personal platforms (e.g. MS/DOS PC, Windows PC, OS/2 PC, UNIX workstation, Apple Macintosh, and various hand-held devices); but the most common case today is an IBM-compatible PC with the Microsoft Windows operating system.
Such platforms are now universally affordable wherever they are needed. This has turned the architecture of computer systems inside out: the old focus was scarce resources in the central machine, remote from its users; the new focus is the abundant personal resources now at the fingertips of each individual user. This trend has ever-increasing force, because PC price/performance ratios continue to improve by a factor of two every eighteen months or so.
This change of focus aligns with changes in business structure: organizational hierarchies are being flattened, decision-making authority is being devolved, and IT-enabled processes can now provide processes that were formerly provided by office staff. A combined effect of these business and technical trends is personal empowerment of the individual at the desk.
PCs provide personal productivity and independence, but this individuality, multiplied by huge numbers of PCs, can also create anarchy. Client-server helps to resolve these problems. The client’s use shared resources (provided on server platforms), not just personal resources; client-server structure enables all the software and hardware resources to be under architectural and management control. It transforms personal computing into inter-personal computing and enterprise-wide computing. These characteristics help to create order, workgroup cohesion, productivity, and flexibility of business process.
Although personal platforms are the main economic and technical driving force for the move to client-server, they are only the first of the five technical ingredients identified at the start of section 2.
Server Platforms:-
We define a server platform as:
A computer platform on which software provides IT services for use elsewhere in the system.
Ultimately the services are for use at personal platforms; but services are also provided for use at other server platforms. A server platform may provide services via dependent terminals that do not qualify as personal platforms.
Almost all kinds of computer platform can act as server platforms. Therefore, there are many different suppliers, and many possible kinds of server platforms, from super computers to PCs. Each is good for particular kinds of workloads, for different qualitative requirements, and in different areas of the price and performance spectrum. User enterprises can select different platforms to match different needs.
This breadth of choice is illustrated in figure 3, which shows that the user at a personal platform may have access to services on many server platforms. This also illustrates the shift of focus onto the individual user at a personal platform, who may now choose IT services from many different sources elsewhere in the computer network.
The polarization of systems into client and server platforms recognizes distinctions between personal and shared resources. Each personal platform is an independent personal resource, which may be mobile and is exposed to risks of accidental loss or damage. Conversely, a server platform provides a protected, fixed, and carefully managed environment for shared resources.
Figure 3 many server platforms to choose from
Even where the same technology is used for client and server platforms (e.g. PCs with the same kind of hardware and operating system), these distinctions between personal and shared resources should be made. In the limit, the same machine may be both a personal platform and a server platform (e.g. in a peer-to-peer network; see 3.2). As always, the server role brings obligations to guarantee availability and integrity of the shared resources.
Client-Server middleware:-
We define client-server middleware as:
Packaged software to support the separate parts of client-server application software and enable them to work together.
This is by far the most complex area of client-server technology. By concentrating the complexity here we are able to keep the other areas relatively simple. It includes many kinds of function, each of which may itself be distributed, and most of which are inter-related. Some of the main areas are:
• Networking services
• Distributed application services
• Distributed systems management
• Distributed security
• Distributed object management
• User interface management
• Print management
• Data management
• Transaction management
• Workflow management
Figure 4 is a symbolic representation of this middleware support for client-server application software. It emphasizes the importance of middleware in enabling client-server technology to operate across the whole business scope relevant to the user’s tasks. This may involve interaction across departmental and functional boundaries, and perhaps across enterprise boundaries.
Figure 4 Client-server middleware
Client-Server tools and services:-
Client-server systems may be complex, but with well-integrated systems and well-designed user interfaces the technical complexity should not be visible to the user; it is essentially a problem for the application developer and service provider. They need software development tools and professional services to help manage and hide this complexity. Many of the tools and services needed are the same as always, but there are also needs specific to client-server systems.
An important general point is that for packaged (”shrink-wrapped”) application software, the user enterprise does not need program construction tools. Packaged client-server application products are now becoming widely available (e.g. distributed office and groupware applications, business accounting applications, personnel and payroll applications).
Another important trend is that different tools (and languages) are needed for different parts of modular application systems. The main distinctions are:
• User interface: languages and tools for construction of graphical user interfaces and any application logic intimately associated with them; e.g. GUI tools and Visual Basic.
• Database: languages and tools for the construction of databases, file systems and object stores, and construction of the application logic intimately associated with them; e.g. Data Manipulation Languages and Relational Database 4GLs.
• Business logic: languages and tools for the construction of application logic that is logically separate from user interfaces and databases; e.g. COBOL.
• Distributed processing: languages and tools specialized for distributed processing, and for spanning all the above functional areas (and other technological and organizational boundaries); e.g. Remote Procedure Call (RPC) tools.
• System management: methods and tools for electronic distribution of software, and operation and tuning of client-server systems.
Most of these tools are associated with the corresponding areas of middleware.
Chapter-6
Client-Server architecture:-
By looking back over the technology described in the previous section, three kinds of client-server architecture can be discerned.
Basic client-server:-
In basic client-server architecture, a personal or centralized application is split into two parts: a client part on a personal platform, and a server part on a server platform. The latter is often a shared resource, such as a filing service, a printing service, a database, or some application-specific function. The terms client and server are used to refer to the hardware platforms and the application software components (often somewhat ambiguously).
Basic client-server architecture is illustrated in figure 9 (and has already been shown in more detail in figure 6).
Figure 9 Basic client-server architecture
Basic client-server configurations are normally organized around a local area network (LAN). The whole assembly is usually described as a PC-LAN, and consists of many PCs for personal use (personal platforms), plus one or more shared PCs (server platforms). The local server platforms on these PC-LANs usually provide gateways into enterprise-wide and external networks, and to the servers on them. This is illustrated in figure 10.
Figure 10 a typical PC-LAN
Although primarily expressed in terms of PCs and PC-LANs, these basic client-server concepts are applicable to all kinds of computers and networks (e.g. PCs, UNIX, mainframes, LANs and WANs).
Beyond the basics:-
Beyond basic client-server there is peer-to-peer processing, co-operative processing and standalone processing.
The term peer-to-peer processing is used to refer to configurations in which there are no server platforms, and the server parts of applications are located on personal platforms. Networks operating on this basis are referred to as peer-to-peer networks. This is a low-cost way of implementing small PC-LANs, etc.; but the lack of separate server platforms reduces system integrity and leads to system management difficulties.
The term co-operative processing is used to refer to configurations in which application software is distributed over separate server platforms, and the client and server ends of interactions are both on server platforms. This includes interaction between separate applications, not just between parts of the same application.
The term stand-alone processing is used to refer to configurations in which all parts of an application are on one platform (usually a personal platform). Any client-server relationships between the parts are not externally visible.
People also use the terms peer-to-peer and co-operative processing interchangeably, and with various other meanings. This causes confusion and misunderstandings. There are also various other less well-known formulations such as server/requester and producer/consumer. All the main formulations are illustrated together in figure 11.
Figure 11 various formulations of client-server system structure
Unfortunately, many people sharply differentiate the other concepts from client-server (by which they really mean basic client-server). This obscures the vital point that all are variants within one unified structure: client-server architecture. It also leads to misleading statements to the effect that client-server (meaning basic client-server) is defunct, and is being superseded by other techniques such as co-operative processing.
General client-server architecture:-
A fundamental limitation of basic client-server and of all the formulations in 3.1 and 3.2 is that they define software configuration in ways dependent on hardware configuration. Furthermore, it is often ambiguous whether the terms client and server refer to the software or the hardware.
To escape from these limitations and ambiguities, client-server relationship in software should be defined independently of software location, and independently of any classification of the underlying hardware as clients or servers.
The essential clarification is that client and server are roles in which services are used and provided (respectively), and these roles occur in a relationship between autonomous building blocks. In such a relationship, one of the participants uses a service (it has the client role) and another provides the service (it has the server role). This is a client-server relationship. Large and flexible configurations can be built up by combination of these simple concepts. This is illustrated in figure 12.
Figure 12 Principles of client-server architecture
As indicated in the right hand side of the diagram, a building block may be both user and provider of services. Therefore, it may have client and server roles and may participate in many client-server relationships with other building blocks. It is client or server only in the context of the particular relationship considered.
The realization of client-server architecture in software is via programming languages and middleware (not shown in figure 12). The physical realization of client-server architecture consists of networks of separate computers; consequently the term client-server tends to become a synonym for distributed processing.
Client-server architecture is only incidentally about PCs, or use of any other particular kind of technology. However, in current circumstances, it is usually appropriate that client-server is viewed mainly in terms of exploiting PC technology (as in the Gartner definition which we started with in 1.2 above).
This general form of client-server architecture (autonomous building-blocks, client-server relationships, client role, server role) is a fundamental ingredient of OPEN framework application architecture.
Assumptions:-
1.One client is connected to at most one server at a time. [The customer later refuted this assumption.]
2.Replication is a secondary effect of the existing fat-client architecture; we assume that updates to one server are automatically propagated in a timely fashion.
3.A single client may have more than one session. [Replaced Assumption 1.]
4.All calculated columns (columns that represent behavior rather than aspects) are easily & quickly calculated on the server.
5.Deletion or insertion of a row forces a window update on the client.
6.Transmission of client-server traffic is out of scope.
chapter-7
Architecture Types:-
When considering a move to client/server computing, whether it is to replace existing systems or introduce entirely new systems, practitioners must determine which type of architecture they intend to use. The vast majority of end user applications consist of three components: presentation, processing, and data. The client/server architectures can be defined by how these components are split up among software entities and distributed on a network. There are a variety of ways for dividing these resources and implementing client/server architectures. This paper will focus on the most popular forms of implementation of two-tier and three-tier client/server computing systems.
Two-tier Architecture:-
Although there are several ways to architect a two-tier client/server system, we will focus on examining what is overwhelmingly the most common implementation. In this implementation, the three components of an application (presentation, processing, and data) are divided between two software entities (tiers): client application code and database server (Figure 2). A robust client application development language and a versatile mechanism for transmitting client requests to the server are essential for a two-tier implementation. Presentation is handled exclusively by the client, processing is split between client and server, and data is stored on and accessed via the server. The PC client assumes the bulk of responsibility for application (functionality) logic with respect to the processing component, while the database engine – with its attendant integrity checks, query capabilities and central repository functions – handles data intensive tasks. In a data access topology, a data engine would process requests sent from the clients. Currently, the language used in these requests is most typically a form of SQL. Sending SQL from client to server requires a tight linkage between the two layers. To send the SQL the client must know the syntax of the server or have this translated via an API (Application Program Interface). It must also know the location of the server, how the data is organized, and how the data is named. The request may take advantage of logic stored and processed on the server, which would centralize global tasks such as validation, data integrity, and security. Data returned to the client can be manipulated at the client level for further sub selection, business modeling, “what if” analysis, reporting, etc.
Figure 2 – Data Access Topology for two-tier architecture. Majority of functional logic exists at the client level
The most compelling advantage of a two-tier environment is application development speed. In most cases a two-tier system can be developed in a small fraction of the time it would take to code a comparable but less flexible legacy system. Using any one of a growing number of PC-based tools, a single developer can model data and populate a database on a remote server, paint a user interface, create a client with application logic, and include data access routines. Most two-tier tools are also extremely robust. These environments support a variety of data structures, including a number of built in procedures and functions, and insulate developers from many of the more mundane aspects of programming such as memory management. Finally these tools also lend themselves well to iterative prototyping and rapid application development (RAD) techniques, which can be used to ensure that the requirements of the users are accurately and completely met.
Tools for developing two-tier client/server systems have allowed many IS organizations to attack their applications backlog, satisfying pent-up user demand by rapidly developing and deploying what are primarily smaller workgroup-based solutions. Two-tier architectures work well in relatively homogeneous environments with fairly static business rules. This architecture is less suited for dispersed, heterogeneous environments with rapidly changing rules. As such, relatively few IS organizations are using two-tier client/server architectures to provide cross-departmental or cross-platform enterprise-wide solutions
Since the bulk of application logic exists on the PC client, the two-tier architecture faces a number of potential version control and application re-distribution problems. A change in business rules would require a change to the client logic in each application in a corporation’s portfolio, which is affected, by the change. Modified clients would have to be re-distributed through the network – a potentially difficult task given the current lack of robust PC version control software and problems associated with upgrading PCs that are turned off or not “docked” to the network.
System security in the two-tier environment can be complicated since a user may require a separate password for each SQL server accessed. The proliferation of end-user query tools can also compromise database server security. The overwhelming majority of client/server applications developed today are designed without sophisticated middleware technologies, which offer increased security. Instead, end-users are provided a password, which gives them access to a database. In many cases this same password can be used to access the database with data-access tools available in most commercial PC spreadsheet and database packages. Using such a tool, a user may be able to access otherwise hidden fields or tables and possibly corrupt data.
Client tools and the SQL middleware used in two-tier environments are also highly proprietary and the PC tools market is extremely volatile. The client/server tools market seems to be changing at an increasingly unstable rate. In 1994, the leading client/server tool developer was purchased by a large database firm, raising concern about the manufacturer’s ability to continue to work cooperatively with RDBMS vendors, which compete with the parent company’s products. The number two-tool maker lost millions and has been labeled as a takeover target. A firm also in the midst of severe financial difficulties and management transition supplies the tool, which has received some of the brightest accolades in early 1995. This kind of volatility raises questions about the long-term viability of any proprietary tool an organization may commit to. All of this complicates implementation of two-tier systems – migration from one proprietary technology to another would require a firm to scrap much of its investment in application code since none of this code is portable from one tool to the next.
Three tier:-
Most sophisticated Web based applications, which involve data entry, are based on a 3 tier client server architecture. The 3 tiers are
• The Client (Web Browser)
• The Web Server/Application Server
• The Database Server
The tree tier architecture (Figure 3) attempts to overcome some of the limitations of the two-tier scheme by separating presentation, processing, and data into separate, distinct software entities (tiers). The same types of tools can be used for presentation as were used in a two-tier environment, however these tools are now dedicated to handling just the presentation. When the presentation client requires calculations or data access, a call is made to a middle tier functionality server. This tier can perform calculations or can make requests as a client to additional servers. The middle tier servers are typically coded in a highly portable, non-proprietary language such as C. Middle-tier functionality servers may be multi-threaded and can be accessed by multiple clients, even those from separate applications.
Although three-tier systems can be implemented using a variety of technologies, the calling mechanism from client to server in such as system is most typically the remote procedure call or RPC. Since the bulk of two-tier implementations involve SQL messaging and most three-tier systems utilize RPCs, it is reasonable to examine the merits of these respective request/response mechanisms in a discussion of architectures. RPC calls from presentation client to middle-tier server provide greater overall system flexibility than the SQL calls made by clients in the two-tier architecture. This is because in an RPC, the requesting client simply passes parameters needed for the request and specifies a data structure to accept returned values (if any). Unlike most two-tier implementations, the three-tier presentation client is not required to “speak” SQL. As such, the organization, names, or even the overall structure of the back-end data can be changed without requiring changes to PC-based presentation clients. Since SQL is no longer required, data can be organized hierarchically, relationally, or in object format. This added flexibility can allow a firm to access legacy data and simplifies the introduction of new database technologies.
Figure 3 – Three-Tier Architecture. Functionality servers handle most of the logic processing. Middle-tier code can be accessed and utilized by multiple clients
In addition to the openness stated above, several other advantages are presented by this architecture. Having separate software entities can allow for the parallel development of individual tiers by application specialists. It should be noted that the skill sets required to develop c/s applications differ significantly from those needed to develop mainframe-based character systems. As examples, user interface creation requires an appreciation for platform and corporate UI standards and database design requires a commitment to and understanding of the enterprise’s data model. Having experts focus on each of these three layers can increase the overall quality of the final application.
The three-tier architecture also provides for more flexible resource allocation. Middle-tier functionality servers are highly portable and can be dynamically allocated and shifted as the needs of the organization change. Network traffic can potentially be reduced by having functionality servers strip data to the precise structure required before distributing it to individual clients at the LAN level. Multiple server requests and complex data access can emanate from the middle tier instead of the client, further decreasing traffic. Also, since PC clients are now dedicated to just presentation, memory and disk storage requirements for PCs will potentially be reduced.
Modularly designed middle tier code modules can be re-used by several applications. Reusable logic can reduce subsequent development efforts, minimize the maintenance workload, and decrease migration costs when switching client applications. In addition, implementation platforms for three tier systems such as OSF/DCE offer a variety of additional features to support distributed application development. These include integrated security, directory and naming services, server monitoring and boot capabilities for supporting dynamic fault-tolerance, and distributed time management for synchronizing systems across networks and separate time zones.
There are of course drawbacks associated with a three-tier architecture. Current tools are relatively immature and require more complex 3GLs for middle tier server generation. Many tools have under-developed facilities for maintaining server libraries – a potential obstacle for simplifying maintenance and promoting code re-use throughout an IS organization. More code in more places also increases the likelihood that a system failure will effect an application so detailed planning with an emphasis on the reduction/elimination of critical-paths is essential. Three tiers brings with it an increased need for network traffic management, server load balancing, and fault tolerance.
For technically strong IS organizations servicing customers with rapidly changing environments, three tier architectures can provide significant long-term gains via increased responsiveness to business climate changes, code reuse, maintainability, and ease of migration to new server platforms and development environments.
Comparing two and three tire development efforts:-
The graphs in Figures 4-6 illustrate the time to deployment for two tiers vs. three tier environments. Time to deployment is forecast in overall systems delivery time, not man-hours. According to a Deloitte & Touche study, rapid application development time is cited as one of the primary reasons firms chose to migrate to client/server architecture. As such, strategic planning and platform decisions require an understanding how development time relates to architecture and how development time changes as an IS organization gains experience in c/s.
Figure 4 – Initial Development Effort
Figure 4 shows the initial development effort forecast to create comparable distributed applications using the common two tier and three tier approaches discussed above. The three tier application takes much longer to develop – this is due primarily to the complexity involved in coding the bulk of the application logic in a lower-level 3GL such as C and the difficulties associated with coordinating multiple independent software modules on disparate platforms. In contrast, the two-tier scheme allows the bulk of the application logic to be developed in a higher-level language within the same tool used to create the user interface.
Figure 5 – Subsequent Development Efforts
Subsequent development efforts may see three-tier applications deployed with greater speed than two tier systems (Figure 5). This is entirely due to the amount of middle-tier code, which can be re-used from previous applications. The speed advantage favoring the three-tier architecture will only result if the three-tier application is able to use a sizable portion of existing logic. Experience indicates that these savings can be significant, particularly in organizations, which require separate but closely related applications for various business units. Re-use is also high for organizations with a strong enterprise data model because data-access code can be written once and re-used whenever similar access needs arise across multiple applications. The degree of development time reduction on subsequent efforts will grow as an organization deploys more c/s applications and develops a significant library of re-usable, middle-tier application logic.
Figure 6 – Client Tool Migration
Figure 6 makes the important case for code savings when migrating from one client development tool to another. It was stated earlier that client tools are highly proprietary and code is not portable between the major vendor packages. The point was also made that the PC tools market is highly volatile with vendor shakeouts and technical “leapfrogging” commonplace. In a two-tier environment, IS organizations wishing to move from one PC-based client development platform to another will have to scrap their previous investment in application logic since most of this logic is written in the language of the proprietary tool. In the three-tier environment this logic is written in a re-usable middle tier, thus when migrating to the new tool, the developer simply has to create the presentation and add RPC calls to the functionality layer.
Flexibility in re-using existing middle-tier code can also assist organizations developing applications for various PC client operating system platforms. Until recently there were very few cross-platform client tool development environments and most of today’s cross-platform solutions are not considered “best-of-breed”. In a three-tier environment separate client tools on separate platforms can access the middle tier functionality layer. Coding application logic once in an accessible middle tier decreases the overall development time on the cross-platform solution and it provides the organization greater flexibility in choosing the best tool on any given platform.
The characteristics of client/server architecture:-
The basic characteristics of client/server architectures are:
1) Combination of a client or front-end portion that interacts with the user, and a server or back-end portion that interacts with the shared resource. The client process contains solution-specific logic and provides the interface between the user and the rest of the application system. The server process acts as a software engine that manages shared resources such as databases, printers, modems, or high-powered processors.
2) The front-end task and back-end task have fundamentally different requirements for computing resources such as processor speeds, memory, disk speeds and capacities, and input/output devices.
3) The environment is typically heterogeneous and multiFinder. The hardware platform and operating system of client and server are not usually the same. Client and server processes communicate through a well-defined set of standard application program interfaces (API’s) and RPC’s.
4) An important characteristic of client-server systems is scalability. They can be scaled horizontally or vertically. Horizontal scaling means adding or removing client workstations with only a slight performance impact. Vertical scaling means migrating to a larger and faster server machine or multiservers.
Client-server applications:-
We define a client-server application as:
An application system in which logically separate software components are integrated together via client-server relationships.
In a client-server relationship, one part of an application (the client end) uses a service provided by the other part (the server end). The latter is often a shared resource, used by many clients. Although integrated together via the client-server relationship, the parts remain separate. We refer to them as being logically separate because they need not be physically remote from one another (they might be in the same computer).
We describe client-server application software here in three steps: splitting an application, joining separate applications together, and distributed application structure
Splitting an application:-
Figure 5 Application software modularity
There are many ways of partitioning application software into separate components. However, the content of most applications can usually be classified under three different technical headings: data management, application logic and presentation. This is illustrated in figure 5.
If the application is to be split into two parts (one part on a client platform, the other on a server platform), the split can be made at either of the two boundaries between functions, or inside one of the three functions. Consequently there are five main ways of splitting a centralized or personal application into two parts between which there is a client-server relationship. This is the basis of the popular classification into five client-server styles, which is promoted by the Gartner Group. It is illustrated in figure 6.
Figure 6 Five generic styles of basic client-server structure
The details need not concern us here. The important point is that different styles suit different needs and circumstances:
• The two styles on the left of the diagram are typical of centralized interactive applications that have been adapted to client-server by means of graphical interface technology, terminal emulation, etc.
• The style in the middle of the diagram is typical of object-oriented distributed applications and distributed TP applications in which data and function are encapsulated together behind application interfaces
• The two styles on the right of the diagram are typical of data-centered applications using client-server 4GL development tools and relational database products
Some applications combine all three areas of function (presentation, application logic and data management) at the personal platform. Also, different styles may occur in combination at the same platform.
Joining applications together:-
One of the great strengths of client-server is the ability to join separate applications together. This can be done in many ways; but upon the principles used in 2.4.1, there are essentially three levels at which applications can interface with one another. This is illustrated in figure 7.
Figure 7 Three levels at which applications can be joined together
The main characteristics and advantages and disadvantages of these three approaches are:
• At presentation level: Interaction at this level is achieved via direct data exchange (DDE) within a window management system, or via scripting; see [Duxbury, 1994], in which software uses an application’s user interface by simulating a human user. This kind of technique is often referred to as screen scraping. It is very useful for accessing legacy applications, but leads to software maintenance problems if the user interfaces need to change.
• At application function level: Interaction at this level is in terms of business functions. Therefore, the inter-application requests are about the business meanings of the application (and not its presentation or database encoding). This has the advantage of keeping their internal designs separate from their external interactions. There are fewer software maintenance problems.
• At data management level: Interaction at this level is by direct access to the other application’s database. This is common practice, but leads to software maintenance problems when application data structures change.
The first and third approaches inhibit potential for change, the second does not. Further distinctions can be made between direct and indirect interaction between applications, synchronous and asynchronous interaction, and externally programmed interaction and internally programmed interaction.
Distributed application structure:-
Distributed applications are evolving towards richly connected network structures of the kind illustrated in figure 8. The circles represent separate software components, and the lines represent client-server relationships between them. This is typical of the kind of structure that results from use of object-oriented design and distributed object management.
Figure 8 Complex distributed application
There is also large-scale structure of distributed application systems (within which the individual client-server relationships occur). Typically, three tiers of application software can be discerned in the large-scale structure:
• Front tier: Application software (and databases) at personal platforms, providing all kinds of application services, using local resources and remote resources. Typically, the platforms are PCs. This tier is where the greatest amount of computer power and of new application software is now being deployed.
• Middle tier: Application software (and databases) at server platforms, providing the back-end of personal applications, shared workgroup services and task-oriented services. Typically, the platforms are UNIX or PC. This tier provides rapid adaptation to business process change, without needing changes to the back tier. It puts boundaries around the turbulence and uncertainty generated in the volatile world at the first tier, where all the users are. It also provides lateral linkage across the enterprise (e.g. electronic mail services).
• Back tier: Application software and databases at server platforms providing corporate information services. These are usually functionally partitioned (e.g. accounts, manufacturing, personnel). Typically, the platforms are mainframes. This tier provides the core of shared and long-lived information assets that everything else depends on. There are strong guarantees of data integrity, and the applications and databases are stable, and their design changes rather slowly.
This structure separates different kinds of concerns, which used to be bundled together in centralized computing
chapter-8
Important of client server:-
Advantages of Client-Server:-
ØPotential of reduced cost
ØImproved performance
ØIncreased security
ØMore GUI application
ØGives people the opportunity to make change for better
ØBetter SW development tools once established
ØExploits existing H/W, S/W configurations
ØMatches distributed business models
ØScalable
ØFlexibility and cost saving
ØFlexibility business modeling
ØMaximum technology component choice
ØEfficient use of computing resources
ØData interchangeability and interoperatability
ØEnhanced data sharing
ØIntegrated services
ØSharing resources among devices platforms
ØLocation independence data and process
ØTechnology revolution
ØFuture technology
ØRelational databases
ØDisadvantages of Client-Server:-
ØHeavy up-front cost
ØInitial performance decline
ØLack of skilled professionals
ØNeed of rewrite a lot of software
ØNeed for retraining user
ØDependability- when the server goes down, operational cases
ØLack of mature tools
ØLack of the scalability-network operating system (e.g. novel NetWare, window NT server) are not very scalable
ØHigher then anticipated costs
ØHarder to build
ØLess stable
ØSusceptible to network load
ØLacking in the specialists
ØDifficult to debug
ØDifficult to test
Client/Server Business Application Architectures:
Traditional applications architectures have been based on function today, to meet the needs of the business an application architecture should reflect the complete range of business requirements.
Therefore, client/server computing demands a three layer view of the
organization.
1 The user interface layer, which implements the functional model
2 The business function layer, which implements the process model
3 The data layer, which implements the information model
It should be noted that this application architecture does not demand multiple hardware platforms, although such technology can be utilised,if the environment is robust and reliable enough and the business is prepared to pay the additional costs associated with workstation and LAN technology.
Business Benefits:
– There is a perceived need for vendor independence. This includes application development methodologies, programming paradigms, products and architectures. – Organization have changed from steep hierarchies to flattened hierarchies – Network management is replacing vertical management – There is a change to team based management – The customer should have a single point of contact for all business with the organization – The customer should deal with the same person over multiple contacts. – The user will perform as much processing as possible during customer contact time – The time required to complete the work will be minimized – There is a need for empowerment of staff and audit trail of actions – Multi-skilled and multi-function teams need access to multiple applications
Different types of servers:-
The simplest form of servers are disk servers and file servers. With a file server, the client passes requests for files or file records over a network to the file server. This form of data service requires large bandwidth and can slow a network with many users down considerably. Traditional LAN computing allows users to share resources, such as data files and peripheral devices, by moving them from standalone PCUs onto a Networked File Server (NFS).
The more advanced form of servers are database servers, transaction server and application servers (Orfali and Harkey 1992). In database servers, clients pass SQL (Structured Query Language) requests as messages to the server and the results of the query are returned over the network. The code that processes the SQL request and the data resides on the server allowing it to use its own processing power to find the requested data, rather than pass all the records back to a client and let it find its own
Data as was the case for the file server. In transaction servers, clients invoke remote procedures that reside on servers, which also contain an SQL database engine. There are procedural statements on the server to execute a group of SQL statements (transactions), which either all succeed or fail as a unit. The applications based on transaction servers are called On-line Transaction Processing (OLTP) and tend to be mission-critical applications, which require 1-3 second response time, 100% of the time and require tight controls over the security and integrity of the database. The communication overhead in this approach is kept to a minimum as the exchange typically consists of a single request/reply (as opposed to multiple SQL statements in database servers). Application servers are not necessarily database centered but are used to server user needs, such as.
Download capabilities from Dow Jones or regulating a electronic mail process. Basing resources on a server allows users to share data, while security and management services, which are also based in the server, ensure data integrity and security.
Special types of Architecture:
IBM’s System Application Architecture:
SAA is a collection of selected software interfaces, conventions, and protocols that are used as a framework for developing consistent, integrated applications across the major IBM computing environments.
Four major components of this architecture are:
– Common User Access (CUA) defines conventions for GUI look and feel.
– Common Programming Interface (CPI) provides languages, tools, and APIs that give applications greater portability and more consistent user interfaces across multiple platforms.
– Common Communication Support (CCS) supports existing communications standards, such as LU 6.2.
– Common Applications, written by IBM, will serve as demonstrations of SAA concepts and make it easy for users to migrate between systems.
APPLE’s VITAL Architecture:-
VITAL provides a way of building information systems constructed from generalize
Click the link below my video to watch this in High Def! Part 3 Here – www.youtube.com Make sure if you want my latest videos and tutorials to subscribe to my channel! Cool video on how to build a PC Computer! visit my website at thenewboston.com
If you are an IT professional looking for computer repair jobs, you are probably wondering where you should start.
There are a lot of different options for someone looking to get into IT repair work and many opportunities for you in the small business space. A big question you probably have is whether or not you should get training first and then look for a job, or the other way around. The answer is really to always be doing both simultaneously.
The following 4 tips can help you balance what you need to find good computer repair jobs while keeping your skills up-to-date.
1. Look to Balance Training and Client Recruitment. In order to find great computer repair jobs, you have to know how to do client recruitment and IT skills development at the same time. You probably can’t afford to take 6 months off just to train, because you won’t be able to pay the bills. Most in your position balance the perpetual challenge of training and obtaining clients simultaneously by devoting a couple of days a month, or a couple of weeks per year, to taking formal classroom training. Others configure in-office computer labs where they can work on testing and training with basic, entry-level server hardware. Planned properly, this can provide cost-effective, hands-on, self-guided training regularly.
2. Find a Partner or Reseller Program to Help You with Training. There are a lot of different partner and reseller programs that will provide discounted software or hardware for you to use internally, to help you build the skills you need to get great computer repair jobs. If you are part of a formal partner program, you will typically get a certain amount of software for your internal use as part of your annual program membership fee. This software can help you keep your technical skills sharp. And because you are running these products internally, you can get proficient conveniently in your spare time before you go out into the field.
3. Know Which Training is Available to You. As someone looking for computer repair jobs, you should be familiar with various operating systems as well as the common software applications you will find in business environments. You also will need to know how to work with computer hardware and set up peripherals such as printers, routers, and other items. You can find courses at a local community college or trade school if you feel you want to learn more about the broad range of technologies in a formal setting.
4. Don’t Get Too Hung Up on Certifications. When you are looking for computer repair jobs in the small business arena, don’t worry too much if you don’t have advanced technical computer skills. You can build skills quickly by just putting a little time each week into self study. A lot of smaller small businesses will actually frown upon a computer repair technician that has too many advanced certifications and will think of that technician as too advanced and expensive to meet their simple needs. As long as you know the basics, you will be well-equipped to get a lot of simple computer repair jobs and start to build a good client list.
In this article, we talked about 4 tips for getting good computer repair jobs in the small business space. Learn more about how you can attract great, steady, high-paying clients and computer repair jobs now at http://www.ComputerRepairJobTips.com
Copyright (C), ComputerRepairJobTips.com, All Rights Reserved.
If you are an IT professional looking for computer repair jobs, you are probably wondering where you should start.
There are a lot of different options for someone looking to get into IT repair work and many opportunities for you in the small business space. A big question you probably have is whether or not you should get training first and then look for a job, or the other way around. The answer is really to always be doing both simultaneously.
The following 4 tips can help you balance what you need to find good computer repair jobs while keeping your skills up-to-date.
1. Look to Balance Training and Client Recruitment. In order to find great computer repair jobs, you have to know how to do client recruitment and IT skills development at the same time. You probably can’t afford to take 6 months off just to train, because you won’t be able to pay the bills. Most in your position balance the perpetual challenge of training and obtaining clients simultaneously by devoti How to Build a Computer – 22 – Installing the PSU
ng a couple of days a month, or a couple of weeks per year, to taking formal classroom training. Others configure in-office computer labs where they can work on testing and training with basic, entry-level server hardware. Planned properly, this can provide cost-effective, hands-on, self-guided training regularly.
2. Find a Partner or Reseller Program to Help You with Training. There are a lot of different partner and reseller programs that will provide discounted software or hardware for you to use internally, to help you build the skills you need to get great computer repair jobs. If you are part of a formal partner program, you will typically get a certain amount of software for your internal use as part of your annual program membership fee. This software can help you keep your technical skills sharp. And because you are running these products internally, you can get proficient conveniently in your spare time before you go out into the field.
3. Know Which Training is Available to You. As someone looking for computer repair jobs, you should be familiar with various operating systems as well as the common software applications you will find in business environments. You also will need to know how to work with computer hardware and set up peripherals such as printers, routers, and other items. You can find courses at a local community college or trade school if you feel you want to learn more about the broad range of technologies in a formal setting.
4. Don’t Get Too Hung Up on Certifications. When you are looking for computer repair jobs in the small business arena, don’t worry too much if you don’t have advanced technical computer skills. You can build skills quickly by just putting a little time each week into self study. A lot of smaller small businesses will actually frown upon a computer repair technician that has too many advanced certifications and will think of that technician as too advanced and expensive to meet their simple needs. As long as you know the basics, you will be well-equipped to get a lot of simple computer repair jobs and start to build a good client list.
In this article, we talked about 4 tips for getting good computer repair jobs in the small business space. Learn more about how you can attract great, steady, high-paying clients and computer repair jobs now at http://www.ComputerRepairJobTips.com
Copyright (C), ComputerRepairJobTips.com, All Rights Reserved.
Eric Schmidt speaks at the Morgan Stanley Technology Conference on March 3, 2009 in San Francisco.
Even experienced vendors and system builders get it wrong with all the tools and support they have. Although in some ways its never been easier to build your own, there have also never been so many choices and therefore pitfalls. A modern computer is a complex system of interdependent components. The performance of all components in the system is often limited by the capability of the least common denominator. In other words, you can’t have a top performance graphics PC by installing the latest graphics card (GPU) without also having a CPU powerful enough to keep the GPU pipelines busy with work, and fast memory within which to work.
With this in mind your approach to the architecture, design and build of computers of any size needs to be the same. Carefully select individual components that you know will all compliment each other and work well together. Then thoroughly test and benchmark your designs to ensure they work as well as you expected them to. The last thing you want is an unexpected crash at a vulnerable time. I’ve taken key snippets out of our own internal build & design process and best practice documentation to help you do your own.
There’s just too much to this subject to do it justice in one article so I’ve split it into two parts which also makes it a little more digestible. In this article we will look at the heart of a PC build with:
The CPU (processor)
The Memory (RAM)
The Motherboard (or main board)
The Power supply (PSU)
In part 2 will continue by looking at the remainder of the PC:
The Storage subsystem (hard disk or HDD)
The Graphics Processor (GPU)
The Case
The Cooling (HSF or heatsink & fan)
Why build your own?
The benefits to you of doing it yourself are:
Pros
You know best what you want and therefore you can build it exactly the way you want it
You can choose exactly the components you want and shop around for the best prices
If you built it you will know how to fix it yourself and might save time in the event something goes wrong
It can be fun!
Cons
If you get any component choices wrong then you might just have to settle for what you ended up with, or, sell it on at a loss
You will get limited support from component retailers in the event of compatibility or stability problems between components
Quality of advice on the best component selection from the retailers is highly variable, and sometimes downright dubious and self serving
You are the designer, builder, installer, tester and support engineer, be ready for the possibility of some long nights and a rough ride with little support
You will spend potentially a lot of time learning a lot of things you might never have wanted to know
Ill just say; drivers, drivers, drivers….
You might have expected me to put price or cost on the list of Pros. I haven’t because generally it just isn’t true any more. There are plenty of machines out there built ready for you to buy that barely cost any more than it would cost if you bought the component parts yourself. If you take labour cost hours into account then it’s a no brainer, just buy it ready built.
Design…Select…Standardise…Optimise and Build…
Assuming I haven’t put you off lets get on with looking at all the component parts and the things you need to be thinking about. For some of the components a bit of history is worthwhile as believe it or not we are living today with the legacy of design and architecture decisions made twenty or more years ago.
The CPU (processor)
The CPU is probably the single most important element of the computer. Everything the computer does is touched by the CPU (Central Processing Unit). Modern processors are made up of millions of transistors networked together to perform instructions set by the operating system and software that runs on your computer. Each instruction it can execute takes a certain number of clock cycles to run through, so for example a 1GHz processor can run a thousand million cycles worth of instructions a second. That sounds a lot, but when you consider that the average application or game now contains millions upon millions of instructions you can see that the processors have their work cut out to keep up with demands. A concept known as Moore’s Law has accurately described an exponential increase in computing performance and power since the early 1970’s. You can be pretty sure that a computer on the market in three years time will be more or less twice as powerful as the equivalent today.
Traditionally therefore the way for processor manufacturers to increase performance was simply to increase the speed of the clock for the processor. That way it could execute more instructions in less time. Hence how the old Intel processors between the 1980s and just a few years ago went up from 5MHz clock speed and 20,000 transistors to the best single core Pentium at 3.8GHz and 55 million transistors in 2006. At this point Intel hit the buffers with the technology with a problem known as silicon junction leakage. Where beyond these clock speeds the semi-conductor technology we currently use simply ceases to function correctly. Primarily due to the large amount of energy leakage around the transistor junction and the heat generated in operation. Hence also why over time CPU heatsinks have got bigger and bigger, and fans more and more powerful, and noisy.
Intel tackled the issue tangentially with the idea of running multiple processors on a single silicon die with the Core 2 Duo and Core 2 Quad technology (see picture right). As the picture above shows this deals with the workload presented by games and applications by processing it in parallel rather than having to do instructions one at a time (known as multi-threading). The multi-core processors until recently were still produced on the 65nm manufacturing process that the last Pentium was fabricated on. Then in Q1 2008 Intel started producing 45nm processors based on new Hafnium Hi-K semi-conductor technology using the same Core 2 designs, codenamed Yorkfield, which runs cooler and more efficiently than the old silicon technology. Now from, Q4 2008 we have a new processor architecture with Nehalem. It has an integrated memory controller and the FSB has gone to be replaced by a much master QPI (Quick path interconnect) and a new socket (LGA1366). By 2010 we should see a new die shrink to 32nm with the Westmere codenamed processors, after that the roadmap gets a bit more vague. See the Intel site for more information.
You need to look closely at both Intel and AMD on processor technology to careful assess how they can best deliver the highest performance computing from the technology roadmap. The new Core i7 and Yorkfield processors together with high performance cooling have raised the bar again in Intel’s favour in (this article being dated Q1 2009) by exceeding 3GHz clock speeds in a quad core machine (33%+ over performance!), and around 4GHz when overclocked. The Core i7 is a big hot CPU with more going on in it than ever before with its built in memory controller so you wont be able to take full advantage of its performance ceiling without efficient and effective cooling technology and delivery of clean stable power to the processor. Mainstream PC’s otherwise typically have a maximum factory clock speed of 3.2GHz.
The Memory
Memory can be a crucial bottleneck to potential performance and is rarely paid much attention at all by main stream system builders. Memory comes in a variety of forms and bandwidths from PC2-3200 to PC3-16000 and up. Where PC2 or PC3 indicates DDR2 or DDR3 memory respectively, and 3200 or 16000 refers to the bandwidth in MB/s. Of course it goes without saying that you should use the highest bandwidth memory you can afford whether in double bus speed DDR2 or quad bus speed DDR3 forms. If you are planning to use your self built PC for video, photography, CAD, 3D graphics or gaming the memory speed does make a difference. However there are a number of other qualities that hugely impact on memory performance and we also take these into careful consideration:
Core clock speed – the speed the memory bus runs at (adjusted for DDR2/3)
Data rate (DDR, DDR2, DDR3) core memory bus speed multiplier
Latency (access cycle delays) – memory can be made to run at higher clock speeds but also with higher latency delays, making it on occasions actually slower than high quality memory running at lower frequencies with lower latencies. For example PC2-6400 memory at 800MHz and latencies of 4-4-3-5 will generally perform better than PC2-8500 at 1066MHz and latencies of 5-5-5-15
A lot of manufacturers currently ship PC’s with memory of PC2-5300 (667MHz) specification with average latencies in standard packages. That’s usually because they have a heap of it in a warehouse to shift. The minimum specification memory you should use is PC2-8500 (1066MHz). With low latencies in an enhanced package for better cooling it can even outperform even some of the faster DDR3 memory. The highest specification memory available often runs ahead of being specified in terms of JDEC standards. If you want to be future proof you should consider some mid range DDR3 memory (say 1600MHz C8).
Clearly you need to make sure you’ve got enough as well. For dual channel boards the minimum to consider ought to be 2GB – 4GB and for triple channel boards (DDR3 only) . Bearing in mind if you are stuck with a 32-bit OS (Windows) you have a practical limit of around 3GB anyway, for 64-bit fill your boots.
The Motherboard (main board)
Critical to good performance between the components of a PC is the motherboard on which it is all installed and interconnected. The motherboard chipset (usually either nVidia or Intel based, known as Northbridge and Southbridge) hosts all the vital interfaces such as the PCI bus (PCIe 2.0, for the graphics and sound cards), the network (USB2, Firewire IEEE1394, WiFi and Ethernet), the storage (IDE, SATA-II, RAID), BIOS configuration, bus clock management, memory controller, hardware management and monitoring, power supply regulation to the CPU and memory. The motherboard chipset dictates which CPU’s it supports, the maximum FSB (front side bus) speed supported, the range of CPU’s supported (by socket such as Intel LGA775, or AMD). Intel’s Nehalem and X58 Chipset has changed all this now that the memory controller has moved off the motherboard and inside the CPU. This unlocks a phenomenal amount of additional memory bandwidth.
A sophisticated BIOS is important to allow fine enough control and monitoring of system components for the high degree of performance tuning required. Due to the compatibility and support dependencies most manufacturers tend to choose fairly mature motherboards and chipsets, perhaps a year or two old. You could choose the low risk approach and do the same thing, or, go high risk and try the bleeding edge technology. Whatever you decide make sure it’s a board that has a reputation for being overclock friendly if that’s what you want to do (you will need flexible Base Clock speeds for Core i7). Make sure it supports the latest CPU’s, high bandwidth storage and PCI bus, highly flexible BIOS and preferably DDR3 high speed memory. However a good DDR2 board is now excellent value for money and can match some DDR3.
Pay careful attention to the PCI express lanes. Every Intel chipset has a set number of total lanes that can be allocated across all the PCIe slots the board designers have chosen to give you. The more lanes a given slot has the faster it can run as they move data to and form the card in parallel. I’ve listed below some of the current main chipsets and how many lanes they provide:
P45 – 16 lanes (2 of PCIe x8)
P55 – 16 lanes (2 of PCIe x8)
X48 – 32 lanes (2 of PCIe x16)
X38 – 32 lanes (2 of PCIe x16)
X58 – 32 lanes (2 of PCIe x16, or 4 of PCIe x8)
nVidia 680 – 46 lanes (2 of PCIe x16, 1 of PCIe x8, 6 of PCIe x1)
nVidia 750 – 32 lanes (2 of PCIe x 16)
nVidia 780 – 48 lanes (2 of PCIe x16, 1 of PCIe x16 (1.0))
nVidia 790 – 48 lanes (2 of PCIe x16, 1 of PCIe x16 (1.0))
If you’re hoping for a smoking big SLI setup you will need as many x16 lane PCIe slots as you can get. At the least aim for a board with 2 PCIe x16 slots then you have an upgrade path if you need it.
The Power supply (PSU)
One of the side effects of delivering more and more power form your PC is that it requires more and more electrical current to function. The power supply is not only critical for the delivery of power, but also the smooth, stable and reliable delivery of power at the instant it is required, transient power. The ATX standard 2.3 dictates what the power supply should be able tot deliver. Its surprising how many big manufacturers commonly used power supplies would fail this basic test. Many mainstream power supplies are also woefully inadequate at 300-400W. When you consider the CPU can draw over 100W, each high power graphics card up to 200W, the multitude of fans and disk drives, PCI adapters, attached USB devices and perhaps a water cooling system. It’s to see how you can soon hit the magic 1kW (1000W) power requirement. It’s surprising just how much power a modern PC with powerful graphics, CPU and storage actually requires.
To give yourself a bit of upgradability headroom you want to be buying 600-800W or more and exceed the ATX standard requirements. Most modern switch mode power supplies are multi-rail as it’s an easier and cheaper design to use. However a single rail at over 100A of current gives your build more flexibility, otherwise you have to be careful which rails you use for what as they all have individual current limits. Not to compromise on noise you should prefer to use power supplies with large 120-140mm fans to increase air flow, and reduce air speed in turn reducing cooling noise.