Microsoft - ECpE Senior Design

advertisement
Microsoft.NET Peer-to-Peer
Application
Project Plan
Client:
Microsoft Corporation
Team:
Dec01-09
Date Submitted:
March 6th 2001
Team Members:
Kevin Moore
Steven Rysavy
Ben Miller
Faculty Advisor:
Dr. Manimaran
Contact:
Dan Fay, Microsoft
i
Table of Contents:
LIST OF TABLES:............................................................................................... III
LIST OF FIGURES ............................................................................................. IV
ABSTRACT: ......................................................................................................... 1
DEFINITION OF TERMS: ..................................................................................... 2
INTRODUCTION: ................................................................................................. 4
DESIGN REQUIREMENTS: ................................................................................. 6
END-PRODUCT DESCRIPTION .......................................................................... 8
APPROACH AND DESIGN .................................................................................. 9
FINANCIAL BUDGET ........................................................................................ 10
PERSONNEL EFFORT BUDGET ...................................................................... 11
PROJECT SCHEDULE ...................................................................................... 12
PROJECT TEAM INFORMATION...................................................................... 13
SUMMARY ......................................................................................................... 14
ii
List of Tables:
TABLE 1: FINANCIAL BUDGET ...................................................................... 10
TABLE 2: PERSONNEL EFFORT BUDGET .................................................... 11
iii
List of Figures:
FIGURE 1: ICQ …………………………………………………………….………2
FIGURE 2: GANTT CHART………………………………………………………11
iv
Abstract
The objective is to develop an application that serves as an example of the networking
and data functionality of the .NET platform. A peer-to-peer application will be created
that will allow users to connect to each other over the Internet, send text messages, and
share files. The application will be extensible to allow the sharing of a variety of data
types. The code for the application will be written in C#, Microsoft’s new object-oriented
programming language, and will serve as an example of the networking functionality of
.NET. The source code for the application will be well documented and openly shared so
that other programmers may learn from and extend the code base.
1
Definition of Terms
.NET Framework:
A new environment for developing and running all software applications, featuring ease
of development of web-based services, rich standard run-time services available to
components written in a variety of programming languages, and inter-language and intermachine interoperability.
C#:
C# is a simple, modern, object oriented, and type-safe programming language derived
from C and C++. C# (pronounced “C sharp”) is firmly planted in the C and C++ family
tree of languages, and will immediately be familiar to C and C++ programmers. C# aims
to combine the high productivity of Visual Basic with the raw power of C++.
Peer-to-Peer Application:
Peer-to-Peer (P2P) is a class of applications that takes
advantage of resources -- storage, cycles, content, human
presence -- available at the edges of the Internet. Because
accessing these decentralized resources means operating in an
environment of unstable connectivity and unpredictable IP
addresses, P2P nodes must operate outside the DNS system
and have significant or total autonomy from central servers.
Example:
ICQ (I-Seek-You) is a peer-to-peer application of sorts because
it allows users to directly connect to others and send messages
and files. Because ICQ relies on a central server for
authentication, it is not a peer-to-peer application in the strict
sense. The appearance, however, is very similar to a peer-topeer application (Figure 1).
Figure 1: ICQ
TCP/IP:
TCP/IP (Transmission Control Protocol/Internet Protocol) is a
routable protocol, and the IP part of TCP/IP provides the routing capability. In a routable
protocol, all messages contain not only the address of the destination station, but the
address of a destination network as well. This allows TCP/IP messages to be sent to
multiple networks within an organization or around the world, hence its use in the
worldwide Internet (see Internet address). Every client and server in a TCP/IP network
requires an IP address, which is either permanently assigned or dynamically assigned at
startup.
2
DNS
DNS is short for Domain Name Service, an Internet service that translates domain names
into IP addresses.
3
Introduction
General Background
The .NET framework entails a class library that encompasses a rich set of functionality
including robust data and networking components. The C# language was designed to
allow the programmer to leverage the .NET framework to easily create windows
applications.
Peer-to-peer applications have been steadily gaining popularity in recent years.
Messaging programs, such as ICQ and MSN Messenger, and file sharing programs, such
as Napster and Gnutella, are the most prevalent kinds of P2P applications and used by
millions of people everyday.
The goal of this project is to create a peer-to-peer application that utilizes the .NET
framework. This application will serve as an example of the networking and data
functionality of the .NET framework. Source code and documentation will be made
freely available.
Technical Problem
The objective of this project is to develop a peer-to-peer application that leverages the
.NET framework. The application itself will allow text messages to be sent among clients
in a server-less environment. The exchange of other data, including images, music, and
other files will be implemented as time and interest permit. The application will be
written in C# and will use the networking and data functionality of the .NET framework.
The source code will be well documented to aid other developers in creating similar
programs.
Operating Environment
The application will run on any operating system that has the .NET runtime. Currently,
this includes all modern versions of Windows, including Windows CE. Because this is a
networked application, the client machines will also require a TCP/IP network.
Client & Intended Users
The intended users are persons interested in programming within the .NET environment
and those seeking a rich text messaging application.
Assumptions



