Tag: 架构

ResX文件和额外的应用程序层

我们正在使用一些大的asp.net web工具包制作一个Web应用程序。 最初,我们创建了许多基类,例如命令和服务器控件,以使我们的工作更轻松。 现在,当我们使用这个构建我们的应用程序时,我们决定再生一个。 为了不复制我们所有的工作,而不是从头开始,我们决定将我们的服务器控件,命令和所有基础clases从asp.net项目中分离出来并将其封装在另一个可重用的项目中…… 现在我们遇到了一个大问题,因为其中许多类都使用附加到aur asp.net应用程序的RESX文件作为App_GlobalResources …我们应该把它们放在哪里,或者我们如何在两个项目中使用它们仍然可用有一个很好的应用架构?

使用抽象复杂类型为模式生成类

我正在使用一些定义抽象复杂类型的模式,例如。 然后,此类型由模式中的另一个复杂类型引用: 当我运行“xsd.exe / d / l:CS MySchema.xsd”时,我收到此错误: 错误:处理MySchema.xsd’时出错。 – 为DataSet”生成代码时出错。 – 无法将输入xml文件内容转换为DataSet。 DataSet无法为节点Data实例化抽象ComplexType。 – DataSet无法为节点Data实例化抽象ComplexType。 它似乎不是无效的架构。 还有其他人遇到过这个问题吗? 谢谢 缺口

如何防止或拦截对Directory.Delete的调用(path,true)

最近我正在调试一个“poof-all-customer-data-is-gone”问题。 它没有花太多时间来弄清楚错误的分支导致了Directory.Delete(customerRoot, true)代码行。 灾难性的一行是由一个常规的GUI开发人员编写的。 没有多少线可以导致这样的灾难。 所以我的问题是如何防止这个特定的电话。 ( DirectoryInfo.Delete()是第二个)。 这是我可能的解决方案的优先列表 编译错误,没有第三方改变构建过程 没有第三方的运行时拦截 与第三方的运行时拦截(不改变构建过程) 与第三方编译错误(我想PostSharp会这样做) GUI开发人员关于客户如何喜欢他们数据的教育研讨会 还有其他想法吗? 我将提到我们的系统有一个专用服务(validation和记录)文件/文件夹删除。

.NET应用程序是否有最大数量的程序集?

相当多的应用程序支持插件。 拥有大量插件有什么缺点吗? 是否存在一个可能性能下降的最佳点? 您在应用中看到的最大assembly数量是多少?

WPF / EntityFramework上下文生命周期

问题 我们目前在WPF应用程序上遇到架构问题。 它涉及EntityFramework上下文管理,它实例化一次并在应用程序的整个生命周期中使用。 因此,我们最终会遇到缓存问题,实体在加载一次时不会更新。 使用该应用程序时,我们的实体已过时。 技术规格 Wpf项目 .Net Framework 4客户端配置文件 MEF(包含在Framework 4.0 System.ComponentModel.Composition中) 设计模式MVVM 多用户应用程序 建筑 这是当前架构的架构。 服务层 管理对业务规则的调用(业务层) 业务规则完成后保存上下文(通过UnitOfWork) 只能由ViewModel调用 业务层 定义业务规则 只能由服务层调用 存储库层 执行更改上下文数据的方法(插入,更新,删除) inheritanceReadOnlyRepository 只能由业务层调用 ReadOnlyRepository图层 返回数据的执行方法(选择) 可以随处调用(ViewModel,服务层,业务层) 的UnitOfWork 管理上下文实例化 保存上下文 上下文仅适用于存储库 码 视图模型 [Export(typeof(OrderViewModel))] [PartCreationPolicy(CreationPolicy.NonShared)] public class OrderViewModel : ViewModelBase { private readonly IOrderManagementService _orderManagementService; private readonly IOrderReadOnlyRepository _orderReadOnlyRepository; [ImportingConstructor] public […]

使用一个页面在ASP.NET中添加和编辑项目

我不认为这个问题很清楚。 我的系统中只有19种类型的物品。 我有19个页面,每个允许我添加一个特定类型的新项目。 “添加新项目”页面和“编辑现有项目”页面彼此非常相似。我需要的是隐藏/显示几个控件。 所以我认为我会使用QueryString来定义我们将如何使用页面,如果是新的则一切都将保持不变,如果它用于“编辑”,那么我将更改几个标签的文本属性并显示一些额外的TextBoxes和DropDownLists。 我可以通过几种方式做到这一点,但这将是一团糟。 我希望有人可以提出一种方法来保持我的良好设计和架构。 谢谢你的时间=)

API设计:公开XML或对象#2

我最近问了这个问题: 暴露XML或对象 – 感谢所有回复。 有一点需要澄清。 API将始终远程访问(即作为服务),最有可能通过Web服务或WCF访问。 我同意理论上一个强类型API将对象暴露为输入/输出是正确的方法。 但是,我觉得仍有一个论据要暴露XML。 我认为使用XML的原因是: 业务规则可以由Schematron的业务分析师编写。 接口是弱类型的,但只要它被调用,就可以根据数据和业务规则validation数据。 该服务的实现将更简单。 不需要创建域对象模型。 XML模式已经定义(我们有一个模式的数据字典)。 使用Web服务技术意味着基于XML的API不需要随着新车“类型”的添加而改变,例如 void AddNewCar( string newCarXml ) string[] GetCars( /* some query conditions */ ) 如果我们使用基于对象的API,那么添加新类型将需要一个新的查询方法来定义可以返回的可能的派生类型(请参阅扩展Web服务 )。 像这样更新Web服务需要重建和重新部署此服务和所有现有客户端。 基于对象的API给我们带来了什么? 强类型声明性接口。 它不提供比XML更多的抽象(XML本身就是一个抽象)。 基于对象的API的成本是多少? 它需要一整套域对象,这些对象需要业务规则和数据validation。 那么,我的问题是什么? 给我一个不可失败的,无可争议的理由,为什么我应该与对象一起去。

如何解决此代码重复+添加另一种方法

我有3个class: class First { public void SetA(){ … } public void SetB(){ … } public void SetC(){ … } public void SetD(){ … } public void SetZ(){ … } } class Second { public void SetC(){ … } public void SetD(){ … } public void SetE(){ … } public void SetF(){ … } public void […]

将DTO传递给我的ViewModels构造函数以映射属性

在我的解决方案中,我有两个项目。 项目1(核心)使用Dapper将SQL映射到DTO 项目2(WebUI – ASP.NET MVC 4)这里我使用每个View的ViewModel。 控制器的示例 [HttpGet] public ActionResult Edit(int id) { // Get my ProductDto in Core var product = Using().Single(id); var vm = new ProductFormModel(product); return View(vm); } ViewModel的示例 public class ProductFormModel : BaseViewModel, ICreateProductCommand { public int ProductId { get; set; } public int ProductGroupId { get; set; } public […]

在面向服务的体系结构中为服务调用定义方法签名的最佳实践是什么?

在面向服务的体系结构中开发应用程序时,定义服务调用原型/签名的最佳实践是什么。 例如,我想创建服务调用以发送电子邮件。 假设我的域层中有以下对象 [datacontract] public class Email { public string To { get; set; } public string From { get; set; } public string Message { get; set; } public string Subject { get; set; } //I am not going to use this properties in send email method public string OtherProp1 {get; set;} public string […]