ACE-based service locator (chart fails)

xiaoxiao2021-04-07  336

Military Engineering College Undergraduation Thesis

based on

ACE

Service locator

2006

Computer engineering

Instructor: Zhang Jianyu

Student Name: Zhuang Zenan

Military Engineering College

June 2006

Abstract

ACE

Adaptive communication environment (Adaptive Communication Environment)

)

C

To develop a mature kit for communication software. This article will explain it

ACE

Development service locator, service locator is a service location module in the RBR system, in which the service locator provides a unified bitmap service for client access service.

Service Locator implements the following features:

1,

Store the IP, ports, certificates of each service of the service layer, and provide queries, updates, and delete functions.

2,

Store the client's session ID (SESSIONID), certificate, connection time, etc., and provides functions such as creation, update.

3,

Verify the client's certificate, verify the correctness, timeliness of the client's sessionID.

4,

Depending on the client's request, send server IP, port and other information.

5,

General communication features of the network program.

In the service locator, we use the ACE's many frameworks, where the ACE Accordor-Connector framework is used to implement communication between servers and clients; ACE STREAMS workflow to handle messages between servers and clients; ACE_MESSAGE_BLOCK is used Connection to the message of the message, etc .; ACE CDR provides a formatting tool for the intersection and solving ACE_MESSAGE_BLOCK.

In the design of the service locator, the processing is completed according to the following process:

1,

When a new customer needs to obtain server information corresponding to the service name, first register the client information to the server, get a sessionID, and register your own information on the location server (IP, certificate, sessionID, etc.).

2,

If the customer wants to apply for a service, apply to the location server to obtain a list of server, if the service you want to get does not exist, give up.

3,

If the service is present, the client applies for server information to the server, saved locally.

Finally, the improvement mode of the service locator is proposed, mainly using sessionid to manage the connection.

Keywords: ACE, service locator, network communication, RBR system

table of Contents

Figure 1-1 ACE Hierarchical Map

1.2.1 ACE OS adaptation layer

This layer is c

Write, directly in the local OS API

Above. It offers light class POSIX OS

Adaptation layer, put ACE

Other layers and components and below with OS API

The associated platform proprietary feature shielded:

l Concurrency and synchronization: The adaptation layer of the ACE encapsulates the OS API for multithreading, multi-process and synchronization.

l Inter-process communication (IPC) and shared memory: ACE adaptation layer encapsulates the OS API for local and remote IPCs, and shared memory.

l Event multi-channel separation mechanism: ACE adaptation layer encapsulates an OS API for synchronizing and asynchronous multi-channel.

l Explicitly dynamic link: ACE adaptation layer encapsulates an OS API for explicit dynamic links. Explicit dynamic links allow configuration services to be configured when installing or runtime.

l File system mechanism: ACE adaptation layer encapsulates an OS file system API for operating files and directories.

ACE OS

Portability of the adaptation layer makes ACE

Can run on many operating systems. ACE

Has been in a wide range of OS

Transplant and testing on the platform, including Win32

(I.e., in Intel

ALPHA

Platform, use MSVC , Borland C Builder

And IBM Visual Age

Winnt 3.5.x

, 4.x

2000

, WIN95 / 98

Wince

), Mac OS X

Most versions of UNIX

(For example, SPARC

Intel

Solaris 1.x

And 2.x

SGI Irix 5.x

And 6.x

DG / UX

HP-UX 9.x

, 10.x

And 11.x

, Dec / Compaq Unix 3.x

And 4.x

, AIX 3.x

And 4.x

Unixware

, SCO

, And unixable unix

Realize, such as Debian Linux 2.x

Redhat Linux 5.2

6.x

And 7.x

FreeBSD

NetBSD

), Real-time operating system (for example, Lynxos

, VxWorks

, Chorus Classix 4.0

QNX neutrino

RTEMS

PSOS

), MVS OpeNedition

And CRAY UNICOS

.

Due to ACE

OS

