А кто реально применял Managed C++?

Все, что вы хотели знать о программизме, но боялись спросить.
Аватара пользователя
Marmot
Графоман
Сообщения: 39347
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение Marmot »

2vg
Ну что тут сказать, это идеальная задача для Java : J2EE/EJB/JDBC, именно для этого это было и создано.
И это стандарт поддерживаемый Oracle, IBM, BEA, Borland, JBoss (open source) и ещё кучей других компаний.
Даже MS имеет JDBC drivers для MSSQL :-)

А то что тут предлагается будет работать только на Windows, я так понимаю ничего другого наши люди до сих пор не знают :-(
И снова изобретают велосипед, вместо того, чтобы почитать Интернет хоть немного.
Короче,imho, по эту сторону океана такой дизайн засмеют, и я буду первым...


Я не говорю что вам сразу это надо делать, ну хотя бы знать, какие альтернативы существуют!
http://java.sun.com/products/ejb/docs.html
Последний раз редактировалось Marmot 23 окт 2003, 22:20, всего редактировалось 1 раз.
Аватара пользователя
ajkj3em
Маньяк
Сообщения: 2063
Зарегистрирован: 12 ноя 2006, 06:53

Сообщение ajkj3em »

boooooooooooooooring
Аватара пользователя
Marmot
Графоман
Сообщения: 39347
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение Marmot »

drain bamage писал(а):boooooooooooooooring
Это к кому? :twisted:
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

2Marmot,
Ну что тут сказать, это идеальная задача для Java : J2EE/EJB/JDBC, именно для этого это было и создано.
И это стандарт поддерживаемый Oracle, IBM, BEA, Borland, JBoss (open source) и ещё кучей других компаний.
Даже MS имеет JDBC drivers для MSSQL
Вы не поняли, Мармот. Жаба здесь не пойдёт и ни при чём.
Контора, в которой я работаю - не программистская. Мы не будем реализовывать программную часть.
Это будут делать сторонние разработчики. Часть из этих потенциальных разработчиков понятия не имеют о жабе.
Наша цель - привлечь возможно более широкий круг разработчиков
в России.
Одни подрядчики будут писать ядро API этой трёхзвенной архитектуры.
Другие мелкие подрядчики (их большинство) будут писать
собственно клиентское ПО с использованием того самого API.

А то что тут предлагается будет работать только на Windows, я так понимаю ничего другого наши люди до сих пор не знают
Это точно - только Windows. Есть обстоятельства, по которым наша ИС
должна работать только в среде семейства Windows.

И снова изобретают велосипед, вместо того, чтобы почитать Интернет хоть немного.
Это не велосипед, а практически типичная, хорошо известная трёхзвенная архитектура. Что ж здесь непонятного или нового?
Это используют повсеместно.
Причём здесь велосипед? Как бы не работали мидлварные решения -
всё равно проектировщик API должен оговорить интерфейсы, которые
он даёт прикладному программисту (тому, кто пишет клиентское ПО).

Короче,imho, по эту сторону океана такой дизайн засмеют, и я буду первым...
А это и не предлагается для "за океана". Это будет здесь, где я живу.
Вопрос ADO.NET - здесь вообще второстепенный. В принципе
здесь второстепенно и ADO и BDE и ODBC вместе взятые, если ещё кто не понял.

Второстепенный потому, что программист, разрабатывающий
прикладное ПО будет использовать "чёрный ящик" - то API, которое ему дадут.
То, что будет стоять за API в части объектов и методов доступа к данным - это будет зависеть от разработчиков ядра мидлварного
сервера объектов доступа к данным
.

Отличие того, что мы намерены использовать от ТРАДИЦИОННОЙ
трёхзвенной архитектуры только в том, что архитектура на самом деле
будет содержать дополнительный слой ПО, расположенный
на клиентских местах. Это позволит в поледствии использовать,
например, корбу вместо дкома и обеспечит дополнительный
манёвр при решении задач модернизации.

Если честно, то я не увидел аргументов. Хотя спасибо за мнение.
Для Канады будет полезным.
Аватара пользователя
Marmot
Графоман
Сообщения: 39347
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение Marmot »

vg, я извиняюсь за грубость, но вы мне стали напоминать Lepsika :-)
vg писал(а): В ТЗ мы формулируем «что нам надо, и как нам надо». Проектировать и реализовывать эту систему будут сторонние разработчики, поскольку мы – не программисты.
Так зачем же вы скатываетесь на уровень API? Оставьте это дело специалистам.
vg писал(а): Это не велосипед, а практически типичная, хорошо известная трёхзвенная архитектура. Что ж здесь непонятного или нового?
Это используют повсеместно.
Так и я об этом-же, так-как эти API уже давно придуманы и стандартизированы, всеми, кроме MS :twisted:

