小编Jak*_*lås的帖子

如何在xsd中验证空字符串值标记

我有一个xml文件,它有一些日期值和其他数据类型.

<Purchasedate Name="purcaseDate" value=""/>
Run Code Online (Sandbox Code Playgroud)

我正在使用xsd文件验证这些xml文件.在xsd shcema中,我为dd/mm/yyyy格式编写了正则表达式模式.

如果value属性具有值,则此工作正常.我的模式正在验证value属性.

字段(purchasedate)不是必需的.如果value ="",这意味着我的模式也在验证空字符串,这不是强制性的.

我需要验证可选字段,我<xs:attribute name="PurchaseDate" use="optional">也在使用.

当值标记不为空时,我需要验证此字段.

xsd

6
推荐指数
2
解决办法
2万
查看次数

将XML用作小型C#应用程序的数据持久性会有什么好处?

我需要一些关于将XML用作小型C#应用程序的数据持久性的好方法.这是一个独立的应用程序,用户不共享相同的数据持久性,因此,文件访问是独占的.这就是我首先想到XML的原因.

我知道我的设计模式,所以如果我编写通常的图层,我可以隔离持久性,然后在需要时更改它.然后,它是一个小应用程序,所以我需要快速写它.

我应该只使用Linq来实现XML并克服它吗?如果是这样,如果我决定用嵌入式数据库替换XML,那么我的重写工作会是什么?Linq在写入XML文件时的表现如何?

但如果我不跟Linq一起去,你们会建议什么?

更新

通过我得到的评论,我可能需要指出一点.这是一个供教师使用的成绩单应用程序.这些是我的主要实体:

  • 学生
  • 课程
  • 老师(应该只有一个,但我会因为未来的整合可能性而存储它)
  • 成绩(学生每门课程可以有多个成绩)

现在有些问题:

  • 在幕后,我应该每个实体有一个XML文件吗?
  • 在幕后,我应该使用Linq到XML吗?还有什么东西可以考虑吗?

还有一些评论

  • 我知道我应该IEnumerable<MyEntity>在输入和输出上使用"持久化类实例" .这给了我灵活性.
  • 虽然我对建议很开放,但我真的不想考虑立即嵌入数据库.这个小应用程序是一个令人兴奋的机会,可以开始工作并在生产中尝试新事物(不仅仅是测试)而且风险很小.

.net c# xml linq

6
推荐指数
1
解决办法
771
查看次数

删除字符串中的空格

嘿伙计们,我有这样的字符串

"This_ ___is_a_ _string."

,我想把所有的多个空格都变成一个.C#中是否有任何可以执行此操作的功能?

谢谢

.net c# string

6
推荐指数
2
解决办法
3234
查看次数

用于构建分布式系统的数据收集和监视的中间件

我目前正在寻找一个好的中间件来构建一个监控和维护系统的解决方案.我们的任务是监控,收集数据并维护一个由多达10,000个单独节点组成的分布式系统.

系统聚集成5-20个节点的组.每个组通过处理传入的传感器数据来生成数据(作为一个团队).每个组都有一个专用节点(蓝色框),充当该组的外观/代理,将数据和状态从组暴露给外部世界.这些集群在地理上是分开的,可以通过不同的网络连接到外部世界(一个可以通过光纤运行,另一个通过3G /卫星运行).我们可能会遇到更短(秒/分钟)和更长(小时)停机.数据由本地每个群集保留.

这些数据需要由外部和中央服务器(绿色框)收集(连续可靠),以便进一步处理,分析和查看各种客户(橙色框).此外,我们需要通过每个组代理节点监视所有节点的状态.不需要直接监视每个节点,即使中间件可以支持它(处理来自~10,000个节点的心跳/状态消息)也是好的.在代理失败的情况下,可以使用其他方法来精确定位各个节点.

此外,我们需要能够与每个节点进行交互以调整设置等,但这似乎更容易解决,因为这主要是在需要时按节点手动处理.可能需要进行一些批量调整,但总体而言,它看起来像标准RPC情况(Web服务或类似情况).当然,如果中间件也可以通过一些优先级的请求/响应机制来处理这个问题.

监控

要求:

  • 1000多个节点发布/提供连续数据
  • 数据需要可靠地(以某种方式)并连续地收集到一个或多个服务器.这可能会建立在中间件之上,使用某种显式请求/响应来请求丢失数据.如果这可以由中间件自动处理,这当然是一个加号.
  • 不止一个服务器/订户需要能够连接到同一数据生产者/发布者并接收相同的数据
  • 数据速率最大范围为每组10-20个每秒
  • 消息大小范围从大约100字节到4-5千字节
  • 节点范围从嵌入式约束系统到普通的COTS Linux/Windows盒子
  • 节点一般使用C/C++,服务器和客户端一般是C++/C#
  • 节点应该(优选地)不需要安装额外的SW或服务器,即每个节点一个专用代理或额外服务是昂贵的
  • 安全性将基于消息,即不需要传输安全性

我们正在寻找一种解决方案,可以处理主要代理节点(蓝色)和服务器(绿色)之间的数据发布/轮询/下载以及从客户端(橙色)到单个节点(RPC样式)之间的通信,以便进行调整设置.

似乎有很多关于逆转情况的讨论和建议; 将数据从服务器分发到许多客户端,但是很难找到与所描述的情况相关的信息.一般的解决方案似乎是使用SNMP,Nagios,Ganglia等来监视和修改大量节点,但对我们来说棘手的部分是数据收集.