The abstraction provided by the fitting layer, all of which use the same code tree. Such a design greatly enhances ACE

Portability and maintainability. In addition, there is Java

Version ACE

Available

http://www.cs.wustl.edu/~ee1/jace.html

).

1.2.2 OS interface C packaging appearance

Can be directly in Ace OS

Preparation of highly portable C above the fitting layer

application. However, most ACEs

Developers use C shown in the above figure

Packaging the appearance layer. Provide type C

Interface (these interfaces package and enhance local OS

Concurrency, communication, memory management, event multi-channel separation, dynamic link, and file system API

), ACE

The appearance of packaging simplifies the development of applications. Applications can be inherited, polymerized, and /

Or instantiate the following components to combine and use these packages:

l Conferred and synchronous components: ACE logs like a local OS multi-thread and multi-process mechanism like muters and semaphors to create advanced OO concurrency abstraction, like active objects (Active Object) and polymorphism (Polymorphic Future) ).

l IPC and file system components: ACE C packages package local and / or remote IPC mechanisms, such as Socket, TLI, UNIX FIFO, and Stream pipes, and Win32 named pipes. In addition, the ACE C packaging also encapsulates the OS file system API.

l Memory Management Components: ACE Memory Management Components provides flexible and scalable abstractions to manage the dynamic allocation and release of the management process.

ACE C

Packaging provides many with Ace OS

The same characteristics are the same. However, these characteristics are C

Categories and objects, rather than independent C

The function is constructed. Such OO

Packaging helps reduce proper learning and use ACE

The effort required.

For example, C

Use to improve the robustness of the application, because C

Packaging is a strong type. Therefore, the compiler can be compiled, not the runtime detection type system violation. Conversely, it is impossible to detect Socket when not running.

Or file system I / O

Such C

First class OS API

Type system violation.

ACE

Many techniques are used to reduce or eliminate additional performance overhead. For example, ACE

A large number of C inline is used to eliminate additional methods to call overhead; this overhead can be made from OS

Adapter layer and C

Additional types of safety and abstract hierarchies provided by packaging. In addition, packaging with high performance requirements, such as Socket

And file I / O

Send / Recv

Method, ACE

Will avoid using virtual functions.

1.2.3 architecture

ACE

Also includes a advanced network programming architecture, integrated and enhanced lower level C

Packaging appearance. This architecture supports the dynamic configuration of concurrent distributed services. ACE

The frame portion contains the following components:

l Event Multi-channel Separation Components: ACE Reactor and Proactor (front-sleeper) are scalable object-oriented multi-channel separators that assign a specific processor to respond to multiple types of I / O, timing Events, signals and synchronization events.

l Service Initialization Components: ACE Acceptor and Connector (Connector) components respectively make the initialization and passive initialization tasks with initialization once the application unique task decoupled.

l Services Configuration Components: ACE Service Configurator supports application configuration, which is dynamically assembled when installing and / or runtime.

l Layered flow components: The ACE STREAM component simplifies the development of communication software applications composed of hierarchical services such as user-level protocol stacks.

l ORB Adapter Components: ACE can be seamlessly integrated with single thread and multi-thread CORBA through the ORB adapter.

ACE

The architectural assembly can be updated and expanded without modifying, recompiling, linked, or frequently restarting applications in operation. In Ace

In this flexibility, it is obtained by combining the following elements: (1

) C

