Writing Mobile Code Essential Software Engineering for Building Mobile Applications [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

Writing Mobile Code Essential Software Engineering for Building Mobile Applications [Electronic resources] - نسخه متنی

Ivo Salmre

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
لیست موضوعات
توضیحات
افزودن یادداشت جدید











Introduction


This chapter provides a conceptual explanation of how the .NET Compact Framework and other managed code runtimes work. Developers building managed-code applications for mobile devices will benefit from having a good model in their heads that explains how their application runs in a managed-code environment. Native code developers will benefit by understanding some of the design strategies used by managed-code runtimes to achieve good performance and space efficiency on mobile devices.

Fundamentally, there are three kinds of software most developers build:

Applications
An application represents a computer program that an end user interacts with. It is something that gets run to serve specific end-user needs or provide services to end users. Application design decisions are based on their utility to the end user. For the purpose of this book, "applications" should be considered graphical applications with rich user interfaces.

Reusable components
Reusable components represent "chunky" pieces of code that developers can use to more quickly compose applications. Design decisions for building components are made with the intent of making the component easily reusable by developers building applications. Technologically, components fall in between applications and frameworks with regard to the level of design formality. Reusable components can either be graphical or "headless," meaning that they lack user interface code. Components tend to be designed to contain a few large primary classes along with smaller classes that support the use of the larger ones. A graphical charting control is a good example of a reusable component. Many different applications can take advantage of a single well-designed charting control. A charting control would likely have one main "chart" class and possibly several smaller peripheral classes that represent chart characteristics such as the data displayed in the chart, information about the chart's axis, and color characteristics of lines on the chart.

Frameworks
Frameworks are formalized, rigorously designed and organized trees of objects. The goal of a framework is to serve as the substrate on top of which applications and components can be built. A great deal of the effort of building a framework goes into thinking about how to logically organize the trees of objects that a framework contains to make sure they represent a consistent whole. This effort is made because frameworks exist to solve problems for the largest number of developers. Frameworks usually consist of a large number of small to mid-sized classes that developers use over and over again to aid them in solving programming problems. Although the line between what is a framework and what is a component is a bit fuzzy, components tend to meet specific application needs, whereas frameworks are more general-purpose sets of design tools. The .NET Compact Framework is an example of a framework.


Actually, the .NET Compact Framework is a bit more than just a framework. It is both a programming framework for use by developers building mobile applications, components, and higher-level frameworks as well as an execution engine that can take compiled applications and run them in a managed execution environment. This execution engine is also commonly referred to as a runtime.

Because the .NET Compact Framework was itself a mobile device software-development project, it is worth understanding the goals and philosophy that governed its design. An understanding of the answers to the following questions will be useful for both developers and software architects:

What kinds of features were chosen and what design decisions were made when designing the .NET Compact Framework?
While sharing many similarities, different mobile device runtimes also have important differences that are based on the usage scenarios that have governed their design. Mobile device runtimes are optimized for small size and efficient execution, but each runtime technology has identified areas in which size and resources have been judiciously traded off for rich functionality. This knowledge will be useful for developers and architects who need to decide what features they need from the mobile runtime they choose to develop on top of whether this is to be the .NET Compact Framework, J2ME, or any other mobile runtime environment.

Specifically, how is the .NET Compact Framework architected?
This will be of interest to developers and architects who want to build frameworks on top of managed runtimes by helping them understand what the key aspects of design for mobile device frameworks are.

What characteristics are important to maximize the performance of applications, components, and frameworks built on top of the .NET Compact Framework?
This is important to anyone writing code that utilizes a managed runtime such as the .NET Compact Framework.



/ 159