Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Программирование в среде .NET (ASP.NET,ADO.NET) на C#/VB.NET

Автор: eLLoco
Дата сообщения: 27.05.2008 10:20
Mike13x13

Цитата:
Естественно, кто знает, что такое декомпиляция и т.п., может довольно легко (учитывая, что это .Нет) узнать алгоритм шифровки/дешифровки и получить инфо аккаута


Цитата:
сделать модуль шифровки-дешифровки отдельно (например на асемблере

свои алгоритмы для шифрования используешь что ли? а как насчет наработанных и проверенных за десятилетия алгоритмов шифрования и хэширования RSA, SHA1, DSA и т.д.? Во первых они открыты, а во вторых их взлом гораздо более нереален чем дизассемблирование .NET программы и вытягивание из нее своего алгоритма.
Автор: admilo
Дата сообщения: 28.05.2008 06:36
Народ подскажите ссылочку на статью о развитии технологии .NET
Автор: Mike13x13
Дата сообщения: 28.05.2008 14:15
eLLoco

Цитата:
свои алгоритмы для шифрования используешь что ли? а как насчет наработанных и проверенных за десятилетия алгоритмов шифрования и хэширования RSA, SHA1, DSA и т.д.? Во первых они открыты, а во вторых их взлом гораздо более нереален чем дизассемблирование .NET программы и вытягивание из нее своего алгоритма.

Как говорится, на вкус и цвет товарища нет . Я действительно использую часто свои алгориты. Пока взломов не было (По-моему, не через то, чот алгоритмы жутко хитрые, просто это никому нах не нужно ) А вообще говоря, выбор нужно делать, исходя из конкретной ситуации с ее обстоятельствами. Использование
Цитата:
наработанных и проверенных за десятилетия алгоритмов
далеко не всегда оправдано.
Автор: DinDim
Дата сообщения: 28.05.2008 23:24
Здравствуйте, никак не могу понять где в концепции NET скрыто звено application server. Как с ним работать и с чего нужно начинать разработку трехзвенной архитеркуты (база + сервер приложений+клиент). Раньше писалось отделбное приложение COM сервер, которое экспортировало функции и кластеризировалось при увеличении нагрузки. А вот как теперь в новой концепции происходит балансировка, не понятно.

Буду очень признанелен за разьяснения, спасибо.

Автор: eLLoco
Дата сообщения: 29.05.2008 10:20
Можно также использовать COM+ с .NET, ищи информацию по System.EnterpriseServices. Но это принято считать устаревающей технологией (deprecated), по крайней мере так пишут в книжках по .NET.

Поэтому ищи лучше информацию по .NET Remoting (в сети есть отличная книга, посвященная полностью этой теме, она вроде так и называется, "Microsoft.NET Remoting"):


Цитата:

The .NET base class libraries shipped with the .NET remoting layer, represented by
the System.Runtime.Remoting namespaces. This API allows multiple computers to distribute
objects, provided they are all running the applications under the .NET platform.
The .NET remoting APIs provided a number of very useful features. Most important was the
use of XML-based configuration files to declaratively define the underlying plumbing used by the
client and the server software. Using *.config files, it was very simple to radically alter the functionality of your distributed system simply by changing the content of the configuration files and restarting the application.
As well, given the fact that this API is useable only by .NET applications, you can gain various
performance benefits, as data can be encoded in a compact binary format, and you can make use of the Common Type System (CTS) when defining parameters and return values. While it is possible to make use of .NET remoting to build distributed systems that span multiple operating systems (via Mono, briefly mentioned in Chapter 1 and detailed in Appendix B), interoperability between other programming architectures (such as J2EE) was still not directly possible.


После выхода в свет .NET 3.0 (или может 3.5), появилось еще более рекомендуемое Microsoft решение для распределенных приложений - WCF (Windows Communication Foundation):


Цитата:

WCF is a distributed computing toolkit introduced with .NET 3.0 that integrates these previous
independent distributed technologies into a streamlined API represented primarily via the System.ServiceModel namespace. Using WCF, you are able to expose services to callers using a wide variety of techniques. For example, if you are building an in-house application where all connected
machines are Windows based, you can make use of various TCP protocols to ensure the fastest
possible performance. This same service can also be exposed using the XML web service–based protocol to allow external callers to leverage its functionality regardless of the programming language or operating system.
Given the fact that WCF allows you to pick the correct protocol for the job (using a common
programming model), you will find that it becomes quite easy to plug and play the underlying
plumbing of your distributed application. In most cases, you can do so without being required to
recompile or redeploy the client/service software, as the grungy details are often relegated to application configuration files (much like the older .NET remoting APIs).


Да, в итоге имеем holy mess, и чтобы что-то выбрать, надо провести не один день читая доки и экспериментируя. Но если делаешь трехзвенку, дело видно серьезное и можно потратиться на выбор лучшего решения. Посоветую еще книжку - Apress Pro CSharp 2008 and the .NET 3.5 Platform, Fourth Edition by Andrew Troelsen. Также можно найти в сети, все цитаты приведены из нее, кстати.
Автор: Mike13x13
Дата сообщения: 31.05.2008 16:07
penguen

Цитата:
Ребята, VB .Net работает ли с MySQL Server'om
Если работает, то как подкл. в Администр. =ODBC

Имеются MySql->ODBC коннекторы (рой на сайте Mysql, продукты сторонних производителей, кажысь). Устанавливаешь, в ODBC появляется MySql, далее работаешь по стандартной схеме.
Автор: Lihonosov
Дата сообщения: 02.06.2008 10:19
C# & Oracle9
Чет не получается программно создать таблицу в базе данных.
Может кто подскажет?
Автор: BaluBig
Дата сообщения: 02.06.2008 11:59
Lihonosov
Может и подскажет кто, если расскажешь как создаешь и какая происходит ошибка при этом.
Автор: Lihonosov
Дата сообщения: 02.06.2008 12:47
BaluBig
Точно не помню, но пробовал по-мойму так:

Код: try
{
OracleConnection myConn=new OracleConnection(stringConnection);
myConn.Open();
OracleCommand myCommand=myConn.CreateCommand("CREATE TABLE myTable (id varchar2(7) NOT NULL);");
myCommand.ExecuteNonQuery();
}
....
finally
{
myConn.Close();
}
Автор: Mike13x13
Дата сообщения: 02.06.2008 19:11
Lihonosov
Зуб не отдам (с Ораклом не работал), но, по-моему, последняя точка с запятой в строке
Цитата:
"CREATE TABLE myTable (id varchar2(7) NOT NULL);"
явно лишняя.
Кроме того, стоило бы написать что-нить типа
myCommand.Connection=myConnection;
уже после этого открыть коннект и выполнить запрос:
myConnection.Open();
myCommand.ExecuteNonQuery();
.
.
.
Автор: Lihonosov
Дата сообщения: 03.06.2008 09:34
Mike13x13
Спасибо за ответ. Буду пробовать.
Просто программно таблицы никогда не создавал, а есть идея, чтобы при первом запуске приложения программно формировалась структура базы данных (т.е. создавались все таблицы, ограничения и отношения), а потом пользователи только заполняли данными эти таблицы.
Автор: Mike13x13
Дата сообщения: 03.06.2008 11:29
Lihonosov

Цитата:
...чтобы при первом запуске приложения программно формировалась структура базы данных (т.е. создавались все таблицы, ограничения и...

Идея хорошая, только не забывай что-нить типа create .... where not exists, чтоб не было проблем при следующих запусках
Автор: eLLoco
Дата сообщения: 03.06.2008 12:11
Lihonosov
Попробуй посмотреть в сторону ORM - там не только таблицы сами создаются, там и записи сами добавляются. Для .NET есть несколько мощных мапперов, ищи в гугле ".NET ORM".
Автор: Lihonosov
Дата сообщения: 03.06.2008 13:36
Спасибо.

Mike13x13

Цитата:
create .... where not exists

Может знаете еще какие-нибудь похожие нюансы которые нужно учесть при проектировании такого рода приложения.
eLLoco
Скачал "ORM.NET-V1.7.2.35654" вечером попробую.
Автор: Lihonosov
Дата сообщения: 04.06.2008 09:42
Mike13x13
Действительно, точка с запятой была лишней.
ORM.NET-V1.7.2.35654 - мне не подошел, т.к. это под SQLServer, а не под Oracle

Добавлено:
Может кому пригодится:
Есть примеры на C# для работы с СУБД Oracle:
http://www.mono-project.com/Oracle
Автор: Mike13x13
Дата сообщения: 04.06.2008 15:26
Lihonosov

Цитата:
Может знаете еще какие-нибудь похожие нюансы ....

Ньансов бывает достаточно много, но вылезают они чаще всего уже в процессе работы. Для проектирования баз, начиная с логического уровня и заканчивая переносом на физический могу посоветовать ERwin, он работает со многими СУБД. Но, если база небольшая, ИМНО, это лишнее.
Автор: TeXpert
Дата сообщения: 04.06.2008 17:54
Такая задача: выбирается запись из основной таблицы, много полей из которой ссылаются на вторичные таблицы (справочник стран, валют и т. д.), и естественно, содержат идентификаторы. Вторичные таблицы считываю один раз, и они привязаны каждая к своему BindingSource. Проблема такая: как мне программно пробежаться по полям моей записи и автоматически определить, из какой вторичной таблицы подставить значения? То есть, я хочу сформировать (не для записи обратно в базу, а для печати, например) запись, все поля которой уже содержат значения, но не ссылки-идентификаторы на вторичные таблицы. Как понимаю, надо структуру первичной таблицы исследовать, вопрос лишь в том, как эффективнее это сделать. Я использую нетипизированный DataSet. БД -- MS SQL Server 2005

Спасибо!
Автор: Varyag_Nord
Дата сообщения: 04.06.2008 23:53
Приветствую!
Помогите пожалуйста, с решением задачи на С#, Очень надо...
Сама задача:
Тема: Создание проекта модели равнозамедленного движения двух объектов от центра по подвижному диску.
Задание: Создать систему для графической демонстрации равнозамедленного движения двух объектов от центра в противоположные стороны по подвижному диску.
Входные данные: угловая скорость вращения диска, радиус диска, скорость и ускорение движения каждого объекта.
Выходные данные: кривые, которые описывают объекты, модель движения с возможностью демонстрации сорости.

Помогите с решением плиз!!
Автор: V0lt
Дата сообщения: 05.06.2008 06:09
Varyag_Nord
выходишь на остановку рядом со свом ВУЗом и внимательно читаешь наклеенные бумажки

здесь люди делятся опытом, помогают разобраться в нюансах, ссылками меняются, врядли кто будет прямо в ветке постить весь код на твою лабу
Автор: Varyag_Nord
Дата сообщения: 05.06.2008 22:51
я не прошу постить весь, а просто помочь с решением.
еще вопросик
Как сгенерировать окружность и заставить ее вращаться?
Автор: podumai
Дата сообщения: 05.06.2008 23:14
посиди подумай.
Автор: KChernov
Дата сообщения: 06.06.2008 11:18
Varyag_Nord

Цитата:
я не прошу постить весь, а просто помочь с решением

Чтобы помочь с решением, надо чтобы это решение уже в каком-то виде было.
Будет попытка решения - можно будет обсуждать.

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


Цитата:
Как сгенерировать окружность и заставить ее вращаться?

Существует куча литературы по рисованию примитивов.
Например можно просто взять уравнение окружности в декартовой системе координат.
Вращать саму окружность смысла мало, так как это вообще говоря должно быть незаметно (она же центрально симметричная).
Если же на ней есть какой-то объект, то его и достаточно вращать (используя то же самое уравнение окружности параметризуемое углом).
Автор: Mike13x13
Дата сообщения: 06.06.2008 16:46
TeXpert

Цитата:
Такая задача: выбирается запись из основной таблицы, много полей из которой ссылаются..... Как понимаю, надо структуру первичной таблицы исследовать

Правильно понимаешь , без знания структуры базы тут что-то посоветовать сложно. Единственно, что могу сказать, если структура не слишком закручена (т.е., по по полю и значению в основной таблице сразу ясно из какой таблицы и какое значение нужно выбирать), то можно обойтись одним селектом типа
select t1.what1, ..., t2.name, t3.name from table1 t1 join
table2 t2 on t2.fieldId=t1.fieldId2 join
table3 t3 on t3.fieldId=t1.fieldId3 ...
.
.
и сразу получить все нужные значения в виде Неймов а не Id-шек
Автор: TeXpert
Дата сообщения: 06.06.2008 21:09
Mike13x13 Спасибо, я примерно такое и предполагал, но меня интересует именно подробности этого момента
Цитата:
...без знания структуры базы тут что-то посоветовать сложно
А разве так нельзя: ведь в основной таблице же прописаны в виде ключей зависимости отдельных полей, вот как это лучше организовать (перебор полей с учётом внешних ключей). Необязательно, чтобы был один оператор, важна гибкость: поля могут измениться, поэтому вручную прописывать смысла нет, да и полей много, главное они, так скажем, volatile). А по полю и значению никак нельзя с ходу определить, с какой таблицы надо брать окончательное значение, поэтому надежда только на разбор дополнительной информации
Автор: eLLoco
Дата сообщения: 06.06.2008 21:25
Mike13x13

Цитата:
Правильно понимаешь , без знания структуры базы тут что-то посоветовать сложно.

есть подозрение, что имелось ввиду программное исследование

TeXpert

Цитата:
Я использую нетипизированный DataSet.

в MSDN на статью наткнулся Navigating DataRelations (ADO.NET) в разделе Working with DataSets (ADO.NET), если у тебя отношения между таблицами настроены (а это must have), то все вроде бы просто, код из статьи:


Код:
DataRelation customerOrdersRelation =
customerOrders.Relations.Add("CustOrders",
customerOrders.Tables["Customers"].Columns["CustomerID"],
customerOrders.Tables["Orders"].Columns["CustomerID"]);

DataRelation orderDetailRelation =
customerOrders.Relations.Add("OrderDetail",
customerOrders.Tables["Orders"].Columns["OrderID"],
customerOrders.Tables["OrderDetails"].Columns["OrderID"], false);

DataRelation orderProductRelation =
customerOrders.Relations.Add("OrderProducts",
customerOrders.Tables["Products"].Columns["ProductID"],
customerOrders.Tables["OrderDetails"].Columns["ProductID"]);

foreach (DataRow custRow in customerOrders.Tables["Customers"].Rows)
{
Console.WriteLine("Customer ID: " + custRow["CustomerID"]);

foreach (DataRow orderRow in custRow.GetChildRows(customerOrdersRelation))
{
Console.WriteLine(" Order ID: " + orderRow["OrderID"]);
Console.WriteLine("\tOrder Date: " + orderRow["OrderDate"]);

foreach (DataRow detailRow in orderRow.GetChildRows(orderDetailRelation))
{
Console.WriteLine("\t Product: " +
detailRow.GetParentRow(orderProductRelation)["ProductName"]);
Console.WriteLine("\t Quantity: " + detailRow["Quantity"]);
}
}
}
Автор: TeXpert
Дата сообщения: 06.06.2008 22:12
eLLoco
Спасибо)