我们简要介绍了DDS,ZeroMQ,RabbitMQ(所有节点上需要的代理?),SNMP,各种监控工具,Web服务(JSON-RPC,REST /协议缓冲区)等解决方案.

那么,您是否对易于使用,强大,稳定,轻便,跨平台,跨语言的中间件(或其他)解决方案有任何建议?尽可能简单但不简单.

monitoring data-collection rabbitmq zeromq data-distribution-service

6
推荐指数
2
解决办法
1187
查看次数

WinForm上的控件在Designer中无法修改

我继承了一个以我无法撤消的方式修改过的项目.除了通过"属性"窗口之外,表单上的每个控件都不可修改,并且每个控件在通常为非可见项目(例如DataSource)保留的部分中的下方区域(见图像)中都有一个图标.如何撤消此操作并将设计器返回到可用的版本而不必全部擦除并重新开始?

控制图标

c# infragistics visual-studio winforms

6
推荐指数
1
解决办法
3766
查看次数

做出延迟的mousedown事件

我有一个datagridview,哪些单元格有一个click事件.单元格还具有以下mouseDown事件:

if (e.Button == MouseButtons.Left && e.Clicks == 1)
{
    string[] filesToDrag = 
    {
        "c:/install.log"
    };

    gridOperations.DoDragDrop(new DataObject(DataFormats.FileDrop, filesToDrag), DragDropEffects.Copy);
}
Run Code Online (Sandbox Code Playgroud)

每当我尝试单击一个单元格时,mousedown事件会立即触发并尝试拖动单元格.如果用户将鼠标按下1秒钟,我怎样才能使mousedown事件触发?谢谢!

c# winforms mousedown

6
推荐指数
1
解决办法
1168
查看次数

Null-coalescing out参数给出意外警告

使用此构造:

var dict = new Dictionary<int, string>();
var result = (dict?.TryGetValue(1, out var value) ?? false) ? value : "Default";
Run Code Online (Sandbox Code Playgroud)

我收到一个错误消息,说CS0165 use of unassigned local variable 'value'那不是我期望的。怎么value可能不确定?如果字典为null,则将返回内部语句false,这将使外部语句的值为false,返回Default

我在这里想念什么?只是编译器无法完全评估该语句吗?还是我搞砸了?

c# out null-coalescing

6
推荐指数
2
解决办法
298
查看次数

使用WCF在另一个CLR地址空间中执行代码并返回对象

经过一些阅读,我收集.NET Remoting是一个已弃用的API,已被WCF取代.

我正在编写一个自动化框架,并希望在本地或某些远程机器上引用类型/方法的DLL,并执行它们而不考虑它们执行的位置.

我认为Remoting是要走的路,因为我猜所有功能都是在代理对象上执行的,如果它是本地对象或远程,则无关紧要.

WCF如何执行这种操作(如果有的话)或.NET Remoting是要走的路?

或许还有其他一些我没有想到的选择?

.net c# wcf proxy remoting

5
推荐指数
1
解决办法
2467
查看次数

如何在不使用cutomunboundcolumn事件的情况下从图像路径在gridview单元格中显示图像?

我有一个网格视图,我想在其中显示其路径存储在数据库中的图像.我试过这段代码,但它只重复所有行中的一张图片.任何人都可以帮我解决这个问题吗?我不想使用customunboundcolumn事件.我的代码如下所示

 SqlCommand cmd = new SqlCommand("select * from picture", con);
        SqlDataAdapter adp = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        adp.Fill(ds);
        gridControl1.DataSource = ds.Tables[0];
        DevExpress.XtraGrid.Columns.GridColumn image = new DevExpress.XtraGrid.Columns.GridColumn();
        gridView1.Columns.Add(image);
        image.Caption = "Image";
        image.Name = "img";
        image.FieldName = "img";
        image.Visible = true;
        image.VisibleIndex = 3;
        int row = ds.Tables[0].Rows.Count;
        DevExpress.XtraGrid.Views.Base.ColumnView cgv = (DevExpress.XtraGrid.Views.Base.ColumnView)gridView1;
        DevExpress.XtraEditors.Repository.RepositoryItemImageEdit rpic = new DevExpress.XtraEditors.Repository.RepositoryItemImageEdit();
        rpic.NullText = "No Image";
        rpic.SizeMode = DevExpress.XtraEditors.Controls.PictureSizeMode.Zoom;
        DevExpress.Utils.ImageCollection images = new DevExpress.Utils.ImageCollection();
        for (int i = 0; i < row; i++)
        { …
Run Code Online (Sandbox Code Playgroud)

.net devexpress winforms gridcontrol

5
推荐指数
1
解决办法
1万
查看次数

C#多线程

我有C#多线程的问题.
表格内容是两个按钮和两个标签.

如果我按下第一个按钮,从1..00到60000循环,更新label1.(它的工作原理)

如果我按下第二个按钮,从1..6到6000循环更新label2,(我的表格滞后).(没有回应)
请帮忙!

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace ThreadTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            Thread thread = new Thread(new ThreadStart(countNumbers));
            thread.IsBackground = true;
            thread.Start();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Thread thread2 = new Thread(new ThreadStart(countNumbers2));
            thread2.Start();
        }

        public void countNumbers()
        {
            try
            {
                for …
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading winforms

5
推荐指数
2
解决办法
6689
查看次数