参照微软petshop的例子吧
http://microsoft.com/downloads/details.aspx?FamilyId=E2930625-3C7A-49DC-8655-A8205813D6DB&displaylang=en

解决方案 »

  1.   

    同意!帮助永远是最好的老师,看这两个例子C:\Program Files\Microsoft Visual Studio .NET 2003\Enterprise Samples
      

  2.   

    各位:我要问的不是具体中间层怎么写,而是想问中间层服务器一般用什么,比如PB采用EAServer,那么.Net呢?用MTS吗?用COM+吗?用MTS的话怎么写MTS的组件?怎么部署?怎么编程?哪里有MTS 的相关资料?
      

  3.   

    上面的那些例子好象只是没有用MTS
      

  4.   

    .NET用的Framework/CLR阿,所有程序都运行在此之上,你还是要写中间层,随便你写成dll或exe。
    也支持COM+服务,你也可以写COM组件,但觉得显然Assembly更合适一些吧
      

  5.   

    最简单的是webform(winform)+webservice+database
      

  6.   

    COM+在.NET中依然存在,如果应用程序确实需要使用COM+和MTS的功能特性,那么可以选择合适的技术与.NET组件协同工作。实际上,组件是任何类型解决方案的一部分,不管是分布式解决方案还是非分布式。组件在.NET环境中非常类似一个COM组件,它们都是DLL,包含一个或多个类,能够被其他应用程序实例化。两者主要的不同点在于它们的实现方法,这里我们不去详细讨论技术细节。   在应用程序中考虑使用什么样的组件有多种选择。使用COM+还是MTS。COM+和MTS都能够与COM组件协同工作。因此,当创建一个组件时,该组件必须符合COM的二进制标准,而且需要在使用之前向注册表注册。   .NET Framework通过COM Interop(COM互操作)技术支持COM+和MTS。一个传统的COM应用程序能够调用一个.NET组件,同时.NET组件(在.NET中称为.NET Assembly)也能够调用一个COM组件。这一非常强大的双向互操作特性使你可以在应用程序中混合使用两类技术。   COM+与MTS是与COM组件协同工作的。当你放置一个.NET组件到到一个MTS包或者一个COM+应用程序中,该组件仍然能够以同样的方式被一个.NET应用程序调用,此时,你不会意识到COM+和MTS的存在。   下面我们来看一看在使用COM Interop时的性能开销。.NET和COM使用不同的执行机制(.NET使用通用语言运行时,Common Language Runtime,而COM则不是)。.NET组件和COM组件在不同的标准上实现(.NET组件使用通用类型标准,而COM使用二进制标准)。两者之间的互相调用会增加一些性能开销,事实上,每执行一次互操作调用大约花费20到30条CPU指令。当你调用一个存在于COM+中的类方法时,每次调用都会出现这些性能方面的开销。   如果一定要使用COM+和MTS的功能特性,请把组件存放于COM+和MTS中并确认你需要所有功能特性。如果组件只在一个数据库中执行事务处理,而且一直都在单个数据库环境中工作,那么不需要在使用COM+来完成事务管理,仅仅使用ADO.NET就可以了。反之,如果需要多个数据库间的对象池和事务处理支持,那么应用程序就需要COM+和MTS。
      

  7.   

    1. 分布式应用   随着Internet技术的发展,应用软件开发已经从桌面应用开发转向两层、三层、多层应用的开发,特别是电子商务的出现,更促进了基于Internet的多层分布式应用开发。分布式应用程序至少由如下三层构成:   表示层:实现与用户的交互,调用商务层组件响应用户的请求。该层可由 HTML、DHTNL、ASP、ActiveX控件、WIN32应用等来实现。   商务层:实现商务规则,满足企业的商务需求,处理、分析商务数据,获得商务结果。   数据层:为商务层提供数据服务,访问后台数据库如MS SQL SERVER 7、ORACE等。   2. 分布式组件对象模型DCOM   对于分布式应用来说,上述三层逻辑上已经完全分开,物理上可能分布在不同机器上、使用不同的操作系统、使用不同的网络协议。但各层之间要实现相互通信。为此微软提出了分布式组件对象模型(Distributed Component Object Model简称DCOM),在DCOM的支持下,各层之间通过组件(Component)实现相互通信从而构成一个完整的分布式应用,并且与机器的物理位置、操作系统、协议都无关。   3. 微软事务服务器MTS   多层分布式应用中的组件可能对数据库的表、非数据库的实体如消息队列进行操作,而这种组件却可能被多个用户调用,这样就会出现多个操作并发的问题,必须采取事务方法来管理所有操作,保证所有事务要么被全部成功地提交,要么全部回滚到事务初始状态。为此,微软实现了一个管理支持事务的组件的服务器:微软事务服务器MTS(Microsoft Transaction Server)。客户可以通过调用SetComplete和SetAbort函数实现提交与回滚。   二、商务组件   商务组件包含了一个企业的商务规则、逻辑。它能使企业为了尽快地满足市场的变化而对商务规则、逻辑进行调整,它主要处理前端客户的请求。同时它也使得企业的商务规则不会暴露在用户眼前,从而使应用更安全。在设计商务组件时,我们应该注意如下几点:   1. 与数据组件的区分:数据组件主要用来管理、操纵后台的数据,并不直接响应用户的请求。   2. 组件的粒度即组件包含的功能:组件的粒度不宜过大,也不宜过小,因为粒度太大,不便于应用的更新。粒度太小,则应用的组件太多,不便于管理与调用。   3. 是否支持事务控制MTS:如果支持MTS,组件必须是一个动态连接库而不能是一个可执行文件。
      

  8.   

    微软的事务处理服务器(Microsoft Transaction Server,MTS)和COM+都能够管理跨多个组件(component)的事务处理。事务处理可以被定义为完成一项工作里某个单元所需要的一系列操作。 事务处理模式是为参与事务处理的每个组件而设置的。它用来告知MTS说组件所做出的更改是否应该被忽略。当事务处理创建新对象的时候,MTS会查看两个信息源来确定事务处理的模式。首先,它要确定对象的创建者是否正在一个已经存在的事务处理里运行。其次,它要使用组件的事务处理模式。在Visual Basic .NET里,可以从System.EnterpriseServices.ServicedComponent里衍生出一个类,这类能够参与事务处理。如果System.EnterpriseServices这个命名空间不在你的项目里,你就要把它添加到项目的参照里:Public Class MTSTest
        Inherits System.EnterpriseServices.ServicedComponentEnd Class 要控制用于类的事务处理模式,你需要对类使用TransactionAttribute。Transaction(事务处理)属性的构造器能够接受TransactionOption这个类型的枚举参数(enumerated parameter)。TransactionAttribute可能的值有:Disabled——对象会忽略事务处理。 
    NotSupported——对象不能在事务处理的范围内运行。对象的创建不需要事务处理的存在,而不论其创建者是否运行在事务处理里。 
    Supported——对象需要或者不需要事务处理都可以运行。如果对象是在一个活动的事务处理里创建的,那么它就要在这个已存在事务处理里运行。如果对象不是在活动的事务处理里创建的,那么对象不需要事务处理也可以运行。 
    Required——对象需要一个事务处理。如果已经存在一个活动的事务处理,那么对象就要在这个事务处理里运行。如果不存在活动的事务处理,就要开始一个新的事务处理。这个值是Transaction属性缺省的值。 
    RequiresNew——对象需要一个事务处理。但是,新的事务处理总是应每个请求的需要而开始,即使已经存在活动的事务处理。 
    下面的代码显示了如何声明一个对象需要事务处理:<System.EnterpriseServices.Transaction _
     (EnterpriseServices.TransactionOption.Required)> _
    Public Class MTSTest
        Inherits System.EnterpriseServices.ServicedComponentEnd Class 
      

  9.   

    http://www.tx.net.cn/school/dotnet/wz/37WYKIJNZZNK1NJCHS.shtml
      

  10.   

    原来csdn上也有:http://www.csdn.net/develop/article/13/13453.shtm