企业应用的开发,是一个非常复杂的过程。从技术的角度来说,基础平台的选择,包括操作系统、开发语言等,自然是非常重要的事情。然而,对于一个复杂的应用系统,几乎不可能在基础平台之上直接进行进行业务逻辑的开发,这是一种比较低效和有风险的做法。通常,开发人员会先制定应用系统的框架,或者选择一个已有的框架,比如J2EE等,然后再进行具体应用的开发。
在应用软件的开发方面,目前的主要技术阵营是Java平台和微软的.Net平台。Java由于推出的时间比较长,目前已经有了很多构建于其上的框架,包括用于Web开发的Struts、用于进行O/R映射的Hibernate,以及企业级的J2EE等。.Net平台由于推出的时间比较短,在.Net平台上目前还没有成熟的针对应用软件的框架。
Websharp的目标,便是设计一个基于.Net的通用的应用软件系统的框架,以简化基于.Net平台的企业应用软件的开发。目前,Websharp关注于企业应用软件的以下几个方面:
1、
数据库访问
2、
O/R 映射
3、
AOP
4、
分布式访问
本文将详细讨论以上几个技术。
1.关于Microsoft.Net和C#语言
1.1.关于Microsoft.Net
Microsoft.Net由微软在2000年开始推出,是新一代的Windows开发系统平台。.Net平台包含了以下主要特征:
l
软件变服务
l
基于XML的共同语言
l
融合多种设备和平台
l
新一代的人机界面。
l
托管代码公共语言运行库
.NET Framework
提供了一个称为公共语言运行库的运行时环境,使用针对运行库的语言编译器开发的代码称为托管代码。在Microsoft
.NET框架内,应用程序可以用好多种高级程序语言编写、创建,例如VB.NET、C#乃至COBOL
.NET等等都可以编写.NET应用程序。而通过每一种遵守.NET规范的编程语言所编写的程序代码首先都得通过一种初始编译步骤从源代码变成.NET的公共标准语言:MSIL(微软中介语言:Microsoft
Intermediate Language)。MSIL自身是一种完整的、和对象相关的语言,只有它才可能创建出应用程序。不论什么语言创建的应用程序,他们都使用同一个运行时环境——公共语言运行库。
.NET应用程序是以MSIL的形式出现的,只有在程序执行的时候才通过即时编译器(JIT)被编译为本机代码。图1.1就对这一过程进行了说明。
图1.1
公共语言运行库使设计其对象能够跨语言交互的组件和应用程序变得很容易。用不同语言编写的对象可以互相通信,并且它们的行为可以紧密集成。例如,可以定义一个类,然后使用不同的语言从原始类派生类或调用原始类的方法。还可以将类的实例传递到用不同的语言编写的类的方法。这种跨语言集成之所以成为可能,是因为针对运行库的语言编译器和工具使用由运行库定义的通用类型系统,而且它们遵循运行库关于定义新类型以及创建、使用、保持和绑定到类型的规则。
1.2.关于C#语言
C#是微软公司为了能够完全利用.net平台优势而开发的一种新型编程语言。C#语言从C和C++演变而来,非常类似于Java,它是给那些愿意牺牲C++一点底层功能,以获得更方便和更产品化的企业开发人员而创造的。C#现代、简单、面向对象和类型安全。尽管它借鉴了C和C++的许多东西,但是在一些诸如名字空间、类、方法和异常处理等特定领域,它们之间还存在着巨大的差异。
总的来说,C#语言具有以下特点:
1.
C#是一种从C++和Java继承而来的,简单的,现代的,面向对象的语言。它的目标是综合Visual
Basic高产和C++底层高效的特性。
2.
我们能够用C#开发控制台应用程序,Windows应用程序,Web应用程序。
3.
在C#中微软处理了C++问题,比如内存管理,指针等;它支持垃圾回收(无用内存回收),内存自动管理和其他许多特性。
4.
整形数值0和1不再作为布尔值出现.C#中的布尔值是纯粹的true和false值而且没有更多的"="操作符和"=="操作符错误."=="被用于进行比较操作而"="被用做赋值操作。
5.
现代。C#建立在当前的潮流上,对于创建相互兼容的,可伸缩的,健壮的应用程序来说是非常强大和简单的。
6.
C#拥有内建的支持来将任何组件转换成一个web
service,运行在任何平台上的任何应用程序都可以通过互联网来使用这个服务。
7.
C#是面向对象的
,支持数据封装,继承,多态和对象接口(即java中的interface关键字)。
8.
自动装箱和拆箱(Boxing/UnBoxing)
9.
类型安全
10.
.数组类型下标从零开始而且进行越界检查.
11.
C#提供对COM和基于windows的应用程序的原始的支持。
12.
通常情况下,指针是不允许使用的,但是,也允许用户将指针作为不安全的代码段来操作老的代码.
13.
NET引入了Assembly的概念,它们通过“元数据”具有自描述的功能。元数据确立了Assembly的版本,语言和数字签名等。Assembly不需要在任何地方注册.
14.
C#开发者可以方便的在M$网络平台上扩展自己的应用。C#可以将任何组件转变为WEB服务,并且可以被运行于Internet上的任何平台的任何应用调用,重要的是C#对这一特性提供了内置的支持。更重要的一点,WEB服务框架可以让任何WEB服务都看起来类似于C#的内置对象,所以可以让开发人员在开发过程中继续使用他们已经具备的面向对象的开发方法和技巧。
15.
此外C#还拥有许多其他特性使自己成为最出色的Internet开发工具。例如,XML目前已经成为网络中数据结构传送的标准,为了提高效率C#将允许直接将XML数据映射成为结构。这样的话可以有效的处理各种数据。
2.关于示例应用程序Ioffice
2.1.Ioffice的功能
Ioffice完整展示了如何使用Websharp进行应用软件的开发。这是一个示例项目,而不是一个商业产品,因此,可能会缺少商业应用程序的一些特点,例如友好的用户界面,复杂而强大的业务逻辑等。但是,Ioffice的确完整的展示了使用Websharp进行应用软件开发的技术,可以作为我们进行实际项目开发的参考。
Ioffice模拟了一个公司的在线时间安排系统,在这个系统中,使用者可以通过ASP.Net页面填写安排表,也可以查询每天的时间安排。另外,系统也提供了一个Windows
Form的客户端,这个客户端被设计成透明的可以悬浮于其他窗口上,从而可以为用户提供实时的提醒。
2.2.Ioffice的系统结构
Ioffice的系统是一个典型的多层分布式系统。后端数据库采用MS
SQL Server,当然,你也可以改成其他数据库;中间是业务逻辑层,业务逻辑被封装成Webservice;Web层使用ASP.Net来实现,同业务逻辑层部署在同一台机器上,使用本地Assembly的方式访问业务逻辑;当然,如果你需要,也可以部署在不同的机器上,使用Webservice来访问业务逻辑。Windows
Form的客户端安装在客户的机器上,使用Webservice来访问业务逻辑。
系统的结构可以用下面的图(图1.2)来表示:
图1.2 |