vg писал(а): Отличие того, что мы намерены использовать от ТРАДИЦИОННОЙ
трёхзвенной архитектуры только в том, что архитектура на самом деле
будет содержать дополнительный слой ПО, расположенный
на клиентских местах. Это позволит в поледствии использовать,
например, корбу вместо дкома и обеспечит дополнительный
манёвр при решении задач модернизации.
Стоп, стоп, стоп, так вы собираетесь использовать DCOM/CORBA в WAN?
Yocto
Частый Гость
Сообщения: 36
Зарегистрирован: 07 окт 2003, 11:06

Сообщение Yocto »

MC++ - это просто затычка для тех случаев, когда нужно использовать предоставляемую фрэймворком логику и в то же время напрямую обращаться к функциям native API.
Хотя при большом желании на нём можно создавать что-либо сложное тоже.
За последние пару лет я встретился с уймой ситуаций, когда нужен был именно MC++.
Да, организовывать взаимодействие managed и unmanaged частей так, как было предложено (при динамической подгрузке) - технически выполнимо, но впоследстии может оказаться большой головной болью.
Мне кажется, более разумным было бы пользоваться стандартными протоколами, такими, как COM или же сетевыми транспортами напрямую. Или, уж если очень хочеться, построить совместные модули, как статически линкуемые библиотеки, что, на мой взгляд, содержит потенциальные проблемы в будущем.
Для больших проектов для межпрограммного общения можно даже использовать SOAP или raw formatters, четкое разграничение по границе функциональности может дать более выгод даже в сравнении с накладными расходами. Имеется в виду прозрачность кода, его модульность и более лёгкое масштабирование.
Vovchik
Маньяк
Сообщения: 2842
Зарегистрирован: 20 фев 2003, 09:15
Откуда: Vancouver

Какой кошмар.

Сообщение Vovchik »

Скока усилий потрачено - и на что? А не приходила в голову мысль что гораздо дешевле заказать че нить заточенное под мелкомягкий Сикуел а при переползании на Оракл просто заказть еще раз? Неа круг те же бабки будут. А сдругой стороны - да хоть ты что там напиши в заданиях как ты будешь проверять что софт работает со всеми базами - мыслимыми и немыслимыми? Тока одним способам - тесировать со всеми базами кторые есть.
Тока в России могут такой ужас придумать. Межу прочим ежели база поддерживает ANSI - то она действительно его поддерживает.Тока надо знать что в этот стандарт входит и очень аккуратно базу проектировать. И все равно где нить вылезет необходимость че нить засунуть специфическое - на сервер в хранимую процедуру.
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Сообщение папа Карло »

любая маломальски большая база затачивается под движек. чудес не бывает.... анси сиквел для конченых теоретиков :twisted:
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

Подождите, пишу. Не успеваю.
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

2Yocto,