Цитата:
...если у тебя отношения между таблицами настроены (а это must have)
База рабочая, проектировал не я, и изменять не я буду, моя задача как раз программно выдёргивать зависимости.
Цитата:
...в твоем случае, думаю можно идти по полям DataTable из DataSet и проверять, включены ли поля в отношения, то есть явл. ли Foreign Key'ми, если да - цеплять childRow и брать нужное поле (есть подозрение, что DataSet'ы не позволят сделать запрос на выбор только одного поля из базы, хотя покопаться можно)
Да, ты задачу правильно понял, меня как раз интересуют тонкости, как делать, сам бы нашёл, но по опыту программирования знаю, всегда может выползти какой-нибудь глюк, поэтому и обратился в свой любимый форум). Думаю, целиком считать схему основной таблицы, и мочить, смысла нету по отдельным полям запросы делать.
Цитата:
...теперь непонятно как определять нужное поле . можно хранить небольшую структурку (Dictionary, скажем)
Ну, я тут собрался Hashtable присобачить
Автор: Lihonosov
Дата сообщения: 09.06.2008 15:18
Подскажите.
Есть таблица, а в ней четыре поля:
id
name
date_start
date_finish
Никак не пойму как сделать, чтобы было ограничение на вставку:
Ели в таблице уже есть строка с таким же name, то ее можно вставить только в том случае, если поле этой строки date_start отличается от существующих полей в таблицы с таким же полем name на три и более года.
(например, таблицы групп учебного заведения, есть группы:
...
1 0001 01.09.2000 30.06.2003
2 0002 01.09.2000 30.06.2003
...
такую строку вставить можно:
3 0001 01.09.2003 30.06.2006
а такую нет:
4 0001 01.09.2001 30.06.2004
Объяснил как мог
Автор: Mike13x13
Дата сообщения: 09.06.2008 19:15
Lihonosov
Я так понимаю, речь снова об Оракле? В любом случае, про Оракл точно не скажу. А в MSSQL можно использовать в таком случае триггеры или чеки. Но обратно же, я ими не пользуюсь, всегда удавалось сделать уникальный ключ. А для такого случая использовал бы программную проверку перед операцией вставки с селектом такого типа:
select 1 from table where exists (select 1 from table where (name='chek_name' and date_start<(check_date+3years) and date_start>(check_date-3years))
Можно и без exists, но в таком случае результирующий набор может быть достаточно большим.
Автор: Lihonosov
Дата сообщения: 10.06.2008 15:02
Mike13x13

Цитата:
Я так понимаю, речь снова об Оракле?

Да

Цитата:
select 1 from table where exists (select 1 from table where (name='chek_name' and date_start<(check_date+3years) and date_start>(check_date-3years))

Спасибо. Буду пробовать.
Еще вопрос.
На форме есть ComboBox и DataGridView каждый связан со своим DataSource.
ComboBox - это своего рода справочник значений.
Вешаю на DataGridView обработчик OnCellValueChanged (помоему такой):
...
if(DataGridView1.Rows.count>0)
{
ComboBox.SelectedValue=DataGridView.CurrentRow.Cell[0].Value;
}

Все нормально, при выделении строки в гриде и в комбобоксе выделяется нужное значение из грида, но если клацнуть по заголовку столбца, чтобы изменить сортировку, то программа вылетает с ошибкой:
ComboBox.SelectedValue=DataGridView.CurrentRow.Cell[0].Value; - что-то типа неправильная ссылка.
Понимаю что, что-то забыл, но что?
Автор: TeXpert
Дата сообщения: 10.06.2008 16:06
Lihonosov
Ну ясно же, заголовок -- это тоже Row, вот и отсеки

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102

Предыдущая тема: Как удалить/добавить/отключить/включить устройство?


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.