You should know before mono platform development

Source: Internet
Author: User

The first thing that should be done before mono platform development is to adjust your mood and lower expectations:

For Linux local C programmers, they are used to crazy and magic local C programmers, so they may not be satisfied with the many restrictions provided by mono. In general, Mono and. net programs belong to the framework development category. For framework development, it is best to work within the scope specified by the framework, otherwise they will fall into an isolated situation. Mono does not have C development tools that are readily available, nor can it mine the system infinitely. Mono focuses on application software development rather than system software (Mono can support local service development ). Mono supports two types of software development: Web-centric software and local-centric software development. Web includes application-oriented website development in general definitions, and service-based model development. As services are now the center of software development and rapidly evolve. As. net alternative platform, Mono is very messy, mainly because. net service-centric design cannot be fully applied on Mono, because the basic mono platform is currently in the 2. stage X should be a new stage at the end. For local program development, it mainly includes GTK # and system. windows-centered graphical interface program development, including service software development (Linux Service Organization), and Lucene. net-based development of search software.

For Windows. net programmers, first of all, they must greatly reduce their expectations. Mono does not have any brilliant tools, lacks enough third-party software, and the integration between tools is not very good, so the Code may not be very smooth, monodevelop may also disappoint you. These are cheap on Windows. NET development tools have spoiled us. Windows. there are many main reasons for net programmers to come to mono, probably because they are curious and want to migrate their own programs. They want to look into mono implementation to determine how far the gap is from their own ideas, more is to learn. Just as if you put your child in a hard place to exercise, you will feel the same, poor. Mono tools are still primitive and have few documents. I think this is a good place to learn. Every time I open msdn, I will be amazed at the book, I hope to accumulate a wealth of Windows knowledge, but msdn is quite confusing. In the end, it is better to buy a monograph for research. If you want to use other products, check the relevant information. The mono platform has very few materials, which is also an advantage. For C # language itself, it is a good place to learn, just like C ++, C # itself is a fascinating language worth studying, but the tightly bundled applications on C # are more suitable for production rather than learning. If you want to learn, you need to find a monotonous environment with a single product. Of course you have learned it. Come back and embrace windows :)

Understand the gaps between platforms:

For file systems, Linux is based on a virtual file system. This is one of the most successful Linux designs. On the surface, it seems that any file or resource can be accessed through a file starting, the delimiter between files is "/". In Windows, the file system is abstracted multiple times and looks like starting with "C:" or "D:", and the delimiter between files is "\", this is an important reason why many programs cannot be transplanted. You can refer to later articles to learn how to improve program portability.

The second difference is the line break. On Windows platforms, a line break means "\ r \ n", because in the character terminal era, the "\ n" task is to place the cursor at the same position in the next line, while "\ r" is to place the cursor at the beginning of a line. Therefore, starting from the next line means two controllers are used together. On UNIX platforms, linefeeds are represented by "\ n", which is a historical reason. I guess it was caused by early terminal specifications.

About Unicode, this should not be a problem now. Currently, many Linux systems use Unicode internally. In the past, Linux used ASCII encoding and its extension internally. Since Windows uses Unicode internally for a long time, Unicode support for. NET is very good. The Char character is Unicode in this province, and system. text also provides a lot of support for text processing. Although mono implements. net, but I found that the system is not very careful about Unicode processing, a class library and platform carefully designed, it should be ensured that the system response can be as good as the programmer's expectation in most cases, but mono didn't do it. That's the old thing, because mono runtime has been improving, there should be significant progress now. Text processing has always been one of the fundamental issues of computer science, and usually the simplest way to handle multi-country coding is to use UTF-8, because of historical reasons, many interfaces do not use UTF-8, instead, it uses a poor conversion. In Windows, before. Net appeared, text processing has been a headache. A common question raised by. NET is: "Do you still want to perform String Conversion ?", Check char *, wchar_t *, _ bstr_t, ccombstr, cstring, basic_string, and system. string, the past is hard to look back. If there is no cross-database or cross-solution, string processing is still easy. Once cross-database and cross-platform cross-solution is required, string processing is a nightmare for programmers.

The structure gap. Microsoft. NET is a big solution designed to build a huge ecosystem and is expected to be comprehensive. Because of the Microsoft Enterprise Platform Architecture, Microsoft.. Net can be seamlessly integrated with the Windows Business Core and system core.. net, architects, designers, and programmers see more than just. net, also includes Enterprise Services and components that run a lot of business relationships. In mono, because it depends on Third-Party implementation and relies on a large number of bindings to use the functions of the system or other software, sometimes the transparency is insufficient. There is no support for MMC, domain, MSMQ, WMI, transaction support, service architecture, database service, and other important infrastructure. These are all factors that should be determined early in development, make sure that mono meets your requirements. On the other hand, these are also an advantage in many cases. A large number of third parties are set up to implement these features, including Apache, Mozilla, postgrsql, and other communities.

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.