Спасибо за реакцию. Приятно, что не перевелись ещё в Канаде
грамотные товарищи, приехавшие "от сюда".
MC++ - это просто затычка для тех случаев, когда нужно использовать предоставляемую фрэймворком логику и в то же время напрямую обращаться к функциям native API.
Хотя при большом желании на нём можно создавать что-либо сложное тоже.
За последние пару лет я встретился с уймой ситуаций, когда нужен был именно MC++.
1) О Microsofte и о С++(если Вы об этом, конечно). Я бы разделил две вещи - качество и возможности компилятора с одной стороны, и те библитотеки (качество библиотеки, её "вылизанность", совместимость с другими библиотеками) с другой.
Многое из того, что Борланд пропускает мимо ушей, MS делает более корректно. Не знаю, может это и дурной тон, и где-то пустая трата времени, но "отмоделировав" что-либо в Борланде, "релиз" я переписываю всёж в MS. Разумеется, когда это возможно.

2) Об API. Вы пишете о "напрямую обращаться к функциям native API". Я понимаю, что этого часто просто не избежать. Однако, я стараюсь
сделать такую работу один раз, например, "вылизав" соответствующие
алгоритмы и их реализацию, далее обернуть ЭТО в более высокоуровневые классы, и пользоваться в "текучке" только этими высокоуровневыми обёртками.
Постоянно и непосредственно обращаться к Win API, или к её части - на мой взгляд - дурной тон в программировании. Это касается не только тех случаев, когда программер обращается к Win API при программировании каркаса могутной архитектуры, но и более простых случаев, когда предоставляемые «стандартными» библиотеками классы, хороши, но чуть-чуть не функциональны (Как невеста – хороша, но чуть-чуть беременна).
Например, в общем-то неплохой класс MFC CDatabase (по сравнению с дубовыми сокетами борланда) не позволяет сделать совершенно тривиальную вещь - задать уровень изоляции транзакции. Для решения задачи можно, конечно, по доступному хэндлу (дескриптору) ODBC сделать это при помощи API ODBC, но проще ЭТО один раз обернуть, и затем использовать повсеместно. Т.е. вместо использования стандартных классов + стандартного API - более разумно, на мой взгляд, использовать API обёрток, типа:

Код: Выделить всё

class CI_ODBCdb: public XXXX
{
private:
CDatabase*			Database;
…
	bool				TransactionPending;
public:
        void	__stdcall	TransIsolation( LPCTSTR type );
	….
};
//---------------------------------------------------------------------------
void __stdcall CI_ODBCdb::TransIsolation( LPCTSTR type )
{
	if ( !_tcsicmp( type,_TEXT("DIRTYREAD")) )
		  SQLSetConnectAttr(Database->m_hdbc, SQL_ATTR_TXN_ISOLATION,
		  		   (SQLPOINTER) SQL_TXN_READ_UNCOMMITTED,
						    SQL_IS_INTEGER);
	else if ( !_tcsicmp( type,_TEXT("READCOMMITTED")) )
		  SQLSetConnectAttr(Database->m_hdbc, SQL_ATTR_TXN_ISOLATION,
				   (SQLPOINTER) SQL_TXN_READ_COMMITTED,
				   SQL_IS_INTEGER);
	else if ( !_tcsicmp( type,_TEXT("REPEATABLEREAD")) )
		  SQLSetConnectAttr(Database->m_hdbc, SQL_ATTR_TXN_ISOLATION,
  				   (SQLPOINTER) SQL_TXN_REPEATABLE_READ,
				    SQL_IS_INTEGER);
}
//---------------------------------------------------------------------------

Это только пример для пояснения моей мысли.
Да, организовывать взаимодействие managed и unmanaged частей так, как было предложено (при динамической подгрузке) - технически выполнимо, но впоследстии может оказаться большой головной болью.
Пока, что это и не удаётся сделать эфективно(простыми средствами). Компилятор упорно подставляет соглашения о вызовах __clrcall вместо __stdcall. По-своему он (компилятор) прав. Не удаётся сделать так, чтобы вызывающий софт мог использовать соглашения паскаль (как для ВинАпи).
Мне кажется, более разумным было бы пользоваться стандартными протоколами, такими, как COM….
Что касается COM/DCOM – это сделали. Т.е в техзадании указано, что разработчик клиентского ПО может использовать COM. При этом он должен использовать следующий минимальный «набор» интерфейсов и их методов объектов доступа к данным сервера приложений:

