【问题标题】:Need some ideas about how to replicate a model through another path需要一些关于如何通过另一条路径复制模型的想法
【发布时间】:2011-03-23 13:47:57
【问题描述】:

所以我基本上是在这里寻找想法。我以前从来没有真正做过这样的事情,我现在有点难过。这可能是一个很长的解释,所以请耐心等待,希望你们中的一些大师可以给我一些东西。

我有两个 MVC2 应用程序。两者都在相同的代码库中运行,但它们由两个不同的 URL(控制器)访问。所以我通过去访问一个

http://localhost/Extranet/mvc/StandardDeviationCones.cfc/mobile

另一个去

http://localhost/Extranet/mvc/Indications.cfc/home

现在,第二个链接是已经开发了一段时间的应用程序。您加载主页,通过向导,到达表格,填写大量信息等,而代码一直在更新并在后台填写 Model 并使用 BUNCH 信息由您在前端选择的不同选项填充。我们构建了一个完整的事件框架,因此当您从下拉列表中选择选项或填写文本框时,Model 会以非常特定的方式更新、添加对象等。

只有在以这种精确方式填充模型之后,您才能调用我们拥有的某个 Value() 方法。我试图创建一个手动传递的对象的精确副本,除了我花了大约 6 个小时才完成的事实之外,它仍然没有价值,因为某处的某些属性没有按照应有的方式设置.有大量的事情使Model 变得如此重要,所以很容易错过一些东西。

现在,这里的目标是能够在新应用程序Mobile 上按下一个按钮,并让它在后台创建一个默认的Model 状态和Value() 它,这样我们就可以获得一个属性从结果中返回并显示在手机平台上。基本上是真实事物的令人难以置信的精简版本。问题是,即使我可以通过旧应用程序中的向导并创建对象的默认状态,我也无法手动创建它,因为它有数百个属性,而且因为它都是设置使用前端的事件框架,我真的没有办法说“自动设置这个默认模型”,然后重视它,因为所有调用都是通过登录旧应用程序并使用大量Session信息触发的打电话给他们。

显然我可以进入旧应用程序,通过向导,填写表格,然后单击“值”,然后逐步执行代码以获取值,查看传入的对象,然后基本上复制它,然后完全手动创建一个新的,逐个属性,但这似乎有点荒谬。

你们有什么想法让我能够做到这一点吗?

非常感谢!

【问题讨论】:

    标签: asp.net-mvc software-design


    【解决方案1】:

    所以基本上你有一个巨大的模型,它是通过几个步骤创建的。并且您想从不同的 mvc 应用程序中获取该模型,而无需复制硬代码。

    在这种情况下,我要调查的是如何“模拟/伪造”您的主应用程序中的步骤,然后发送此模型。

    简而言之,我只需将完成的所有步骤合并为 1 个操作,然后将其返回到您的移动应用程序。您可以使用 XML 序列化程序、JSON 或 Web 服务来执行此操作。然后,移动应用程序会向主应用程序发出请求,主应用程序有一个动作来制作这个默认模型,这在主应用程序中应该不难。

    此外,当模型发生变化时,您的应用也将保持可维护性。

    【讨论】:

    • 该请求是什么样的?我以前从未做过任何跨 mvc 应用程序的事情。此外,如果不登录并使用旧应用程序,我将无法伪造这些步骤,因为它使用大量会话信息来创建模型。
    • 我认为您应该问自己的第一件事是:您可以在主应用程序中构建默认模型吗?会不会容易很多?
    • 好吧,我们实际上在旧应用程序中确实有一个默认模型“进程”,但是,这仍然需要用户完成这些步骤并使用旧应用程序来构建它,这不可能发生直接在代码中。 (我知道设计缺陷)
    • 所以你不能扩展模型以使其可以在默认模式下自行生成吗?它不会影响其他代码。
    • 这是一篇关于在 MVC 中使用 Web 服务的好文章:stackoverflow.com/questions/573363/…
    【解决方案2】:

    听起来你继承了一些非常糟糕的代码:)

    由于两个应用都在相同的代码库中运行,如何手动创建向导中涉及的 MVC 控制器并调用必要的操作方法来为 Model 创建默认状态?

    您需要模拟一些会话和 HTTP 上下文对象,这很困难,但听起来可能比尝试直接模拟模型更容易。

    【讨论】:

      【解决方案3】:

      您可以尝试使用 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter 在向导在移动应用中反序列化模型后序列化模型。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-06-19
        • 1970-01-01
        • 1970-01-01
        • 2020-08-24
        • 1970-01-01
        • 2015-01-06
        • 1970-01-01
        相关资源
        最近更新 更多