Создайте DIV, разработанный со следующими стилями. В Вашем JavaScript, устанавливает размер шрифта и атрибуты, что Вы пытаетесь измерить, поместить Вашу строку в DIV, затем считать текущую ширину и высоту DIV. Это будет простираться для установки содержанию, и размер будет в нескольких пикселях представленного размера строки.
var fontSize = 12;
var test = document.getElementById("Test");
test.style.fontSize = fontSize;
var height = (test.clientHeight + 1) + "px";
var width = (test.clientWidth + 1) + "px"
console.log(height, width);
#Test
{
position: absolute;
visibility: hidden;
height: auto;
width: auto;
white-space: nowrap; /* Thanks to Herb Caudill comment */
}
<div id="Test">
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
</div>
Хотя существует только один способ создания веб-служб в .NET с использованием технологии Microsoft, веб-службы Java очень фрагментированы. См., Например, этот вопрос. Большинство фреймворков могут выполнять веб-службы как с контрактом (запуск из файла WSDL), так и с кодом (запуск из исходного кода). У каждой платформы также есть свой способ размещения веб-службы. Платформа Axis2, например, развертывает веб-службы в виде файлов AAR внутри веб-приложения Axis2. Другие фреймворки развертывают веб-службы внутри файла WAR (Axis2 также может это делать).
Для людей, переходящих с .NET на Java, всегда сложно выбрать структуру веб-служб. Интеграция IDE также не так хороша, как с Visual Studio.
Если вы новичок в J2EE, я рекомендую взглянуть на среду Spring. Spring имеет подпроект (Spring-WS), который позволяет создавать веб-службы, ориентированные на контракт. Интеграция с базой данных и логикой приложения намного проще с помощью инфраструктуры внедрения зависимостей, такой как Spring. Apache CXF также прекрасно интегрируется со Spring.
Я никогда раньше не пробовал использовать веб-службы, но недавно. И меня поразило, насколько это просто в Java с JAX-WS.
Вот веб-сервис
@WebService
class BusinessProcess implements IBusinessProcess
{
public HelloWorldObject helloWorld()
{
return new HelloWorldObject("Earth");
}
}
И все.
Если вам нужна дополнительная логика и уровень, такие как DB Entities, это добавляется так просто, как я мог только представить, с EJB3.
Насколько я только что видел способ определения WebService в C #, большой разницы нет вообще.
[WebService(... )]
public class BusinessProcess : System.Web.Services.WebService
{
[WebMethod]
public HelloWorldObject helloWorld()
{
return new HelloWorldObject("Earth");
}
}
] Я считаю, что есть разница в дальнейшей логике.
Я бы посоветовал попробовать фреймворк Apache CXF . Я выбрал его для крупного проекта здесь, на работе, и он отлично работает! Какие преимущества это дает вам перед EJB3? Хммм ... Я не могу сказать, кроме того, что я использовал CXF, в то время как EJB3 никогда не был у меня на кухне (неясная ссылка на приветствие).
С CXF код не намного больше, чем пара аннотаций здесь и там . Он использует стандартные аннотации JAXB для маршалинга объектов. Через конфигурацию также можно разместить перехватчики до и после вызовов веб-служб, если вы хотите вести журнал и т. Д.
@WebService
public interface UserService {
public Collection<User> getUsers(@WebParam(name = "systemID") Long sysID);
}
Обратите внимание, что аннотация @WebParam
не является обязательной, но она выглядит лучше в WSDL чем такие вещи, как arg0
. Да, вместе с этим может потребоваться небольшая конфигурация XML:
<!-- the #userService is a reference to a Spring bean defined elsewhere -->
<jaxws:endpoint id="userWS" implementor="#userService"
implementorClass="com.blah.blah.blah.UserServiceImpl"
address="/UserService" />
Что касается использования веб-сервисов ... Чтение Руководства пользователя CXF даст вам представление о том, как это делается: http://cwiki.apache.org/CXF20DOC/developing-a-consumer.html