Есть ли любые альтернативные платформы лесов Asp. Сетевые Динамические Данные?

Я использовал бы popen () (++ waqas) .

, Но иногда Вам нужны чтение и запись...

кажется, что никто не делает вещи твердый путь больше.

(Принятие среды Unix/Linux/Mac или возможно Windows со слоем совместимости POSIX...)

enum PIPE_FILE_DESCRIPTERS
{
  READ_FD  = 0,
  WRITE_FD = 1
};

enum CONSTANTS
{
  BUFFER_SIZE = 100
};

int
main()
{
  int       parentToChild[2];
  int       childToParent[2];
  pid_t     pid;
  string    dataReadFromChild;
  char      buffer[BUFFER_SIZE + 1];
  ssize_t   readResult;
  int       status;

  ASSERT_IS(0, pipe(parentToChild));
  ASSERT_IS(0, pipe(childToParent));

  switch (pid = fork())
  {
    case -1:
      FAIL("Fork failed");
      exit(-1);

    case 0: /* Child */
      ASSERT_NOT(-1, dup2(parentToChild[READ_FD], STDIN_FILENO));
      ASSERT_NOT(-1, dup2(childToParent[WRITE_FD], STDOUT_FILENO));
      ASSERT_NOT(-1, dup2(childToParent[WRITE_FD], STDERR_FILENO));
      ASSERT_IS(0, close(parentToChild [WRITE_FD]));
      ASSERT_IS(0, close(childToParent [READ_FD]));

      /*     file, arg0, arg1,  arg2 */
      execlp("ls", "ls", "-al", "--color");

      FAIL("This line should never be reached!!!");
      exit(-1);

    default: /* Parent */
      cout << "Child " << pid << " process running..." << endl;

      ASSERT_IS(0, close(parentToChild [READ_FD]));
      ASSERT_IS(0, close(childToParent [WRITE_FD]));

      while (true)
      {
        switch (readResult = read(childToParent[READ_FD],
                                  buffer, BUFFER_SIZE))
        {
          case 0: /* End-of-File, or non-blocking read. */
            cout << "End of file reached..."         << endl
                 << "Data received was ("
                 << dataReadFromChild.size() << "): " << endl
                 << dataReadFromChild                << endl;

            ASSERT_IS(pid, waitpid(pid, & status, 0));

            cout << endl
                 << "Child exit staus is:  " << WEXITSTATUS(status) << endl
                 << endl;

            exit(0);


          case -1:
            if ((errno == EINTR) || (errno == EAGAIN))
            {
              errno = 0;
              break;
            }
            else
            {
              FAIL("read() failed");
              exit(-1);
            }

          default:
            dataReadFromChild . append(buffer, readResult);
            break;
        }
      } /* while (true) */
  } /* switch (pid = fork())*/
}
<час>

Вы также могли бы хотеть играть вокруг с выбором () и неблокирующиеся чтения.

fd_set          readfds;
struct timeval  timeout;

timeout.tv_sec  = 0;    /* Seconds */
timeout.tv_usec = 1000; /* Microseconds */

FD_ZERO(&readfds);
FD_SET(childToParent[READ_FD], &readfds);

switch (select (1 + childToParent[READ_FD], &readfds, (fd_set*)NULL, (fd_set*)NULL, & timeout))
{
  case 0: /* Timeout expired */
    break;

  case -1:
    if ((errno == EINTR) || (errno == EAGAIN))
    {
      errno = 0;
      break;
    }
    else
    {
      FAIL("Select() Failed");
      exit(-1);
    }

  case 1:  /* We have input */
    readResult = read(childToParent[READ_FD], buffer, BUFFER_SIZE);
    // However you want to handle it...
    break;

  default:
    FAIL("How did we see input on more than one file descriptor?");
    exit(-1);
}
8
задан Breadtruck 24 August 2009 в 05:51
поделиться

4 ответа

Castle MonoRails :) Для ближайшей функции динамических данных asp.net, такой как инструмент / фреймворк, или я должен сказать, что это наоборот, поскольку MonoRail отсутствовал до DD.

http://www.castleproject.org/monorail/

MonoRail был вдохновлен Ruby on Rails, и это то, чем вдохновлен DD.

EDIT:

Я тоже искал, но не знаю любые другие DD-подобные решения, которые также поддерживают L2S / EF. Фактически, я не нашел никаких других DD-подобных решений на этот счет, кроме MonoRail с ActiveRecord.

Castle MonoRail использует ActiveRecord, который использует NHibernate. Хотя NHibernate не является L2S или EF, это ORM, и, по мнению большинства (возможно, всех), на данный момент он более зрелый. Активная запись ' Реализация s делает большую часть тяжелой работы за вас из того, что я читал, поэтому она предоставит вам лучшую альтернативу решению, подобному DD.

Я думаю, что это самое близкое к этому моменту, если вы не хотите использовать DD.

4
ответ дан 5 December 2019 в 23:16
поделиться

Древовидные таблицы со ссылками на себя трудно обрабатывать, несмотря ни на что.

Если вы ищете ORM, я настоятельно рекомендую LLBLGen. Если вы ищете «фреймворк», я бы сказал вам: ASP.NET - это фреймворк :) Используйте его по назначению, и жизнь будет неплохой.

0
ответ дан 5 December 2019 в 23:16
поделиться

Древовидные таблицы со ссылками на себя трудно обрабатывать, несмотря ни на что. Это даже стоит того, когда у вас могут быть графы, например, у узла может быть более одного родителя. Затем вы должны подумать, можно ли иметь циклы.

Поэтому я думаю, что вам понадобится пользовательский FieldTemplates или пользовательский PageTemplates .

Таким образом, вы можете использовать настраиваемый элемент управления для древовидных отношений с саморегулированием, но использовать стандартные динамические данные для создания форм для всех простых полей. Или создайте "рукописную" страницу для редактирования дерева, а затем сделайте ссылку на динамические данные для редактирования простых полей на каждом узле.

Извините, я не думаю, что у вас будет готовое решение, так как нужный вам пользовательский интерфейс настолько зависит от домена вашего приложения.

1
ответ дан 5 December 2019 в 23:16
поделиться

SubSonic 3.0 имеет Scaffolding для ASP.Net, но я не уверен, что это касается фильтрации и сортировки ...

0
ответ дан 5 December 2019 в 23:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: