问题一:.net分布式部署,UI层的dll 与 BLL层的dll 如何通信(它们分别在不同的服务器上)?
问题二:我的理解是上面问题要用到remoting或web service技术,即在BLL层的上方包装一层WebService或Remoting,用来通信,但,感觉UI层对两者调用的差异是非常大的,那么是否可以在BLL层上方建立一些接口,让WebService和Remoting去实现它,再利用工厂模式来使得UI统一都调用接口中的方法,但问题是UI层无法WebService传来的实体类对象强制转化为Model程序集的对象,不知何故,请教如何处理?

解决方案 »

  1.   

    可以序列化的类型
    String DataSet Int ....
      

  2.   

    .Net Remoting...比WebService方便用remoting
      

  3.   

    WebService和Remoting不正是“上方建立一些接口”吗?你应该详细说明你的接口的细节,说明他们比WebService和Remoting进化了哪些地方?也许你有更加具体的面向应用的“接口”想法,但是毕竟没有明确说出关键的、与底层计算机技术更加高级的地方在哪里。仅仅从你的描述中还只能看出“骑驴找驴”的味道,明明WebService或者Remoting都是面向对象的分布式通用接口技术,你却说他们不是。关于“无法WebService传来的实体类对象强制转化为Model程序集的对象”,那是因为客户端“Model”中根本这些“实体类”的具体类型定义。你的客户端应用也必须引用这些具体类型,否则就只能按照抽象类型的接口来使用。
      

  4.   

    回sp1234(刚刚注意到 c# 2005 的版本其实是 8.0) 
    是这样的,打比方说我在Model中有一个User类,其中有UserName和Password两个属性,这和表中的结构一样,然后BLL层中返回用户集合的方式是
    public User[] GetUserList()
    {
        //实现代码
    }用WebService实现的话
    [WebMethod]
    public User[] GetUserList()
    {
            return new BLL.GetUserList();
    }
    另外我建立了一个接口IUser,当中有一个方法就是GetUserList()在UI层,我首先需要Web引用这个WebService,取名为WebServiceBLL
    然后在某个aspx.cs中这样写
    IUser iu = BLLFactory.BusinessLogic.CreateUser();//工厂模式生成对象实例
    User[] list = iu.GetUserList();在工厂中用PetShop的反射工厂的方式,通过配置文件生成WebService的接口实例问题就是WebService中重新生成了User对象,和我原来的Model的对象不相对应。造成无法在UI层使用Model,说白了就是无法让UI在不知道是否是WebService的情况下进行开发,达不到松耦合的面向对象原则。
      

  5.   

    其实问题就是如何让UI层调用下层的方法时,不知道这个方法是用WebService还是用Remoting实现的?
      

  6.   

    各有优缺点,在分步式开发上微软提倡用 WebService