Код: Выделить всё

// file dcomsrvquery.idl
[
  uuid(D75D367B-D9CF-4B9A-BE7F-97A7D6A6D13B), 
  version(1.0), 
  helpstring("dcomsrvquery Data Access Library")
]
library dcomsrvquery
{
  importlib("stdole2.tlb");
  [
    uuid(A72B9B21-0782-41A2-9753-6D68CD9FDE69), 
    version(1.0), 
    helpstring("Interface for CoDatabase Object"), 
    oleautomation
  ]
 
  interface ICDatabase: IUnknown
  {
    [    propget,     id(0x00000001)    ]
    HRESULT _stdcall InTransaction([out, retval] int * Value );

    [    propget,     id(0x00000002)    ]
    HRESULT _stdcall Database([out, retval] long * Value );

    [    id(0x00000003)    ]
    HRESULT _stdcall Connection([in] BSTR connstr );

    [    id(0x00000004)    ]
    long _stdcall Open( void );

    [    id(0x00000005)    ]
    HRESULT _stdcall Close( void );

    [    id(0x00000006)    ]
    HRESULT _stdcall Delete( void );

    [    id(0x00000007)    ]
    long _stdcall StartTransaction( void );

    [    id(0x00000008)    ]
    HRESULT _stdcall Commit( void );

    [    id(0x00000009)    ]
    HRESULT _stdcall Rollback( void );

    [    id(0x0000000A)    ]
    HRESULT _stdcall TransIsolation([in] BSTR transtype );

    [    id(0x0000000B)    ]
    long _stdcall Initialize([in] BSTR type );

    [    propget,     id(0x0000000C)    ]
    HRESULT _stdcall ErrorMessage([out, retval] BSTR * Value );
  };
  [
    uuid(201111C0-F20C-4EC1-AACA-89B8308D7E94), 
    version(1.0), 
    helpstring("CoDatabase data access object")
  ]
  coclass CoDatabase
  {
    [default] interface ICDatabase;
  };


  [
    uuid(6E03F4C1-83D4-424D-9BD2-7123514FECB2), 
    version(1.0), 
    helpstring("Interface for CoQuery Object"), 
    oleautomation
  ]
   interface ICQuery: IUnknown
  {
    [    propget,     id(0x00000001)    ]
    HRESULT _stdcall IntegerField([in] BSTR fieldname, [out, retval] int * Value );
  
    [    propget,     id(0x00000002)    ]
    HRESULT _stdcall FloatField([in] BSTR fieldname, [out, retval] float * Value );

    [    propget,     id(0x00000003)    ]
    HRESULT _stdcall StringField([in] BSTR fieldname, [out, retval] BSTR * Value );
    
    [    propget,     id(0x00000004)    ]
    HRESULT _stdcall DoubleField([in] BSTR fieldname, [out, retval] double * Value );
    
    [    propget,     id(0x00000005)    ]
    HRESULT _stdcall IsEof([out, retval] int * Value );
    
    [    id(0x00000006)    ]
    long _stdcall Open([in] BSTR sqlstr );
    
    [    id(0x00000007)    ]
    HRESULT _stdcall Connection([in] BSTR constr );

    [    id(0x00000008)    ]
    long _stdcall Exec([in] BSTR sqlstr );

    [    id(0x00000009)    ]
    HRESULT _stdcall First( void );

    [    id(0x0000000A)    ]
    HRESULT _stdcall Next( void );

    [    id(0x0000000B)    ]
    HRESULT _stdcall Close( void );

    [    id(0x0000000C)    ]
    HRESULT _stdcall FreeConnections( void );

    [    id(0x0000000D)    ]
    HRESULT _stdcall Delete( void );

    [    id(0x0000000E)    ]
    long _stdcall Initialize([in] BSTR type );

    [    id(0x0000000F)    ]
    HRESULT _stdcall Database([in] long db );

    [    propget,     id(0x00000010)    ]
    HRESULT _stdcall ErrorMessage([out, retval] BSTR * Value );

  };
  [
    uuid(1016FEAD-C5C2-44A1-B150-B9572F0FD7FA), 
    version(1.0), 
    helpstring("CoQuery")
  ]
  coclass CoQuery
  {
    [default] interface ICQuery;
  };
}; 
// end of file dcomsrvquery.idl
Это минимальный набор объектов, интерфейсов их методов и пропертей. Самое главное в том, что если разработчик клиентского ПО сочтёт, что существующий функционал недостаточный, то он будет согласовывать это с разработчиками ядра СЕРВЕРА ПРИЛОЖЕНИЙ. Т.е того, что составляет ПО промежуточного слоя. Мне чего-то сильно показалось, что некоторые товарищи не очень ориентируются, что такое «трёхзвенная архитектура» и middleware-решения. Поскольку и они тоже будут читать мой пост, то выглядит это так:

