Software Architecture (C #)

Source: Internet
Author: User
Tags new features versions
Architects who have studied software engineering should all know that a reasonable software architecture (Software architecture) is extremely beneficial to later maintenance and additions to new features. I am very interested in studying the architecture of Windows and I want to practice it myself. But unfortunately, I do not have any big software code can be used to study, to tell the truth, even if there is, maybe I do not have time to delve into.


I had to use a small software I had written before, and the earliest versions of the software were less clear (I've written more than 20 versions). You might think it's not necessary for a small software, but it's just an experimental thing, and the architecture can be used for larger software in the future. To know that the system structure is very important for large software, a reasonable structure can save a lot of work.

First of all, briefly introduce my transformation object. Aoouchware (R) Date Convert can be used to modify the file creation time, modification time, access time, and support for batch changes. The system time can be tracked in real-time. The software is based on microdoft.net technology, the normal use needs to first install the Microsoft.NET Framework version 1.0 or higher.

As you can see from the figure below, the shell layer and the management layer are separate from the SP2 version, but the original release version of the upper two layers is together. So from the SP1 version I began the transformation of its work, to the beginning of the definition as a whole two levels of complete separation is not easy, so I took two steps. SP1 version is a half transformation of things, the above two layers are not completely separated, but the various modules in the text information extracted to a file Notify.dll, such a framework is not perfect. Now my version has basically implemented the architecture in my mind, although the memory is optimized for the next version (the memory footprint of the. NET program is too large).



Here is a brief discussion of my research. In fact, it is the research results, but it is to put some ideas in my mind into reality.







My idea: My goal is to divide it into 3 levels, the shell layer (shell Layer), the management layer (Manage Layer), and the kernel layer (Kernel Layer). The shell consists mainly of Notify.dll and UShell.dll, which are directly accessible to users, and any changes they make have no direct impact on the software functionality. Management mainly by the main program to achieve, the main program does not have any substantive work of the Code, but provides the interface management functions, the purpose is to link up and down the two levels effectively. This will not involve the user layer even if the underlying code or interface is to be updated, that is, the software update package will not be large in size. The core layer consists of two parts, one is environmental monitoring (environment), including EnvirChk.dll, VerRep.dll, these two modules are mainly implemented file versioning and environment variable management, if the user left the update is not part of the current version of the file, the program will not run. There is also a part of course is the implementation of software functions (Execution) module, including FileEvt.dll, TimeChkR.dll, which I do not introduce more.

The specific role of each module:

Notify.dll is used to store text information on the user interface, or it can be invoked by other modules to send a hint. This also facilitates the development of multilingual programs.
UShell.dll This is the interface section, the main program interface is inherited from this file. This will enable the skin-changing function.
DateCov.dll This is the main program, to achieve the upper and lower levels of convergence and management.
EnvirChk.dll This module is used as a test environment variable, and version management. Unreasonable variables cannot be referenced, and the same wrong version will cause the program not to run.
VerRep.dll is used to return the correct version number of each module now.
FileEvt.dll is used to invoke the Open File (folder) dialog box and to perform changes to the file.
TimeChkR.dll can return the current system time, as well as the implementation of the user input time standard detection, so as to avoid a lot of unnecessary errors.


Date Convert + SP2 Download Address: Http://free.efile.com.cn/aoouch/AoouchWare/DCSP2/DCSetup_CHS.exe

PlusPack for SP2 download address: Http://free.efile.com.cn/aoouch/AoouchWare/DCSP2/DCPSetup_CHS.EXE

About the software download: My release of the installation package is green, if you do not trust you can use WinRAR to solve. The English version of the installation package I do not provide, if you want to use the English version of friends can download pluspack to achieve.




Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.