答案 0 :(得分:6)
在花了10分钟编辑格式化问题之后,我仍然要进行投票。没有方式我将会阅读所有内容。
去拿一份
答案 1 :(得分:4)
作为一名建筑师,我已经了解到,如果第一次让事情变得绝对完美,那就太费力了,完美是主观的。重构,尤其是在程序集之间移动类,并没有太大的成本。听起来像你已经在逻辑和正确地思考问题了。在您的一些问题上,这是我的意见:
问:我的数据合同类是否应该有只读合同?
最可能的插件根本不应该知道你的数据合同。病毒检查程序可以使用字节数组,拼写检查程序使用字符串和语言环境等。如果您要为插件创建通用接口层,则应该将共享的内容与插件特定的数据隔离开来。这将允许您最大化其重用。因此,我认为你在创建数据契约结构的接口方面会得到很少的回报,这些接口应该主要是几乎没有逻辑的笨拙的数据包实际上是接口本身。
问:我应该在我的ASP.NET应用程序中使用与Silverlight应用程序相同的数据协定类,还是直接使用服务器端类?
我会使用客户端消息对象,这样您就可以从代码重用中受益。对象创建相当便宜,我确信大多数映射都是一对一的。它不是那么快,真实,但这不会成为您应用程序的瓶颈。
问:我在哪里放置我的异常类?
我会将您的示例异常类放在具有数据合同的程序集中,因为它们都是由于违反合同而提出的,或者是在履行合同时传达错误的方法。
问:例外是否有共同的基类?
我还没有这么做,但我不知道你的代码库。我的猜测是,如果有的话,它会带给你很少的东西。
修改强>
你可能会为将来过度计划。根据我的经验,采用YAGNI方法使我们能够更快地完成重要的事情。进行渐进式设计更改是首选花费宝贵的时间来构建一个您可能永远不会从中受益的复杂架构。