by
cc0028
@ 2005-10-11 - 23:41:48
As promised, here is my MSc project proposal (slightly edited):
Application to Commence Dissertation Project
Project Title:
Casting the .NET: is the .NET platform a cross platform environment for secure, distributed, n-Tier applications?
The Project Aims:
The project aims to determine whether or not the .NET platform can be used to develop distributed, cross-platform, n-tier, secure applications (Enterprise-class applications) with an acceptable performance. The results of the project will tell C# developers what steps they need to take to write platform agnostic code and what performance implications these may have.
Project Outline
It is known that not all C# code will run unchanged across platforms. The limits need to be explored and strategies developed for writing enterprise-class platform agnostic applications. The project will describe the .NET platform and explain how the framework can be used to produce cross-platform code using one of the currently available non-Windows CLRs.
Through a literature search, criteria for enterprise-class applications will be developed that will be used to develop benchmark functionality for performance tests.
Performance tests will be carried out that exercise that functionality.
A search will be undertaken for existing enterprise-class platform-agnostic .NET applications. A cursory search suggests that no commercially available, non-Microsoft CLR applications exist that span all application tiers.
An application will be developed using C# consisting of at least three tiers (presentation, business logic, data). It will be used to compare the performance of the same code on Windows and Linux, in a more holistic environment than that provided by isolated tests. Code will also be produced optimised for the two platforms to compare platform-specific code performance compared to platform-agnostic code performance.
Literature Survey / Resources’ List:
The literature survey will cover at least the following:
Software development
A good way of assessing software process management is the Capability Maturity Model outlined at http://www.sei.cmu.edu/cmm/
Cross-platform development:
Microsoft have produced a seminal work on ASP.NET security called Building secure Microsoft .NET applications, and published by Microsoft Press.
A great deal of useful information concerning ADO.NET, remoting and the use of web services is contained in the excellent MCAD Training Guide 70-320: Developing XML Web Services and Server Components with Visual C#.NET and the .NET Framework by Amit Kalani
An interesting overview of portability problems and the role of standards is contained in Standard View Vol 4, No2, Jun 1996 (available from: http://ezproxy.liv.ac.uk:2480/10.1145/240000/235000/p80-rowley.pdf?key1=235000&key2=4874446211&coll=portal&dl=ACM&CFID=54388240&CFTOKEN=78782950)
One method of achieving cross-platform functionality is through the use of Web Services. A useful assessment of the value of Web Services can be found in Journal of Software Maintenance and Evolution: Research and Practice
Volume 16, Issue 1-2, Date: January - April 2004, Pages: 31-50
S. Tilley, J. Gerdes, T. Hamilton, S. Huang, H. Müller, D. Smith, K. Wong – available from: http://www3.interscience.wiley.com/cgi-bin/fulltext/107582371/PDFSTART
Technology-specific resources
The .NET Framework specification.
There is a great deal of literature on this subject including the literature provided by Microsoft at http://msdn.microsoft.com/netframework/gettingstarted/default.aspx and the ECMA standards linked to from http://msdn.microsoft.com/net/ecma/
Similar information is available from mono at http://www.mono-project.com/.NET_Framework_Architecture
.NET technologies
Many books and web sites deal with specific .NET technologies:
- The C# programming language
- ASP.NET
- Development tools
Many resources are available for Microsoft's Visual Studio, including a wide variety of books, online help materials and web resources (especially MSDN).
Fewer resources are to be found for mono development environments, but some documentation is available for monodevelop, both online and on the web at http://www.monodevelop.com/tutorial.aspx
Resources specific to mono and other non-Microsoft implemetations
There are a growing number of mono-specific and cross-platform resources
Books
Dumbill, Edd, and Bornstein, Niel M., Mono: a developer's notebook
King, J., and Easton, M.J., Cross platform .NET development: using mono, Portable.Net and Microsoft .NET.
Geschwinde, Ewald, Mono kickstart.
Websites
www.go-mono.com
www.gotmono.com
www.cross-platform.net
Scholarly Contributions of the Project:
It is known that C# code compiled to CIL will run on any computer where a CLR is installed: just as Java code will run wherever there is a JVM. However, ECMA standards for C# do not, on a first examination, appear to cover every aspect of what a Windows programmer would associate with the .NET Framework programming environment. For example remoting does not appear. Is remoting possible, therefore, in a platform-agnostic environment? A technique called direct remoting may be a possible solution, but the infrastructure of SAOs and CAOs available under Windows is not available elsewhere.
The project will make the following contributions to knowledge:
- benchmarks for enterprise-class application functionality
- test results from the application of these benchmarks in code snippets and in a full application
- a set of standards that can be consistently applied in order to develop platform agnostic code
- advice to developers of non-Microsoft CLRs as to where their efforts might best be concentrated.
Description of the Deliverables:
The deliverables will include:
- A survey of relevant literature
- A comparison of the facilities available to developers under Microsoft .NET and under other .NET implementations
- An example application, code samples and performance test results
- A recommended, reproducible framework to follow when developing a cross platform product, intended for enterprise deployment
- Summary and conclusions
Evaluation Criteria:
The features of a complete .NET implementation should be enumerated and their presence or otherwise in other implementations set out. This will be achieved by comparing the features of implementations with those set out in the ECMA standards documentation, and in the Microsoft .NET Framework.
Code samples and a .NET application will be developed in sufficient detail to determine the ease or otherwise of running it, unchanged under Windows and Linux, and the performance implications of doing so.
Resource Plan:
A dual boot PC will be required running Windows 2000 or better with IIS 5 or better, the .NET framework and Visual Studio.NET; and SuSE Linux 9.3 or better with Apache2, mono 1.1.7 or better.
All these resources are available.
Risk Assessment:
All the necessary hardware and software is available. I also already possess the necessary C# programming skills, as well as experience in .NET programming in a Windows environment.
A risk would be a failure to install all the necessary mono components successfully.
Most of the risks in this project are actually opportunities. A failure to implement some functionality in non-Microsoft environments should contribute to the understanding of the platform's completeness and maturity. A failure to install some component would also contribute to an understanding of the problems likely to arise in cross-platform development.
Quality Assurance:
I intend to monitor the project using the Imendio project planning software included with SuSE Linux. The basic framework has already been produced and will be updated and refined as the project progresses.