Клиентское ПО (запрос к серверу приложений) -> Сервер приложений (запрос к RDBMS) -> RDBMS.

Т.е. при использовании такой архитектуры клиентов разных типов может быть и сто, а сервер приложений и его API – один. Поэтому при решении задач модернизации и масштабирования придётся перекомпилировать только один СЕРВЕР ПРИЛОЖЕНИЙ, а не всех клиентов. Этого, как раз твои заокеанские коллеги и «недошурупили». Хотя это обычная архитектура, которая используется повсеместно в сколь-нибудь серьёзных дорогостоящих информационных системах.
….или же сетевыми транспортами напрямую….
Да, это интересно, но только мне. Подрядчиками (и ядра middleware сервера приложений и собственно клиентского ПО для конечного пользователя) будут Российские фирмы. Профессиональных и клеаренс фирм-разработчиков, доступных из нашего региона не так много. То барахло, что есть постоянно под рукой понятия не имеет о программировании серверов с использованием сокетов или MSRPC. Если честно сказать, то мой личный (очень и очень небольшой в RPC) опыт программирования даже простейших задач показывает, что программирование MSRPC напрямую может быть очень тяжёлой задачей для здешних программеров. А ведь в этом случае ещё и протокол прикладного уровня надо будет разрабатывать (между клиентским ПО и сервером приложений).

Или, уж если очень хочеться, построить совместные модули, как статически линкуемые библиотеки, что, на мой взгляд, содержит потенциальные проблемы в будущем.
Об этом не может быть и речи. Только позднее связывание. Иначе всё теряет смысл.
Для больших проектов для межпрограммного общения можно даже использовать SOAP или raw formatters, четкое разграничение по границе функциональности может дать более выгод даже в сравнении с накладными расходами. Имеется в виду прозрачность кода, его модульность и более лёгкое масштабирование.
Опять-таки, это очень интересно лично для меня. Но это можно «доводить» до уровня пожеланий в техзадании только тогда, когда сам разберусь досконально, и когда нашинские программеры до этого вырастут. Сейчас это поставило бы под удар проект, привело бы к его затягиванию. В общем, рискованно пока, как и в случае создания серверов «с нуля» с использованием сокетов или RPC (см.выше).

PS.
Та «трёхзвенная» архитектура, о которой я постил – это хорошо знакомо всем.
Ну, а если кто из профи не владеет – подскажем.;)) Поэтому и ставка сделана на middleware-ное решение.
Вместе с техзаданием мы распространяем CD-диск и примерами написания клиентского и серверного ПО.
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

2 Vovchik,
Скока усилий потрачено - и на что?
1) Сколько усилий? Вы знаете сколько я потратил усилий? Или Вы Кашпировский? Всё ведь зависит от уровня, опыта, наличия «домашних заготовок» программера. Я написал три варианта этого API – хотите верьте, хотите нет - за месяц с небольшим. У меня больше времени не было. В Канаду надо. Конечно, до этого были всяческие сыроватые заготовки, которые я использую сам в своих проектах.
Хотя Вы правы здесь в том, что некоторые усилия мне пришлось потратить для обсуждения с некоторыми Российскими программерами. Сложность была в том, что я «мальчик» в программировании по сравнению с этими людьми. Интеллект разный, и мне иногда было тяжеловато обсуждать некоторые технические детали, в которых я недостаточно компетентен.