The .NET framework will be a stable, unchanging base on which to write the
application.
The users are familiar with the operating environment.
Users will know the IP address of other clients.
4
Limitations



Bandwidth and speed of connections may be limited by .NET framework.
Assuring unique identity and finding users might not be possible within a purely
peer-to-peer environment.
Firewalls may limit or deny communication between clients.
5
Design Requirements
Design Objectives
Documented Code
The application’s code will be well documented to (a) allow people to understand how
the application works and (b) help them to understand how to program C# and the .NET
framework.
Clients can connect over TCP/IP network
Two clients can exchange information as long as their IP addresses and/or DNS names
are known.
Each client can connect to multiple clients at one time
A user can be sending data to and receiving data from multiple clients at the same time.
Pure Peer-to-Peer Environment
Clients will be able to communicate with each other in the absence of a centralized
server.
Functional GUI
All of the features of the application will be exposed through an easy-to-understand
graphical user interface.
Functional Requirements
Rich Text Messaging
Connected clients will be able to exchange formatted text with multiple fonts, colors,
sizes, etc.
File Transfer
Allow users to send files from local computers to other clients.
Special Support for File Types
Enhancements for certain file types will be implemented to add functionality. For
instance, a client may generate thumbnails of the images that he would like to share for
other users to browse before the full image is transferred.
Local Message History
A record of all messages sent and receive will be stored on the local computer in a on
XML document that can be viewed within the application
IP Caching
A list of previous connections will be recorded, along with IP addresses.
Design Constraints
Functionality provided by .NET Framework
The base functionality of the application is limited to the classes provided by the .NET
framework. This includes the networking and data classes.
System Resources
The system resources used the application (memory, CPU, etc.) will be on par with
similar client applications.
Connection Resources
6
The client will require that certain network recourses are available. A user that is behind a
firewall, for instance, may not be able to use the application.
No central server
The strict peer-to-peer nature of the application will limit the feature set so many
common features of messaging clients, such as assured uniqueness, may be impossible to
implement.
Measurable Milestones
Milestone 1 (M1)
This milestone encapsulates the base functionality of the client. All features defined in
this milestone must be implemented to meet the core objectives. This represents 40% of
the total project.
 Connect to multiple clients
 Send simple text messages
 Functional Interface
Milestone 2 (M2)
Building upon M1, functionality will be implemented that is common to most modern
chat programs and interfaces will be designed to be easily extended with future
functionally. This represents 45% of the total project.
 Sending of rich text messages
 Send files (push model)
A user will be able to select a file from her local computer and send it to another
user.
 Sharing files (pull model)
A user will be able to select files that another user can browse and download.
Milestone 3 (M3)
Features in M3 are ‘Like to haves’. These are things that are not needed to have a
functional application and can be implemented indiscriminately as time and interest
permit. This represents 15% of the total project.
 Interoperability with other messaging applications and services
 Ability to operate client as a chat room.
