gpt4 book ai didi

wcf - 使用 Silverlight、WCF 和 nHibernate 的多层架构

转载 作者:行者123 更新时间:2023-12-01 05:46:06 29 4
gpt4 key购买 nike

我尝试为仅使用 Silverlight 的 UI 为以数据为中心的应用程序设置一个干净且灵活的应用程序框架。我希望有严格的关注点分离,并希望尽可能灵活(例如稍后交换 ORM),同时仍然减少代码量。

我花了数周时间才找到合适的架构,虽然我最新的方法似乎符合我的要求,但我仍然不完全相信,这种方式将是最好的,并且在技术上是可行的。

这是我的解决方案资源管理器的样子:

  • MyCompany.MyApplication.Entities
    类库 - 项目,仅包含域(业务)对象,例如客户、地址等。这些是具有 [Serializable] - 属性的 POCO,但不包含任何其他代码。所有属性都标记为虚拟,以便类可以派生和覆盖这些属性。
  • MyCompany.MyApplication.DataAccess
    类库 - 项目,其中包含 nHibernate - 特定代码 (Sessions) 以加载、保存和删除域对象。该项目引用了实体项目和 nHibernate 库。
  • MyCompany.MyApplication.Core
    类库 - 项目,其中包含业务逻辑,通常只是映射来自 DataAccess - 项目的方法,例如 GetAllCustomers、SaveCustomer 等。
    它引用了实体项目和数据访问项目。
  • MyCompany.MyApplication.Web
    Web 应用程序 - 项目,它承载 Silverlight-client-app 和 WCF-services 以与客户端进行通信。为了向客户端公开域对象,这些类被派生,所有属性都被覆盖并用 [DataMember] - 属性标记。它引用了实体项目和核心项目。
  • MyCompandy.MyApplication.Silverlight
    Sivlerlight 3.0 - 项目,代表用户界面。它只有对 Web 项目公开的 WCF 服务的服务引用。实际的域对象是不可访问的,但自动生成的代理分类替换了它们。

  • 请告诉我,您如何看待这种架构,以及是否有任何冲突!进一步的问题:有什么办法可以避免域对象的属性是虚拟的,并且需要覆盖它们以便通过 WCF 访问它们?

    此致,
    丹尼尔·朗

    最佳答案

    丹尼尔,你不会绕过虚拟属性(property)的 nhiberante 要求。你有没有想过使用Dto的?

    关于wcf - 使用 Silverlight、WCF 和 nHibernate 的多层架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2154421/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com