2) Теперь о том, уважаемый Вова, «на что?».

Существует два типа руководителей. Первые говорят:”Разработай мне ПО промежуточного слоя- сервер приложений”. При этом сами они ничего не умеют и не знают. Не знают, что в некоторых обстоятельствах, то что они просят – не реализуемо. или реализуемо с большим трудом. Из-за таких технически неграмотных руководителей все проблемы в России.

Существует другой тип руководителей. Эти деятели пропускают всё через себя, через свои руки. Поэтому, когда они просят что-нибудь разработать, они представляют, сколько это займёт времени, сколько это будит стоить. Другими словами, владея техническими аспектами проблемы, они не платят миллион там, где можно заплатить рубль.

3) Без труда, как известно, не попадёшь в Канаду.
А не приходила в голову мысль что гораздо дешевле заказать че нить заточенное под мелкомягкий Сикуел а при переползании на Оракл просто заказть еще раз? Неа круг те же бабки будут.
Нет, Володя, не приходила. Наша контора, конечно, покупает, а не ворует софт. Уже сегодня уложили около 50000 зелёных (общесистемный и прикладной софт американских компаний). Перезаказывать за большие деньги ещё и это – Родина мне не простит (да и я сам себе).

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

1) В принципе невозможно разработать «универсальные» ИС, которые будут работать со всеми базами, как Вы пишите «со всеми базами - мыслимыми и немыслимыми». Думаю, здесь не требуется пояснений.

2) Тестировать ничего не надо. Прикладные программисты клиентского ПО стаями будут работать только с нашим «стандартным, ведомственным» API. Это API – интерфейс с ПО промежуточного слоя. Как там что работает не должно интересовать прикладного программиста вовсе. Про какие-то сервера баз данных он и знать-то не будет. Если возникнет задача модернизации или масштабирования, то все изменения будут внесены только в одно звено – в middleware-сервер приложений. При этом интерфейсы этого API для существующих клиентов будут сохранены. Новый функционал (для новых клиентов) будет введён только за счёт введения новых интерфейсов.
Этож элементарно, Ватсон.

Тока в России могут такой ужас придумать.
Middleware придумали не в России, Володя, и давно.
Но, как видно, сие изобретение «не дошло» до некоторых развитых стран.
Межу прочим ежели база поддерживает ANSI - то она действительно его поддерживает.Тока надо знать что в этот стандарт входит и очень аккуратно базу проектировать. И все равно где нить вылезет необходимость че нить засунуть специфическое - на сервер в хранимую процедуру.
Про должна-недолжна, Вова, это от Вашей неопытности. Я ничего обидного здесь не говорю. Я не говорю, что Вы необразованный, или некомпетентный человек. Однако, опыт – это то когда попробовал несколько RDBMS и увидел, что есть на самом деле.
Поскольку я довольно резко выразился в Ваш адрес, и для того, чтобы не быть голословным, предлагаю Вам поэкспериментировать с простыми «стандартными» скалярными функциями SQL cast, convert, ucase, upper для различных RDBMS. Тогда и поговорим. Я уже высказался (мой пост выше). Вы расскажете, когда попробуете.
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