7
End-Product Description
The end product will be a robust peer-to-peer messaging client. That will enable text
messaging, file transfer, and other specialized functionality. It will have the ability to
connect and interact with multiple clients concurrently. The most important aspect of the
endeavor is that the source code will be well documented and provide a good example of
the benefits of the .NET framework.
8
Approach and Design
Technical Approaches:
Phased Development
The application will be developed in phases. Each phase will be defined by creating a
fully functional, tested application. By dividing the project into phases, any point will
produce a demonstrable application.
Object-Oriented (OO) Design
The design of the code will follow OO principles. Each section of the application will be
a separate component, allowing us to enhance individual features without breaking
existing code.
Technical Design:
.NET Framework
The application will target the .NET framework for two reasons. First, the main objective
is to highlight the functionality of the .NET framework. Secondly, the framework’s data
and networking classes will simplify development.
C# Programming Language:
The C# programming language was chosen because it is the most robust language that
targets the .NET framework. C-like syntax, object-oriented structure, and native error
handling make it an ideal language for developing client-networked applications.
TCP/IP Network
TCP/IP is the most widely used and accepted network protocol. The pervasiveness of
TCP/IP makes it a logical choice.
Testing Description
Testing will occur during and after each phase to ensure that the application works
correctly before moving on. Automated test programs will be used to ensure the
application does not contain critical errors. These programs will include automated
message sending, receiving, chatting, etc. Common usage scenarios will be explored
thoroughly with automated and manual tests.
Risks and Risk Management
Risks
Currently the .NET framework is available only at the beta development stage. It is
assumed that there will be few substantial changes between now and the final release,
although it is realize that there is a possibility of change within the .NET framework and
C# language.
C# and the .NET framework are new technologies and will take time to learn. The
expectations stated in the project plan may be difficult to meet if any obstacles are found
in learning these technologies. The project advisors are not familiar with the new
languages as well and will not be able to assist with any related problems.
9
Risk Management
Microsoft has reported that the final release of the .NET framework will occur in May.
Any software that is produce before the release date will be used as a starting point only.
The final code will not be produced until the official release of the .NET framework is
available to us. Any changes that do occur will have to be incorporated into the
application.
Any obstacles found in learning the new technologies will have to be met with
information found through the Internet and Microsoft contacts. It is also assumed that the
C# language and .NET framework are not radically different from any current
technologies.
Financial Budget
The following table represents the proposed budget for the peer-to-peer application:
Table 1: Financial Budget
Item
Poster
.NET framework SDK
Visual Studio.NET Software
Documentation
Original Estimated Cost
$50
Provided
Provided
Provided
The only cost that is predicted for the project is for the poster. All software and
documentation needed will be provided free of charge from Microsoft.
10
Personnel Effort Budget
The following table represents the proposed time costs during the two semesters of
Senior Design:
Table 2: Personnel Effort Budget
Personnel
Design
Coding
Testing Debugging
Documenting Meetings
Totals
Ben
Miller
Kevin
Moore
Steven
Rysavy
Total
Est.Effort
20 Hrs
35 Hrs
25 Hrs
20 Hrs
15 Hrs
70 Hrs
185 Hrs
15 Hrs
50 Hrs
20 Hrs
15 Hrs
5 Hrs
75 Hrs
180 Hrs
20 Hrs
25 Hrs
30 Hrs
15 Hrs
15 Hrs
75 Hrs
180 Hrs
55 Hrs
130 Hrs
75 Hrs
50 Hrs
35 Hrs
220 Hrs
545 Hrs
Each team member is expected to spend approximately equal amounts of time during
each phase of the project. A large amount of time will be spent creating the code for the
application. It is expected that an equal amount of time will be required for the testing
and debugging stages. Since one of the goals of the project is to facilitate learning of the
.NET framework, ample time has been allocated to documenting the source code. Team
members expect to meet three hours every week to discuss progress and problems.
11
Project Schedule
Figure 2
As shown in the figure, the basic program will be done by the end of the first semester.
During the second semester features will be added to show off the ease and extensibility
of the .NET framework. Also since the team members will be taking a semester hiatus it
is important that they do not leave in the middle of a step.
12
Project Team Information
Client
Name:
Address:
Phone Number:
Email Address:
Faculty Advisors
Name:
Address:
Phone Number:
Fax Number:
Email Address:
Name:
Address:
Phone Number:
Email Address:
Team Members
Name:
Address:
Phone Number:
Email Address:
Major:
Name:
Address:
Phone Number:
Email Address:
Major:
Name:
Address:
Phone Number:
Email Address:
Major:
Dan Fay
1 Microsoft Way
Redmond, WA 98052
(425) 936-4947
danf@microsoft.com
Dr. Govindarasu Manimaran
3219 Coover Hall
Ames, IA 50011
(515) 294-9175
(515) 294-8432
gmani@iastate.edu
Aaron Striegel
2215 Coover Hall
Ames, IA 50011
(515) 294-2663
magico@iastate.edu
Ben Miller
3681 Helser Livingston
Ames, IA 50012
(515) 572-2400
bmiller@iastate.edu
CprE
Kevin Moore
Apartment 1335 Hawthorn Court
Ames, IA 50010
(515) 572-7810
kevinm@iastate.edu
CprE
Steven Rysavy
Apartment 1335 Hawthorn Court
Ames, IA 50010
(515) 572-7810
srysavy@iastate.edu
CprE
13
Summary
There is currently no easy way to write network applications that target Microsoft
platforms. With the .NET framework, Microsoft hopes to ease the development of all
types of Windows applications. Microsoft wants developers to move to C# and the .NET
framework, but with the introduction of any new development platform there is a learning
curve. Creating an application in C# that targets the .NET framework and providing
thorough documentation of the implementation will demystify Microsoft’s new
development platform and encourage applications that target it.
14
References
[1] E. Gunnerson. A Programmer’s Introduction to C#. Apress, 2000.
[2] MSDN Online .NET Developer Center.
[3] CMP’s Techweb, Tech Encyclopedia.
15
Download