Language characteristics, such as templates, inheritance and dynamic binding, (2

) Design mode, such as abstract factories, strategies, and service configuresters, and (3

OS

Mechanism, such as explicit dynamic links and multi-threaded.

1.3 OpenSSL

1998,

The OpenSSL project group took over the development of OpenSSL and launched the version 0.9.1 of OpenSSL. So far, OpenSSL's algorithm has been very perfect, support SSL2.0, SSL3.0, and TLS1.0 support. OpenSSL currently the latest version is 0.9.7B. OpenSSL uses C language as a development language, which makes OpenSSL have excellent cross-platform performance, which is a very wonderful thing for the majority of technicians that can use the same familiar things in different platforms. OpenSSL supports Linux, Windows, BSD, Mac, VMS and other platforms, which makes OpenSSL have extensive applicability.

As a cryptographic security development package,

OpenSSL

The feature provided is quite powerful and comprehensive, including the main password algorithms, commonly used key and certificate package management functions, and SSL protocols, and provides a wealth of applications for testing or other purposes.

.

1.3.1 asymmetric encryption algorithm

OpenSSL

A total of four asymmetric encryption algorithms, including DH algorithms, RSA algorithms, DSA algorithms, and elliptic curves algorithms (EC). DH algorithm general user key exchange. The RSA algorithm can be used for key exchange, or for digital signatures, of course, if you can endure its slow speed, then you can use for data encryption. The DSA algorithm is generally only used for digital signatures.

1.3.2 Key and certificate management key and certificate management are

An important part of PKI, OpenSSL provides a rich function, supporting multiple standards. OpenSSL implements the X.509 standard codec, pkcs # 12 format of the certificate, and the codec function of PKCS # 7. There is a text database that supports the management function of the certificate, including the function of the certificate key, request generated, certificate issuance, revokes, and verification.

1.3.3 application

OpenSSL's application provides relatively comprehensive features that can be used as

OpenSSL's instructions. OpenSSL's application mainly includes key generation, certificate management, format conversion, data encryption, and signature, SSL testing, and other auxiliary configuration.

Chapter II Service Locator Demand Analysis

2.1 RBR Disaster Recovery System

The RBR system is a network disaster recovery system consisting of three logical layers: a client layer, management (intermediate layer), and service layer. Among them, the client layer represents the resources of the client computer managed by the system; the management is composed of backup adapters, authentication servers, management console, etc., constitutes the management core of the system; the service layer represents the stored server resources. In the third floor, the management is in the heart of managing business logic.

The structural model of the system is shown in Figure 2-1:

Figure 2-1 Structure Model of RBR System

2.2 Service Locator Demand Analysis

2.2.1 Introduction of Service Locator

The service locator is the service location module in the RBR system, and the management is handled. As shown in Figure 2-2 below, the service locator provides a unified positioning service for the client access service layer resource:

Figure

2-2 Service Locator Schematic

In the RBR system, there will be two problems if the client can access the servers of the service layer.

1,

The IP address of each server of the service layer will inevitably expose in the client, and the hacker attacks the server to set the goal, resulting in serious security issues.

2,

If the service layer's service period IP configuration changes, the client must manually update all server IP configurations to increase the complexity of the client operation.

In order to solve the above problems, we introduce the service locator. When the client submits a request to the server's server, it is not directly sent to each server, but first sends a service request service request; when the service locator receives the service requirements request sent by the client, in the local database Query the service name of the client needs, and verify the correctness of the certificate and session ID, if the server IP, certificate, etc. of the client request, etc., if the client requests the client IP, certificate, etc. will be given to the client.

2.2.2 Service Locator

To achieve the above functions, the service locator must have the following functions:

1,

Store the IP, ports, certificates of each service of the service layer, and provide queries, updates, and delete functions.

2,

Store the client's session ID (SESSIONID), certificate, connection time, etc., and provides functions such as creation, update.

3,

Verify the client's certificate, verify the correctness, timeliness of the client's sessionID.

4,

Depending on the client's request, send server IP, port and other information.

5,

General communication features of the network program.

2.3 Summary Design of Service Locator

2.3.1 System Process Design

According to the functional analysis of Section 2.2, we design the system flow of the service locator, as shown below:

1,

When a new customer needs to obtain server information corresponding to the service name, first register the client information to the server, get a sessionID, and register your own information on the location server (IP, certificate, sessionID, etc.).

2,

If the customer wants to apply for a service, apply to the location server to obtain a list of server, if the service you want to get does not exist, give up.

3,

If the service is present, the client applies for server information to the server, saved locally. To the intuitive indication of messaging and program execution order between each module, the cooperation diagram of each module is given below:

Figure 2-4 Service Locator Cooperation Diagram

2.3.2 System Framework Design

ACE provides a set of framework solutions for the network communication program, in the service locator, we mainly use the following framework:

First, ACE Acceptor-Connector Framework

The ACE Acceptor-Connector framework is used to send and receive messages, using the ACE Acceptor-Connector Framework Communication Framework for Service Locator.

Second, Stream framework

The Stream framework is used to implement the message. In the service locator, we implemented two workflows with Stream: protocol stack flow and business flow.

send messages

Receive a message

The figure below shows the roles of these two frames in the system, and how they cooperate:

One,

He provides an IPC endpoint for passive mode for listening and accepting connections from the peer. The type of this IPC endpoint can be parameterized by many IPC Wrapper Façade classes of ACE, so that lower-level connection mechanisms are separated from the application level service initialization policy.

two,

He automatically automates the steps necessary to "passively connect IPC endpoints, create / activate" service processors associated with other associated services.

3.2.2 Use of the ACE_ACCPETOR framework

The ACE_ACCEPTOR class template can be parameterized by two classes: SVC_Handler class and peer_acceptor. The ACE_ACCEPTOR class has a flexible interface that can be widely customized by the application developer, and we divide them into two categories:

First, the initialization of the receiver

The following methods are used to initialize and destroy the ACE_ACCEPTOR object.

Table 3-1 Acceptor initialization

method

description

ACE_ACCEPTOR ()

Open ()

Bind the passive mode IPC endpoint of the receptacle to a specific address, such as the TCP port number and the IPC host address, and then listen to the arrival of the connection request.

~ ACE_ACCEPTOR ()

Close ()

Turn off the IPC endpoint of the receiver and release its resources.

Acceptor ()

Returns a reference to the underlying peer_acceptor.

Second, connection establishment and service processor initialization method

Table 3-2 Service processor creation

method

description

Handle_INPUT ()

When the connection request arrives from the peer connector, the reactor calls the template method. It can use the three methods outlined below to automate the steps necessary to passively connect the IPC endpoint and create a service processor associated with it.

Make_svc_handler ()

This factory method creates a service processor to process the data request issued from the peer service.

Accept_svc_handler ()

This hook method is to create a connected IPC endpoint with the passive mode IPC endpoint of the receptacle and package this endpoint with the service processor.

Active_svc_handler ()

This hook method calls the Open () hook method of the service processor, allowing the service processor to complete the initialization of yourself.

The following figure shows the operation of the application uses AccPetor:

Figure 3-1 Application Implementation Acceptor Framework

In general, a port service uses an Accordor instance, so there is only one Acceptor instance in one program. In actual programs, we can use the Acceptor template to create the class we need, and overload the above three service processor methods.

3.2.3 Application of Acceptor Framework in Service Locator

In this program, we created an Acceptor class directly using the ACCEPTOR template:

Class Acceptor: Public ace_acceptor

Then overload the above method:

Virtual int open (const ace_sock_acceptor :: peer_addr & local_addr, ace_reactor * Reactor = ace_reactor :: instance (),

INT flags = 0,

INT USE_SELECT = 1,

INT reuse_addr = 1);

Virtual Int make_svc_handler (ClientHandler * & sh);

Virtual int access_svc_handler (ClientHandler * SH);

Among them, ClientHandler is a service processor we designed, and he is used to address the message, and refer to Chapter 6.

3.3 Message to complete the service locator with the ACE Connector component

3.3.1 ACE_CONNECTOR class

In 3.2, we describe the characteristics and implementation methods of Acceptor as the passive server. Correspondingly, in the client we actively connect with the Connector framework. Acceptor releases the coupling of the "functional processor" and "actively connect and initialize each of the steps required." In a network of communication in a large number of auto-end, you may need to actively, and create a large number of connections in concurrently, and processed during completion. In order to combine these capabilities into flexible, scalable and reused abstraction, the ACE Acceptor-Connector framework defines the ACE_CONNECTOR class.

ACE_CONNECTOR is a factory class that implements the Connector role in Acceptor-Connector mode [POSA2]. This class provides the following capabilities:

One,

It provides an IPC factory that can actively establish a connection to the peer receptacle synchronously or reactive. The type of IPC endpoint can be parameterized by many IPC Wrapper Façade classes of ACE, thereby separating the lower level of connection mechanism to the application level service initialization policy.

two,

It enables "actively connect IPC endpoints, and the steps necessary to create and activate the sections of the service processor associated with it".

This template class is parameterized by the following two classes: SVC_Handler classes and peer_connector classes.

3.3.2 Use of the ACE_CONNECTOR framework

The ACE_CONNECTOR class has a flexible interface that can be widely customized by the application developer, and we divide them into two categories:

Table 3-3 Initialization of the Connector object

method

description

ACE_CONNECTOR ()

Open ()

Method for initializing the receptacle.

~ ACE_CONNECTOR ()

Close ()

Release its resources.

Connector ()

Returns a reference to the underlying peer_acceptor.

Table 3-4 Initialization of Service Processors

method

description

Connect ()

The application calls this template method when you want to connect a service processor to the peer to listen. It can use the following three methods to automate the steps necessary to "actively connect an IPC endpoint, create and activate the service processor associated with it."

Make_svc_handler ()

This factory method creates a service processor, the latter will use the connected IPC endpoint

Connect_svc_handler ()

This hook method uses the server's IPC endpoint to actively connect endpoints.

Active_svc_handler ()

This hook method calls the Open () hook method of the service processor, the latter allows the service processor to complete the initialization of itself after the connection is established.

HANDLE_OUTPUT ()

After the connection request of the asynchronous initiated connection, the reactor calls this template method. It calls the active_svc_handler () method to initialize the service processor

Cancel ()

Cancel a service processor is initiated asynchronously before it is connected. The caller (not a connector) is responsible for closing the service processor's chart below shows the application of the application using the Connector:

Figure 3-2 Application Realization Connector Framework

3.3.3 Application of Connector Framework in Service Locator

In order to unify the application of the Connector framework in the system, we did not directly implement the ACE_CONNECTOR template as classes, but used a template class with the template method mode.

PS_CONNECTOR, then implement our newly established template class in various programs, as shown below:

Figure 3-2 Implementation of the ACE_CONNECTOR template class

Build a custom template class:

Template

Class PS_Connector: Public ace_connector

Implement the class with a custom template class:

Class testConnector: public ps_connector

Implement server initialization method on a custom template class:

First, implement the Open () method

INT PS_CONNECTOR :: Open (ACE_REACTOR * R, INT FLAGS)

Second, implement the MAKE_SVC_HANDLER () method

Template

INT PS_CONNECTOR :: make_svc_handler (Message_Handler * & SH)

Third, implement the connection_svc_handler () method

Template

INT PS_CONNECTOR :: connect_svc_handler (message_handler * & svc_handler,

Const ace_sock_connector :: peer_addr & transdr,

ACE_TIME_VALUE * TIMEOUT,

Const ace_sock_connector :: peer_addr & local_addr,

Int Reuse_addr,

Int Flags,

INT Perms

When the client starts to connect, execute the connection_svc_handler () method, so we can define what you need to do when you define the connection_svc_handler () method, in the service locator, we define SSL certification.

3.4 session connection pool

3.4.1 Traditional Socket Pointer Connection Method

Traditional network communication procedures are generally labeled with a Socket pointer, as shown below:

Figure 3-5 SESSIONPOOL connection pool map

The following table gives a description of each method:

Table 3-5 SESSIONPOOL connection pool method description

method

description

newsession ()

New session

GetSession ()

Get the value of the specified session

Isactivesession ()

Judging whether the specified session is in use

UpdateSession ()

Update the value of a session

REMOVESession ()

Delete a session

In the connection pool, we used the ACE_HASH_MAP_MANAGER_EX template class to generate a hash table storage connection information, the hash table is as follows:

Idclass -

à Reccoss

among them,

IDCLASS is used to store management sessionid, Recclass is used to store connection information (customer message message category, subcategory, failure time). 3.5 SSL certification in service locator

In the ACE ACCEPTOR-Connector framework, we set SSL authentication to ensure the security of the connection. OpenSSL can ensure that all data communications are performed in the channel of SSL. In the service locator, we did not allow all data to encrypt through SSL, but verified the validity of the certificate when connecting, verifying the SSL immediately after verification connection.

3.5.1 Generation of OpenSSL Certificate

OpenSSL provides two certificates to generate, one is a certificate of CA, one is a certificate that does not require a CA sign. In the service locator, in order to reduce complexity, we have no CA server to verify the distributed certificate.

The following command is used to generate a key to the certificate:

Openssl Genrsa -Des3 -out Privkey.pe 2048

The following command is used to generate a certificate:

OpenSSL Req -new -x509 -key privkey.pey.pey.pem -out cacert.pem -days 1095

We use this command to generate two pairs of certificates, which are used for server and client:

Table 3-5 List of certificates for SSL

file name

description

PRIVKE_SERVER.PEM

Service private key file

CACERT_SERVER.PEM

Server certificate file

Privkey.pem

Client's private key file

Cacert.pem

Certificate file for the client

3.5.2 SSL Connection Verification

We use the following figure to represent the flow of the SSL connection:

Figure 4-1 Stream framework

4.2 Service Locator Stream Framework

4.2.1 Implementation of Head Modules and Tail Modules

As shown in FIG. 4-1, each of the head and tail of the Stream stream frame has a module to process data exchanges performed. As shown in the figure below, we give the stream framework for service locator:

Message processing module

Head module

Figure 5-1 Communication message class diagram

Below, we give the contents of each message:

Table 5-2 COMMAD content

Member name

format

description

Totallength

ACE_CDR :: Ulong

Data length

Type

ACE_CDR :: Ushort

Command category

Subtype

ACE_CDR :: Ushort

Command subclass

Length

ACE_CDR :: Ulong

Message length

All messages are identified by Type and Subtype:

Class name

TYPE value

Subtype value

CS_SERVICELISTREQUEST

11

1

SC_ServiceListResponse

12

1

CS_SERVICEREQUEST

11

2

SC_BADREQUEST1

12

2

SC_BADREQUEST2

12

3

SC_GOODREQUEST

12

3

CS_REGISTER2SERVICE

12

4

5.2 Service Locator Transmission Message Method

5.2.1 ACE_MESSAGE_BLOCK Message Class

In the locating server, all messages are stored through the ACE_MESSAGE_BLOCK class, and the ACE_MESSAGE_BLOCK class stores messages in a string, and the message can be transmitted directly on the network. ACE_MESSAGE_BLOCK can be flexible, efficiently shared, and can reduce additional overhead brought by memory replication. The ACE_MESSAGE_BLOCK allows multiple messages to be connected to form a single-link table to support composite messages. All ACE_MESSAGE_BLOCK has a read pointer (controlled by RD_PTR () and a write pointer (by WR_PTR ()). Let's give a ACE_MESSAGE_BLOCK class diagram:

HEAD

Token = "/ t ~ begin"; three, cs_register2service processing

The CS_REGISTER2SERVICE message is used to register a service and apply for a new ID. This message should be used when the new user first access the service, or the old user's sessionID is rejected. We use the UUID structure provided by the RPC.H of the Windows system when establishing a new ID. It is the ID structure determined by the time and network card address, so it can guarantee uniqueness, the code is:

UUID sessionID;

// Newly built a UUID structure

UUIDCREATE (& sessionID);

// Establish a UUID

In addition, we overload operators == to facilitate sessionID comparison:

Bool Operator == (Const Uuid & R) Const

{

Return 0 == :: Memcmp (this, & r, sizeof (uuid));

}

The processed message is placed in the traffic flow processing frame, and then returns back to the client, complete the delivery of the message.

Conclude

Today, the development of a variety of network procedures is increasingly mature today. ACE is a quite mature network development kit, its efficiency, cross-platformability makes more and more people start using his development network software.

In this graduation design, we use ACE to develop a service locator to develop software for efficient and extended capabilities. In this development, familiar with the ACE environment is more important, because its complex framework and many classes, so familiarity is more difficult. During the development process, I have been familiar with the environment of ACE. in

ACE

More difficult places are,

ACE_MESSAGE_BLOCK

The use of class,

ACE Acceptor-Connector

The use of the frame,

Ace streams

The use of the frame. in

ACE

In the use, familiar with a large number of design patterns, learn many object-oriented software design methods. In addition

OpenSSL

The use also gives the service locator security guarantee, but because this information is mostly in English, it is relatively slow.

When the program is designed, a major difficulty is the length of the character. Since the message is formatted, the character length is different, so the impact of the length change of the message is required when processing. When the program test, this is convenient for the problem to bring a relatively large amount of trouble and time price, which can refer to the excellent message processing method to improve its own procedures when designing the next network communication program. Level.

Finally, we implemented the function of the service locator, so that the client can query the server information of the target service based on the service locator. in

OpenSSL

In the implementation of the verification, we did not take into account the process after verification. In addition, in the storage of the list of service list information, we use it in the storage of client information.

ACE

We can use when we can use

Hash

The table stores the service list information and client information.

Hash

In the table, then use file storage so that it can guarantee more secure and efficient. In addition, it is now verified. use

IP

To identify the client, you can use it when you improve it.

SessionID

To identify the client to ensure his uniqueness and timeliness. Through the above improvements, it is believed to improve the more complete service locator.

Thank you

The graduation design of three months has been over. In this graduation design, Zhang Jianjun teachers gave me a lot of help. In the issue of the issue, the collection of information, the research and design of the topic, the revision of the paper gave me great guidance and support, It can be said that there is no teacher, this issue is unable to complete. The rigorous teaching of Zhangbanians and extremely high academic levels give me a very large influence. Here, I am sincere thanks. In the four-year life, the faculty of the military engineering college has given me the most precious and important time of my life, I gave me the concerns and guidance, especially the faculty of the Computer Engineering, they are in professional learning. I gave me great guidance. Special thanks to you here.

In addition, in the four years, our team cadres gave our lives and people to care and guidance, thank you here. And friends living with us four years, you are the most precious wealth of my life.

references

[1] (US) Douglas C. Schmidt is in Chunjing: C Network Programming Volume 1, Huazhong University of Science and Technology Press, December 2003

[2] (US) Douglas C. Schmidt Trend: C Network Programming Volume 2, Electronic Industry Press, January 2004

[3] (US) Douglas C. Schmidt: C NPV1 slide, www.dre.vanderbilt.edu / ~ Schmidt /

[4] (US) Douglas C. Schmidt: C NPV2 slide, www.dre.vanderbilt.edu / ~ Schmidt /

[4] (US) Douglas C. Schmidt Madden Translation: ACE Self - adaptive Communication Environment Chinese Technical Documentation

[5] (US) DOUGLAS C. Schmidt: Ace Software Development Guidelines,

http://www.cs.wustl.edu/~schmidt/rules.html

[6]

Zhang Jian is: ACE notes, August 2005

[7]

Money, C program design tutorial, Tsinghua University Press, May 2003

[8] (

USBRUCE Eckel, Thinking In C , China Machine Press January 2005

[8]

Zhou Bosheng: Standard Modeling Language UML, Beijing Computer World, 1998

[10] (US) James Rumbaugh, The Uml Reference Manual, AddSION-WESLEY, 1999

转载请注明原文地址:https://www.9cbs.com/read-132615.html

New Post(0)