2Marmot,
vg, я извиняюсь за грубость,
Раз Вы просите изинить, то не могу этого не сделать. :lol: Хотя, если честно, то грубости я не увидел с Вашей стороны. Серьёзно.
но вы мне стали напоминать Lepsika
Лично я с уважением отношусь к Лепсику. Он знает много того, чего я не знаю.
Так зачем же вы скатываетесь на уровень API? Оставьте это дело специалистам.
Посмотрите мой пост Володе. Я там писал. Ну не могу я что-либо заявлять, да ещё в техзадании, если не пощупаю всё руками. Да это и не сложно, на самом деле. Честно говорю. Это не рисовка. Ну, и кроме того, Вы упустили из виду, что то API, которое мы отдаём подрядчикам вместе с его исходниками – это работающая, но модель. Если из них найдутся талантливые, и они предложат более эффективную и надёжную реализацию этого API – ну и флаг им в руки. Мы только рады будет. Заплатим за дополнительные изыски (если они будут того стоить). И ещё Вы упустили из виду то, что API ядра сервера будут писать подрядчики-профи.

Сухой остаток. На мой взгляд, Вы не поняли во всём этом две вещи:

1) Интерфейсы API будут жёстко заданы разработчиками ядра API (жёстко на столько на сколько это обычно делается при разработке API). Это даст при решении задач модернизации и масштабирования перепроектировать и пересобирать одно и только одно звено ИС – middleware сервер приложений. Это не сложно. Это может сделать программер сравнительно невысокой квалификации, как я. Изменений килотонного клиентского софта, как правило, не требуется вовсе.

2) Поскольку я сделал модель этого API в разных позах, сделал быстро без больших расходов, а мои товарищи и коллеги видели, как это делалось, сколько затрат, какие проблемы возникают –
то никто не будет платить в нашей конторе миллион подрядчикам, когда это стоит копейки. Траты будут, конечно, большие. Но связано это будет с большим числом клиентских задач, а не их сложностью.
Так и я об этом-же, так-как эти API уже давно придуманы и стандартизированы, всеми, кроме MS
Я уже говорил, что есть обстоятельства, по которым Windows-фореве. Один из аргументов – огромные деньги (для России), которые уже заплачены за софт для Windows.
Стоп, стоп, стоп, так вы собираетесь использовать DCOM/CORBA в WAN?
1) не говорите того, что я не говорил про WAN. Пока только LAN.

2) про WAN – у нас другое. Но классное. Как мне кажется.
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

2Папа Карло.
любая маломальски большая база затачивается под движек. чудес не бывает.... анси сиквел для конченых теоретиков

Молодец. Сразу видно – человек работает, а не просто теоретик, который «как орёл парит над технологиями».
Аватара пользователя
Marmot
Графоман
Сообщения: 39347
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение Marmot »

vg, остыньте, Вас несёт, не туда, похоже, сказывается отсутствие кругозора ...
Кроме того вы упорствуете в своём нежелании поверить, что существуют альтернативные решения.
И по-моему только из-за того, что Вы кроме хорошо вам знакомого VС++/COM так ничего и не попытались проанализировать.
Это подход юнца, а не профессионала!

А теперь по делу.
Я бы это сделал так:
1. Хороший J2EE server (Weblogic самое то), всё это на Винде идёт только так
все приличные серваки уже заточены под все основные DBs через CMP/ EB-QL (EB-QL это объектное обобщение SQL-a)
2. Entity beans, генерятстся за полчаса, прямо из таблиц, у всех vendors это уже давно есть.
3. Заворачиваем всё это в session facade
4. Session bean выставляем через SOAP/WSDL(Webservices), у всех vendors это всё автоматизировано
5. Дергаем это дело с какого угодно языка/платформы

Скелет мiddle tier-а создаётся (не пишется, генерится) в течении недели
Программисты пишут только бизнес слой в session facade
Всю остальную грязную работу берёт на себя appserver, в том числе адаптацию к конкретной DB.
Аватара пользователя
Marmot
Графоман
Сообщения: 39347
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение Marmot »

vg писал(а):2Папа Карло.
любая маломальски большая база затачивается под движек. чудес не бывает.... анси сиквел для конченых теоретиков

Молодец. Сразу видно – человек работает, а не просто теоретик, который «как орёл парит над технологиями».
Папа ничего, кроме маленького мирка созданного Великим Билли, не видел :-)
C'mon vg, Вы же разумный человек, смотрите на мир шире, почитайте Интернет :-)
Закрыто