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